From 2e850f0611f3a9990be31db96dc41026f645a0b2 Mon Sep 17 00:00:00 2001 From: Benjamin Nauck Date: Tue, 2 Sep 2025 23:15:57 +0200 Subject: [PATCH] Gui: Only measure with Quick Measure if showing in status bar --- src/Gui/MainWindow.cpp | 5 +++++ src/Gui/MainWindow.h | 1 + src/Mod/Measure/Gui/QuickMeasure.cpp | 25 +++++++++++++++---------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index 58a3b917d8..04e76a8bfa 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -2315,6 +2315,11 @@ void MainWindow::setRightSideMessage(const QString& message) d->rightSideLabel->setText(message.simplified()); } +bool MainWindow::isRightSideMessageVisible() const +{ + return d->rightSideLabel->isVisible(); +} + void MainWindow::showStatus(int type, const QString& message) { if(QApplication::instance()->thread() != QThread::currentThread()) { diff --git a/src/Gui/MainWindow.h b/src/Gui/MainWindow.h index fbe998526b..5da0b81386 100644 --- a/src/Gui/MainWindow.h +++ b/src/Gui/MainWindow.h @@ -266,6 +266,7 @@ public Q_SLOTS: void showMessage (const QString & message, int timeout = 0); void setRightSideMessage(const QString & message); + bool isRightSideMessageVisible() const; // Set main window title void setWindowTitle(const QString& string); diff --git a/src/Mod/Measure/Gui/QuickMeasure.cpp b/src/Mod/Measure/Gui/QuickMeasure.cpp index a12fff8703..82bc344c34 100644 --- a/src/Mod/Measure/Gui/QuickMeasure.cpp +++ b/src/Mod/Measure/Gui/QuickMeasure.cpp @@ -114,18 +114,23 @@ void QuickMeasure::tryMeasureSelection() bool QuickMeasure::shouldMeasure(const Gui::SelectionChanges& msg) const { + if (!Gui::getMainWindow()->isRightSideMessageVisible()) { + // don't measure if there's no where to show the result + return false; + } - // measure only IF Gui::Document* doc = Gui::Application::Instance->activeDocument(); - if (doc) { - // we have a document - if (msg.Type == Gui::SelectionChanges::AddSelection - || msg.Type == Gui::SelectionChanges::RmvSelection - || msg.Type == Gui::SelectionChanges::SetSelection - || msg.Type == Gui::SelectionChanges::ClrSelection) { - // the event is about a change in selected objects - return true; - } + if (!doc) { + // no active document + return false; + } + + if (msg.Type == Gui::SelectionChanges::AddSelection + || msg.Type == Gui::SelectionChanges::RmvSelection + || msg.Type == Gui::SelectionChanges::SetSelection + || msg.Type == Gui::SelectionChanges::ClrSelection) { + // the event is about a change in selected objects + return true; } return false; }