vlc | branch: master | Prince Gupta <guptaprince8...@gmail.com> | Tue Feb 23 15:53:55 2021 +0530| [1d773e996840b04e4cd348ffe22edea0fc9516ae] | committer: Pierre Lamot
qt: allow changing csd setting at runtime Signed-off-by: Pierre Lamot <pie...@videolabs.io> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1d773e996840b04e4cd348ffe22edea0fc9516ae --- modules/gui/qt/maininterface/main_interface.cpp | 16 ++++++++++++++++ modules/gui/qt/maininterface/main_interface.hpp | 1 + modules/gui/qt/maininterface/main_interface_win32.cpp | 9 +++++++++ modules/gui/qt/maininterface/main_interface_win32.hpp | 2 ++ 4 files changed, 28 insertions(+) diff --git a/modules/gui/qt/maininterface/main_interface.cpp b/modules/gui/qt/maininterface/main_interface.cpp index 66cea66e04..8a45c785af 100644 --- a/modules/gui/qt/maininterface/main_interface.cpp +++ b/modules/gui/qt/maininterface/main_interface.cpp @@ -299,6 +299,15 @@ void MainInterface::reloadPrefs() m_hasToolbarMenu = !m_hasToolbarMenu; emit hasToolbarMenuChanged(); } + +#if QT_VERSION >= QT_VERSION_CHECK(5,15,0) + if (m_clientSideDecoration != (! var_InheritBool( p_intf, "qt-titlebar" ))) + { + m_clientSideDecoration = !m_clientSideDecoration; + emit useClientSideDecorationChanged(); + updateClientSideDecorations(); + } +#endif } @@ -692,6 +701,13 @@ void MainInterface::closeEvent( QCloseEvent *e ) } } +void MainInterface::updateClientSideDecorations() +{ + hide(); // some window managers don't like to change frame window hint on visible window + setWindowFlag(Qt::FramelessWindowHint, useClientSideDecoration()); + show(); +} + void MainInterface::setInterfaceFullScreen( bool fs ) { b_interfaceFullScreen = fs; diff --git a/modules/gui/qt/maininterface/main_interface.hpp b/modules/gui/qt/maininterface/main_interface.hpp index 289753b769..5b480c7944 100644 --- a/modules/gui/qt/maininterface/main_interface.hpp +++ b/modules/gui/qt/maininterface/main_interface.hpp @@ -215,6 +215,7 @@ protected: void dragMoveEvent( QDragMoveEvent * ) Q_DECL_OVERRIDE; void dragLeaveEvent( QDragLeaveEvent * ) Q_DECL_OVERRIDE; void closeEvent( QCloseEvent *) Q_DECL_OVERRIDE; + virtual void updateClientSideDecorations(); protected: /* Systray */ diff --git a/modules/gui/qt/maininterface/main_interface_win32.cpp b/modules/gui/qt/maininterface/main_interface_win32.cpp index edfe98243d..b88bf03e4d 100644 --- a/modules/gui/qt/maininterface/main_interface_win32.cpp +++ b/modules/gui/qt/maininterface/main_interface_win32.cpp @@ -434,6 +434,15 @@ void MainInterfaceWin32::reloadPrefs() MainInterface::reloadPrefs(); } +void MainInterfaceWin32::updateClientSideDecorations() +{ + HWND winId = WinId(windowHandle()); + SetWindowPos(winId, NULL, 0, 0, 0, 0, + SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOCOPYBITS | + SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOREPOSITION | + SWP_NOSENDCHANGING | SWP_NOSIZE | SWP_NOZORDER); +} + void InterfaceWindowHandlerWin32::toggleWindowVisiblity() { diff --git a/modules/gui/qt/maininterface/main_interface_win32.hpp b/modules/gui/qt/maininterface/main_interface_win32.hpp index 422905ca52..3a5b4e4798 100644 --- a/modules/gui/qt/maininterface/main_interface_win32.hpp +++ b/modules/gui/qt/maininterface/main_interface_win32.hpp @@ -68,6 +68,8 @@ private: public slots: virtual void reloadPrefs() override; +protected: + void updateClientSideDecorations() Q_DECL_OVERRIDE; }; class InterfaceWindowHandlerWin32 : public InterfaceWindowHandler _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits