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()
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 ) );
......
......@@ -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 */
......@@ -127,6 +130,9 @@ private:
void setInterfaceFullScreen( bool );
void computeMinimumSize();
/* */
inline void moveWindow( int offsetX, int offsetY );
/* */
QSettings *settings;
QSystemTrayIcon *sysTray;
......@@ -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;
......
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