diff options
-rw-r--r-- | config_host/config_vclplug.h.in | 3 | ||||
-rw-r--r-- | configure.ac | 15 | ||||
-rw-r--r-- | vcl/inc/qt5/Qt5Frame.hxx | 22 | ||||
-rw-r--r-- | vcl/qt5/Qt5Frame.cxx | 26 | ||||
-rw-r--r-- | vcl/unx/kde5/KDE5SalFrame.cxx | 17 | ||||
-rw-r--r-- | vcl/unx/kde5/KDE5SalFrame.hxx | 5 |
6 files changed, 54 insertions, 34 deletions
diff --git a/config_host/config_vclplug.h.in b/config_host/config_vclplug.h.in index f634483173bb..28b71d47a70a 100644 --- a/config_host/config_vclplug.h.in +++ b/config_host/config_vclplug.h.in @@ -13,7 +13,8 @@ Settings about which desktops have support enabled. #define ENABLE_KDE5 0 #define ENABLE_QT5 0 -#define QT5_HAVE_GOBJECT 0 #define ENABLE_GSTREAMER_1_0 0 +#define QT5_HAVE_GOBJECT 0 +#define QT5_USING_X11 0 #endif diff --git a/configure.ac b/configure.ac index 5a34fe080c33..42d4b8f5f7ea 100644 --- a/configure.ac +++ b/configure.ac @@ -11144,6 +11144,12 @@ then QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network" + if test "$USING_X11" = TRUE; then + QT5_LIBS="$QT5_LIBS -lQt5X11Extras" + QT5_USING_X11=1 + AC_DEFINE(QT5_USING_X11) + fi + dnl Check for Meta Object Compiler AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH] ) @@ -11152,7 +11158,6 @@ then the root of your Qt installation by exporting QT5DIR before running "configure".]) fi - if test "$build_gstreamer_1_0" = "yes"; then PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [ QT5_HAVE_GOBJECT=1 @@ -11232,12 +11237,8 @@ then AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".]) fi - if test "$USING_X11" = TRUE; then - PKG_CHECK_MODULES(KF5_XCB,[xcb],,[AC_MSG_ERROR([XCB not installed])]) - fi - - KF5_CFLAGS="-I$kf5_incdir -I$kf5_incdir/KCoreAddons -I$kf5_incdir/KI18n -I$kf5_incdir/KConfigCore -I$kf5_incdir/KWindowSystem -I$kf5_incdir/KIOCore -I$kf5_incdir/KIOWidgets -I$kf5_incdir/KIOFileWidgets -I$qt5_incdir -I$qt5_incdir/QtCore -I$qt5_incdir/QtGui -I$qt5_incdir/QtWidgets -I$qt5_incdir/QtNetwork -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT $KF5_XCB_CFLAGS" - KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network $KF5_XCB_LIBS" + KF5_CFLAGS="-I$kf5_incdir -I$kf5_incdir/KCoreAddons -I$kf5_incdir/KI18n -I$kf5_incdir/KConfigCore -I$kf5_incdir/KWindowSystem -I$kf5_incdir/KIOCore -I$kf5_incdir/KIOWidgets -I$kf5_incdir/KIOFileWidgets -I$qt5_incdir -I$qt5_incdir/QtCore -I$qt5_incdir/QtGui -I$qt5_incdir/QtWidgets -I$qt5_incdir/QtNetwork -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT" + KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network" KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g") if test "$USING_X11" = TRUE; then diff --git a/vcl/inc/qt5/Qt5Frame.hxx b/vcl/inc/qt5/Qt5Frame.hxx index c70171869aa8..d7f8f1aa6e1f 100644 --- a/vcl/inc/qt5/Qt5Frame.hxx +++ b/vcl/inc/qt5/Qt5Frame.hxx @@ -19,6 +19,8 @@ #pragma once +#include <config_vclplug.h> + #include <salframe.hxx> #include <vclpluginapi.h> @@ -30,6 +32,22 @@ #include <QtCore/QObject> +#if QT5_USING_X11 +#include <unx/screensaverinhibitor.hxx> +// any better way to get rid of the X11 / Qt type clashes? +#undef Bool +#undef CursorShape +#undef Expose +#undef KeyPress +#undef KeyRelease +#undef FocusIn +#undef FocusOut +#undef FontChange +#undef None +#undef Status +#undef Unsorted +#endif + class Qt5DragSource; class Qt5DropTarget; class Qt5Graphics; @@ -87,6 +105,10 @@ class VCLPLUG_QT5_PUBLIC Qt5Frame : public QObject, public SalFrame sal_uInt32 m_nRestoreScreen; QRect m_aRestoreGeometry; +#if QT5_USING_X11 + ScreenSaverInhibitor m_ScreenSaverInhibitor; +#endif + void Center(); Size CalcDefaultSize(); void SetDefaultSize(); diff --git a/vcl/qt5/Qt5Frame.cxx b/vcl/qt5/Qt5Frame.cxx index 270885249298..3951dbced768 100644 --- a/vcl/qt5/Qt5Frame.cxx +++ b/vcl/qt5/Qt5Frame.cxx @@ -45,6 +45,10 @@ #include <QtWidgets/QMenuBar> #include <QtWidgets/QMainWindow> +#if QT5_USING_X11 +#include <QtX11Extras/QX11Info> +#endif + #include <saldatabasic.hxx> #include <window.h> #include <vcl/layout.hxx> @@ -635,11 +639,25 @@ void Qt5Frame::ShowFullScreen(bool bFullScreen, sal_Int32 nScreen) } } -void Qt5Frame::StartPresentation(bool) +void Qt5Frame::StartPresentation(bool bStart) { - // meh - so there's no Qt platform independent solution - defer to - // KDE5 impl. For everyone else: - // https://forum.qt.io/topic/38504/solved-qdialog-in-fullscreen-disable-os-screensaver +// meh - so there's no Qt platform independent solution +// https://forum.qt.io/topic/38504/solved-qdialog-in-fullscreen-disable-os-screensaver +#if QT5_USING_X11 + boost::optional<unsigned int> aRootWindow; + boost::optional<Display*> aDisplay; + + if (QX11Info::isPlatformX11()) + { + aRootWindow = QX11Info::appRootWindow(); + aDisplay = QX11Info::display(); + } + + m_ScreenSaverInhibitor.inhibit(bStart, "presentation", QX11Info::isPlatformX11(), aRootWindow, + aDisplay); +#else + (void)bStart; +#endif } void Qt5Frame::SetAlwaysOnTop(bool bOnTop) diff --git a/vcl/unx/kde5/KDE5SalFrame.cxx b/vcl/unx/kde5/KDE5SalFrame.cxx index 9399da4783fe..efb08a74d832 100644 --- a/vcl/unx/kde5/KDE5SalFrame.cxx +++ b/vcl/unx/kde5/KDE5SalFrame.cxx @@ -20,11 +20,9 @@ #include <memory> #include <QtGui/QColor> #include <QtWidgets/QStyle> -#include <QtCore/QDebug> #include <QtWidgets/QToolTip> #include <QtWidgets/QApplication> #include <QtWidgets/QMenuBar> -#include <QtX11Extras/QX11Info> #include <KConfig> #include <KConfigGroup> @@ -221,19 +219,4 @@ void KDE5SalFrame::ReleaseGraphics(SalGraphics* pSalGraph) m_bGraphicsInUse = false; } -void KDE5SalFrame::StartPresentation(bool bStart) -{ - // disable screensaver for running preso - boost::optional<unsigned int> aWindow; - boost::optional<Display*> aDisplay; - if (QX11Info::isPlatformX11()) - { - aWindow = QX11Info::appRootWindow(); - aDisplay = QX11Info::display(); - } - - m_ScreenSaverInhibitor.inhibit(bStart, "presentation", QX11Info::isPlatformX11(), aWindow, - aDisplay); -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/unx/kde5/KDE5SalFrame.hxx b/vcl/unx/kde5/KDE5SalFrame.hxx index 96c634a20e7a..cf3874af7c8c 100644 --- a/vcl/unx/kde5/KDE5SalFrame.hxx +++ b/vcl/unx/kde5/KDE5SalFrame.hxx @@ -21,11 +21,8 @@ #include <memory> -#undef Status - #include <qt5/Qt5Frame.hxx> #include <qt5/Qt5SvpGraphics.hxx> -#include <unx/screensaverinhibitor.hxx> class QWidget; @@ -33,7 +30,6 @@ class KDE5SalFrame : public Qt5Frame { private: std::unique_ptr<Qt5SvpGraphics> m_pKDE5Graphics; - ScreenSaverInhibitor m_ScreenSaverInhibitor; bool m_bGraphicsInUse; public: @@ -43,7 +39,6 @@ public: virtual void ReleaseGraphics(SalGraphics* pGraphics) override; virtual void UpdateSettings(AllSettings& rSettings) override; - virtual void StartPresentation(bool bStart) override; virtual LanguageType GetInputLanguage() override { return LANGUAGE_SYSTEM; } virtual SalPointerState GetPointerState() override { return SalPointerState(); } virtual KeyIndicatorState GetIndicatorState() override { return KeyIndicatorState(); } |