Commit 6b2d303b authored by Alexander Terentyev's avatar Alexander Terentyev Committed by Jean-Baptiste Kempf

Qt: Add moving main window on any part of a window

Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 59c5c14c
...@@ -326,6 +326,11 @@ void MainInterface::computeMinimumSize() ...@@ -326,6 +326,11 @@ void MainInterface::computeMinimumSize()
setMinimumWidth( minWidth ); setMinimumWidth( minWidth );
} }
inline void MainInterface::moveWindow( int offsetX, int offsetY )
{
move( x() + offsetX, y() + offsetY );
}
/***************************** /*****************************
* Main UI handling * * Main UI handling *
*****************************/ *****************************/
...@@ -1387,6 +1392,36 @@ bool MainInterface::eventFilter( QObject *obj, QEvent *event ) ...@@ -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() void MainInterface::toolBarConfUpdated()
{ {
QApplication::postEvent( this, new QEvent( MainInterface::ToolbarsNeedRebuild ) ); QApplication::postEvent( this, new QEvent( MainInterface::ToolbarsNeedRebuild ) );
......
...@@ -105,6 +105,9 @@ protected: ...@@ -105,6 +105,9 @@ protected:
virtual void keyPressEvent( QKeyEvent *); virtual void keyPressEvent( QKeyEvent *);
virtual void wheelEvent( QWheelEvent * ); virtual void wheelEvent( QWheelEvent * );
virtual bool eventFilter(QObject *, QEvent *); virtual bool eventFilter(QObject *, QEvent *);
virtual void mousePressEvent( QMouseEvent * );
virtual void mouseMoveEvent( QMouseEvent * );
virtual void mouseReleaseEvent( QMouseEvent * );
private: private:
/* Main Widgets Creation */ /* Main Widgets Creation */
...@@ -127,6 +130,9 @@ private: ...@@ -127,6 +130,9 @@ private:
void setInterfaceFullScreen( bool ); void setInterfaceFullScreen( bool );
void computeMinimumSize(); void computeMinimumSize();
/* */
inline void moveWindow( int offsetX, int offsetY );
/* */ /* */
QSettings *settings; QSettings *settings;
QSystemTrayIcon *sysTray; QSystemTrayIcon *sysTray;
...@@ -155,6 +161,8 @@ private: ...@@ -155,6 +161,8 @@ private:
QMap<QWidget *, QSize> stackWidgetsSizes; QMap<QWidget *, QSize> stackWidgetsSizes;
QPoint lastCustomMovePos;
/* Flags */ /* Flags */
unsigned i_notificationSetting; /// Systray Notifications unsigned i_notificationSetting; /// Systray Notifications
bool b_autoresize; ///< persistent resizable window bool b_autoresize; ///< persistent resizable window
...@@ -173,6 +181,7 @@ private: ...@@ -173,6 +181,7 @@ private:
bool b_hasPausedWhenMinimized; bool b_hasPausedWhenMinimized;
bool b_statusbarVisible; bool b_statusbarVisible;
bool b_customMoving; ///< Is the window moving by dragging ?
#ifdef WIN32 #ifdef WIN32
HIMAGELIST himl; HIMAGELIST himl;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment