From 3a072b5bf972ad6af351c6abdddef0c1719268f3 Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Thu, 3 Nov 2016 12:17:28 -0700 Subject: [PATCH] tell desktop about preference changes --- interface/resources/qml/hifi/Desktop.qml | 15 ++++++++++----- interface/src/Application.cpp | 1 + libraries/ui/src/OffscreenUi.cpp | 7 +++++++ libraries/ui/src/OffscreenUi.h | 1 + 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/hifi/Desktop.qml b/interface/resources/qml/hifi/Desktop.qml index fbb3a713ae..db0c1ba724 100644 --- a/interface/resources/qml/hifi/Desktop.qml +++ b/interface/resources/qml/hifi/Desktop.qml @@ -51,19 +51,24 @@ OriginalDesktop.Desktop { Toolbar { id: sysToolbar; objectName: "com.highfidelity.interface.toolbar.system"; - anchors.horizontalCenter: settings.systemToolbarHorizontalConstraint ? desktop.horizontalCenter : undefined; + anchors.horizontalCenter: settings.constrainToolbarToCenterX ? desktop.horizontalCenter : undefined; // Literal 50 is overwritten by settings from previous session, and sysToolbar.x comes from settings when not constrained. x: sysToolbar.x y: 50 } + Settings { + id: settings; + category: "toolbar"; + property bool constrainToolbarToCenterX: true; + } + function setConstrainToolbarToCenterX(constrain) { // Learn about c++ preference change. + settings.constrainToolbarToCenterX = constrain; + } property var toolbars: (function (map) { // answer dictionary preloaded with sysToolbar map[sysToolbar.objectName] = sysToolbar; return map; })({}); - Settings { - id: settings - property bool systemToolbarHorizontalConstraint: true - } + Component.onCompleted: { WebEngine.settings.javascriptCanOpenWindows = true; WebEngine.settings.javascriptCanAccessClipboard = false; diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ae07ed1226..bbf97ad60c 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2153,6 +2153,7 @@ void Application::setFieldOfView(float fov) { void Application::setSettingConstrainToolbarPosition(bool setting) { _constrainToolbarPosition.set(setting); + DependencyManager::get()->setConstrainToolbarToCenterX(setting); } void Application::aboutApp() { diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index ca7d3f7c17..d9b15eebe0 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -371,6 +371,13 @@ void OffscreenUi::setPinned(bool pinned) { } } +void OffscreenUi::setConstrainToolbarToCenterX(bool constrained) { + bool invokeResult = QMetaObject::invokeMethod(_desktop, "setConstrainToolbarToCenterX", Q_ARG(QVariant, constrained)); + if (!invokeResult) { + qWarning() << "Failed to set toolbar constraint"; + } +} + void OffscreenUi::addMenuInitializer(std::function f) { if (!_vrMenu) { _queuedMenuInitializers.push_back(f); diff --git a/libraries/ui/src/OffscreenUi.h b/libraries/ui/src/OffscreenUi.h index 2e6e853336..3ab4fa0758 100644 --- a/libraries/ui/src/OffscreenUi.h +++ b/libraries/ui/src/OffscreenUi.h @@ -52,6 +52,7 @@ public: void setPinned(bool pinned = true); void togglePinned(); + void setConstrainToolbarToCenterX(bool constrained); bool eventFilter(QObject* originalDestination, QEvent* event) override; void addMenuInitializer(std::function f);