- update();
-}
-
-VideoContainer::VideoContainer(Monitor* parent) :
- QFrame()
- , m_monitor(parent)
-{
- setFrameShape(QFrame::NoFrame);
- setFocusPolicy(Qt::ClickFocus);
- setEnabled(false);
- setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
-}
-
-// virtual
-void VideoContainer::mouseReleaseEvent(QMouseEvent * event)
-{
- if (event->button() != Qt::RightButton) {
- if (m_monitor->isActive()) {
- m_monitor->slotPlay();
- }
- }
-}
-
-
-// virtual
-void VideoContainer::keyPressEvent(QKeyEvent *event)
-{
- // Exit fullscreen with Esc key
- if (event->key() == Qt::Key_Escape && isFullScreen()) {
- switchFullScreen();
- event->setAccepted(true);
- } else event->setAccepted(false);
-}
-
-// virtual
-void VideoContainer::wheelEvent(QWheelEvent * event)
-{
- m_monitor->slotMouseSeek(event->delta(), event->modifiers() == Qt::ControlModifier);
- event->accept();
-}
-
-void VideoContainer::mouseDoubleClickEvent(QMouseEvent * event)
-{
- if (!KdenliveSettings::openglmonitors())
- switchFullScreen();
- event->accept();
-}
-
-void VideoContainer::switchFullScreen()
-{
- // TODO: disable screensaver?
- Qt::WindowFlags flags = windowFlags();
- if (!isFullScreen()) {
- // Check if we ahave a multiple monitor setup
- setUpdatesEnabled(false);
-#if QT_VERSION >= 0x040600
- int monitors = QApplication::desktop()->screenCount();
-#else
- int monitors = QApplication::desktop()->numScreens();
-#endif
- if (monitors > 1) {
- QRect screenres;
- // Move monitor widget to the second screen (one screen for Kdenlive, the other one for the Monitor widget
- int currentScreen = QApplication::desktop()->screenNumber(this);
- if (currentScreen < monitors - 1)
- screenres = QApplication::desktop()->screenGeometry(currentScreen + 1);
- else
- screenres = QApplication::desktop()->screenGeometry(currentScreen - 1);
- move(QPoint(screenres.x(), screenres.y()));
- resize(screenres.width(), screenres.height());
- }
-
- m_baseFlags = flags & (Qt::Window | Qt::SubWindow);
- flags |= Qt::Window;
- flags ^= Qt::SubWindow;
- setWindowFlags(flags);
-#ifdef Q_WS_X11
- // This works around a bug with Compiz
- // as the window must be visible before we can set the state
- show();
- raise();
- setWindowState(windowState() | Qt::WindowFullScreen); // set
-#else
- setWindowState(windowState() | Qt::WindowFullScreen); // set
- setUpdatesEnabled(true);
- show();
-#endif
- setEnabled(true);
- } else {
- setUpdatesEnabled(false);
- flags ^= (Qt::Window | Qt::SubWindow); //clear the flags...
- flags |= m_baseFlags; //then we reset the flags (window and subwindow)
- setWindowFlags(flags);
- setWindowState(windowState() ^ Qt::WindowFullScreen); // reset
- setUpdatesEnabled(true);
- setEnabled(false);
- show();
- }
- m_monitor->pause();