From c8fe5cefdc750bfad3423a108e4bfb8d6c3a88d3 Mon Sep 17 00:00:00 2001 From: Evgeniy Kukhtinov Date: Tue, 11 Oct 2022 17:40:25 +0300 Subject: [PATCH 05/10] run-in-a-window --- OpenBoard.pro | 4 ++++ resources/etc/OpenBoard.config | 1 + src/core/UBApplication.cpp | 15 ++++++++++++++- src/core/UBSettings.cpp | 3 +++ src/core/UBSettings.h | 4 +++- src/frameworks/UBPlatformUtils_linux.cpp | 13 +++++++++++-- src/frameworks/UBPlatformUtils_win.cpp | 12 +++++++++++- 7 files changed, 47 insertions(+), 5 deletions(-) diff --git a/OpenBoard.pro b/OpenBoard.pro index 243169d..87f9382 100644 --- a/OpenBoard.pro +++ b/OpenBoard.pro @@ -460,6 +460,10 @@ linux-g++* { QMAKE_CFLAGS += -fopenmp QMAKE_CXXFLAGS += -fopenmp QMAKE_LFLAGS += -fopenmp +# RunInWindow patch + # Necessary for CentOS/RHEL and won't harm in other distributions + INCLUDEPATH += /usr/include/ffmpeg +# end patch UB_LIBRARY.path = $$DESTDIR UB_I18N.path = $$DESTDIR/i18n UB_ETC.path = $$DESTDIR diff --git a/resources/etc/OpenBoard.config b/resources/etc/OpenBoard.config index 74dfcd2..896b27d 100644 --- a/resources/etc/OpenBoard.config +++ b/resources/etc/OpenBoard.config @@ -14,6 +14,7 @@ OnlineUserName= PageCacheSize=20 PreferredLanguage=fr_CH ProductWebAddress=http://www.openboard.ch +RunInWindow=false SoftwareUpdateURL=http://www.openboard.ch/update.json StartMode= SwapControlAndDisplayScreens=false diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index 0513694..535c3d6 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -278,8 +278,21 @@ int UBApplication::exec(const QString& pFileToImport) gs->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true); gs->setAttribute(QWebSettings::DnsPrefetchEnabled, true); + /* RunInWindow patch */ + if (UBSettings::settings()->appRunInWindow->get().toBool()) { + mainWindow = new UBMainWindow(0, + Qt::Window | + Qt::WindowCloseButtonHint | + Qt::WindowMinimizeButtonHint | + Qt::WindowMaximizeButtonHint | + Qt::WindowShadeButtonHint + ); // deleted by application destructor + } else { + mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor + } + /* mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor */ + /* end patch */ - mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor mainWindow->setAttribute(Qt::WA_NativeWindow, true); mainWindow->actionCopy->setShortcuts(QKeySequence::Copy); diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 257e3f3..6a196fc 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -266,6 +266,9 @@ void UBSettings::init() appLookForOpenSankoreInstall = new UBSetting(this, "App", "LookForOpenSankoreInstall", true); appStartMode = new UBSetting(this, "App", "StartMode", ""); + /* RunInWindow patch */ + appRunInWindow = new UBSetting(this, "App", "RunInWindow", false); + /* end patch */ featureSliderPosition = new UBSetting(this, "Board", "FeatureSliderPosition", 40); diff --git a/src/core/UBSettings.h b/src/core/UBSettings.h index 0f67f20..fdca53c 100644 --- a/src/core/UBSettings.h +++ b/src/core/UBSettings.h @@ -266,7 +266,9 @@ class UBSettings : public QObject UBSetting* appHideSwapDisplayScreens; UBSetting* appToolBarOrientationVertical; UBSetting* appPreferredLanguage; - + /* RunInWindow patch */ + UBSetting* appRunInWindow; + /* end patch */ UBSetting* appIsInSoftwareUpdateProcess; UBSetting* appLastSessionDocumentUUID; diff --git a/src/frameworks/UBPlatformUtils_linux.cpp b/src/frameworks/UBPlatformUtils_linux.cpp index d3693ce..4560233 100644 --- a/src/frameworks/UBPlatformUtils_linux.cpp +++ b/src/frameworks/UBPlatformUtils_linux.cpp @@ -36,7 +36,9 @@ #include #include "frameworks/UBFileSystemUtils.h" - +/* RunInWindow patch */ +#include "core/UBSettings.h" +/* end patch */ void UBPlatformUtils::init() { @@ -439,7 +441,14 @@ void UBPlatformUtils::setFrontProcess() void UBPlatformUtils::showFullScreen(QWidget *pWidget) { - pWidget->showFullScreen(); + /* RunInWindow patch */ + /* pWidget->showFullScreen(); */ + if (UBSettings::settings()->appRunInWindow->get().toBool()) { + pWidget->showNormal(); + } else { + pWidget->showFullScreen(); + } + /* end patch */ } void UBPlatformUtils::showOSK(bool show) diff --git a/src/frameworks/UBPlatformUtils_win.cpp b/src/frameworks/UBPlatformUtils_win.cpp index da8ee12..6ddf261 100644 --- a/src/frameworks/UBPlatformUtils_win.cpp +++ b/src/frameworks/UBPlatformUtils_win.cpp @@ -36,6 +36,9 @@ #include "frameworks/UBFileSystemUtils.h" #include "core/memcheck.h" +/* RunInWindow patch */ +#include "core/UBSettings.h" +/* end patch */ void UBPlatformUtils::init() { @@ -436,7 +439,14 @@ void UBPlatformUtils::setFrontProcess() void UBPlatformUtils::showFullScreen(QWidget *pWidget) { - pWidget->showFullScreen(); + /* RunInWindow patch */ + /* pWidget->showFullScreen(); */ + if (UBSettings::settings()->appRunInWindow->get().toBool()) { + pWidget->showNormal(); + } else { + pWidget->showFullScreen(); + } + /* end patch */ } void UBPlatformUtils::showOSK(bool show) -- 2.25.4