From adc9f2f9d962e64fbfcf8dba7e6b2f62c992ed9b Mon Sep 17 00:00:00 2001 From: 0penBrain <48731257+0penBrain@users.noreply.github.com> Date: Thu, 2 Jan 2020 00:11:54 +0100 Subject: [PATCH] Add event catching so Status Bar action button (View menu) keeps sync with real status bar visibility --- src/Gui/CommandWindow.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/Gui/CommandWindow.cpp b/src/Gui/CommandWindow.cpp index c52e8e8b3f..c8c4461391 100644 --- a/src/Gui/CommandWindow.cpp +++ b/src/Gui/CommandWindow.cpp @@ -25,6 +25,7 @@ #ifndef _PreComp_ # include # include +# include #endif #include "Command.h" @@ -362,6 +363,24 @@ Action * StdCmdToolBarMenu::createAction(void) // Std_ViewStatusBar //=========================================================================== +class FilterStatusBar : public QObject +{ +// Q_OBJECT + +public: + FilterStatusBar(Action * action):QObject() {this->action = action;} +// virtual ~FilterStatusBar() {} +protected: + Action * action; + bool eventFilter(QObject *obj, QEvent *event) + { + if (getMainWindow()->findChild() != nullptr && obj == getMainWindow()->statusBar() && ((event->type() == QEvent::Hide) || (event->type() == QEvent::Show))) { + this->action->setChecked(getMainWindow()->statusBar()->isVisible()); + } + return false; + } +}; + DEF_STD_CMD_AC(StdCmdStatusBar) StdCmdStatusBar::StdCmdStatusBar() @@ -380,7 +399,9 @@ Action * StdCmdStatusBar::createAction(void) Action *pcAction = Command::createAction(); pcAction->setCheckable(true); pcAction->setChecked(true); - + FilterStatusBar *fsb = new FilterStatusBar(pcAction); + getMainWindow()->statusBar()->installEventFilter(fsb); + return pcAction; } @@ -480,5 +501,3 @@ void CreateWindowStdCommands(void) } } // namespace Gui - -