[vlc-commits] Qt: Add moving main window on any part of a window
Alexander Terentyev
git at videolan.org
Thu Feb 7 17:52:13 CET 2013
vlc | branch: master | Alexander Terentyev <lex.terentyev at gmail.com> | 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 <jb at videolan.org>
> 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;
More information about the vlc-commits
mailing list