From 54bb684f30d2730bc610aa59d16497ecc139f86b Mon Sep 17 00:00:00 2001 From: Vincent van Ravesteijn Date: Thu, 14 May 2009 23:46:42 +0000 Subject: [PATCH] Fix bug #3918: Toggle outline button update when clicking x. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29673 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt4/GuiToc.cpp | 11 ++++++++++- src/frontends/qt4/GuiToc.h | 4 ++++ src/frontends/qt4/GuiView.cpp | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/frontends/qt4/GuiToc.cpp b/src/frontends/qt4/GuiToc.cpp index 528c4863e8..9a22e81df7 100644 --- a/src/frontends/qt4/GuiToc.cpp +++ b/src/frontends/qt4/GuiToc.cpp @@ -33,7 +33,7 @@ namespace lyx { namespace frontend { GuiToc::GuiToc(GuiView & parent, Qt::DockWidgetArea area, Qt::WindowFlags flags) - : DockView(parent, "toc", qt_("Outline"), area, flags) + : DockView(parent, "toc", qt_("Outline"), area, flags), is_closing_(false) { widget_ = new TocWidget(parent, this); setWidget(widget_); @@ -91,6 +91,15 @@ void GuiToc::enableView(bool enable) widget_->updateView(); } + +void GuiToc::closeEvent(QCloseEvent * event) +{ + is_closing_ = true; + ((GuiView *)parent())->updateToolbars(); + is_closing_ = false; +} + + void GuiToc::doDispatch(Cursor & cur, FuncRequest const & cmd) { widget_->doDispatch(cur, cmd); diff --git a/src/frontends/qt4/GuiToc.h b/src/frontends/qt4/GuiToc.h index c7a797fb67..5e759895a5 100644 --- a/src/frontends/qt4/GuiToc.h +++ b/src/frontends/qt4/GuiToc.h @@ -49,6 +49,8 @@ public: void updateView(); void enableView(bool enable); bool wantInitialFocus() const { return false; } + void closeEvent(QCloseEvent * event); + bool isClosing() const { return is_closing_; } public: /// clean-up on hide. @@ -65,6 +67,8 @@ public: private: /// TocWidget * widget_; + /// + bool is_closing_; }; } // namespace frontend diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp index 26f3d1dac6..044ec2beb2 100644 --- a/src/frontends/qt4/GuiView.cpp +++ b/src/frontends/qt4/GuiView.cpp @@ -2515,7 +2515,7 @@ bool GuiView::isDialogVisible(string const & name) const map::const_iterator it = d.dialogs_.find(name); if (it == d.dialogs_.end()) return false; - return it->second.get()->isVisibleView(); + return it->second.get()->isVisibleView() && !it->second.get()->isClosing(); } -- 2.39.2