vlc | branch: master | Alexander Terentyev <[email protected]> | Wed Dec 5 11:00:04 2012 +1100| [6b2d303b9274d9e03bbb52a30a1e8572a6d581fb] | committer: Jean-Baptiste Kempf
Qt: Add moving main window on any part of a window Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6b2d303b9274d9e03bbb52a30a1e8572a6d581fb --- modules/gui/qt4/main_interface.cpp | 35 +++++++++++++++++++++++++++++++++++ modules/gui/qt4/main_interface.hpp | 9 +++++++++ 2 files changed, 44 insertions(+) diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp index 730fcae..db52d71 100644 --- a/modules/gui/qt4/main_interface.cpp +++ b/modules/gui/qt4/main_interface.cpp @@ -326,6 +326,11 @@ void MainInterface::computeMinimumSize() setMinimumWidth( minWidth ); } +inline void MainInterface::moveWindow( int offsetX, int offsetY ) +{ + move( x() + offsetX, y() + offsetY ); +} + /***************************** * Main UI handling * *****************************/ @@ -1387,6 +1392,36 @@ bool MainInterface::eventFilter( QObject *obj, QEvent *event ) } } +void MainInterface::mousePressEvent( QMouseEvent *event ) +{ + b_customMoving = Qt::LeftButton == event->button(); + lastCustomMovePos = event->globalPos(); +} + +void MainInterface::mouseMoveEvent( QMouseEvent *event ) +{ + if( b_customMoving ) + { + moveWindow( + event->globalX() - lastCustomMovePos.x(), + event->globalY() - lastCustomMovePos.y() + ); + lastCustomMovePos = event->globalPos(); + } +} + +void MainInterface::mouseReleaseEvent( QMouseEvent *event ) +{ + if( b_customMoving ) + { + moveWindow( + event->globalX() - lastCustomMovePos.x(), + event->globalY() - lastCustomMovePos.y() + ); + } + b_customMoving = false; +} + void MainInterface::toolBarConfUpdated() { QApplication::postEvent( this, new QEvent( MainInterface::ToolbarsNeedRebuild ) ); diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp index 4c5b1fd..2cbf267 100644 --- a/modules/gui/qt4/main_interface.hpp +++ b/modules/gui/qt4/main_interface.hpp @@ -105,6 +105,9 @@ protected: virtual void keyPressEvent( QKeyEvent *); virtual void wheelEvent( QWheelEvent * ); virtual bool eventFilter(QObject *, QEvent *); + virtual void mousePressEvent( QMouseEvent * ); + virtual void mouseMoveEvent( QMouseEvent * ); + virtual void mouseReleaseEvent( QMouseEvent * ); private: /* Main Widgets Creation */ @@ -128,6 +131,9 @@ private: void computeMinimumSize(); /* */ + inline void moveWindow( int offsetX, int offsetY ); + + /* */ QSettings *settings; QSystemTrayIcon *sysTray; QMenu *systrayMenu; @@ -155,6 +161,8 @@ private: QMap<QWidget *, QSize> stackWidgetsSizes; + QPoint lastCustomMovePos; + /* Flags */ unsigned i_notificationSetting; /// Systray Notifications bool b_autoresize; ///< persistent resizable window @@ -173,6 +181,7 @@ private: bool b_hasPausedWhenMinimized; bool b_statusbarVisible; + bool b_customMoving; ///< Is the window moving by dragging ? #ifdef WIN32 HIMAGELIST himl; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
