From 63603ff97c7b528d8e529867f67ccd65c963fff9 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 3 Apr 2018 14:21:15 +1200 Subject: [PATCH] Fix window height reported by Window.geometryChanged() signal --- interface/src/scripting/WindowScriptingInterface.cpp | 11 ++++++++++- interface/src/scripting/WindowScriptingInterface.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/interface/src/scripting/WindowScriptingInterface.cpp b/interface/src/scripting/WindowScriptingInterface.cpp index 58ec744f4e..7ca4e495b1 100644 --- a/interface/src/scripting/WindowScriptingInterface.cpp +++ b/interface/src/scripting/WindowScriptingInterface.cpp @@ -51,7 +51,7 @@ WindowScriptingInterface::WindowScriptingInterface() { } }); - connect(qApp->getWindow(), &MainWindow::windowGeometryChanged, this, &WindowScriptingInterface::geometryChanged); + connect(qApp->getWindow(), &MainWindow::windowGeometryChanged, this, &WindowScriptingInterface::onWindowGeometryChanged); } WindowScriptingInterface::~WindowScriptingInterface() { @@ -397,6 +397,15 @@ int WindowScriptingInterface::getY() { return qApp->getWindow()->y(); } +void WindowScriptingInterface::onWindowGeometryChanged(const QRect& windowGeometry) { + auto geometry = windowGeometry; + auto menu = qApp->getPrimaryMenu(); + if (menu) { + geometry.setHeight(geometry.height() - menu->geometry().height()); + } + emit geometryChanged(geometry); +} + void WindowScriptingInterface::copyToClipboard(const QString& text) { if (QThread::currentThread() != qApp->thread()) { QMetaObject::invokeMethod(this, "copyToClipboard", Q_ARG(QString, text)); diff --git a/interface/src/scripting/WindowScriptingInterface.h b/interface/src/scripting/WindowScriptingInterface.h index e3b092d011..b41051cc6b 100644 --- a/interface/src/scripting/WindowScriptingInterface.h +++ b/interface/src/scripting/WindowScriptingInterface.h @@ -522,6 +522,7 @@ public slots: void closeMessageBox(int id); private slots: + void onWindowGeometryChanged(const QRect& geometry); void onMessageBoxSelected(int button); void disconnectedFromDomain();