From 36481c274467f5e64cdef6f735592c13da649a41 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Wed, 6 Jun 2007 13:52:31 +0000 Subject: [PATCH] Fix bug 3799. * src/LyXAction.cpp: * src/lfuns.h: remove LFUN_TOOLBAR_TOGGLE_STATE. * src/LyXFunc.cpp (getStatus, dispatch): merge LFUN_TOOLBAR_TOGGLE and LFUN_TOOLBAR_TOGGLE_STATE. Add an informational message after dispatch. * src/frontends/LyXView.cpp (toggleToolbarState): * src/frontends/Toolbars.cpp (toggleToolbarState): add allowauto parameter. * src/MenuBackend.cpp (expandToolbars): adapt. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18690 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/LyXAction.cpp | 1 - src/LyXFunc.cpp | 30 +++++++++++++++--------------- src/MenuBackend.cpp | 9 +++++---- src/frontends/LyXView.cpp | 4 ++-- src/frontends/LyXView.h | 2 +- src/frontends/Toolbars.cpp | 10 ++++++---- src/frontends/Toolbars.h | 6 ++++-- src/lfuns.h | 4 +--- 8 files changed, 34 insertions(+), 32 deletions(-) diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp index fdae8d0ed7..fc3c2d27b2 100644 --- a/src/LyXAction.cpp +++ b/src/LyXAction.cpp @@ -364,7 +364,6 @@ void LyXAction::init() { LFUN_WINDOW_NEW, "window-new", NoBuffer }, { LFUN_WINDOW_CLOSE, "window-close", NoBuffer }, { LFUN_UNICODE_INSERT, "unicode-insert", Noop }, - { LFUN_TOOLBAR_TOGGLE_STATE, "", NoBuffer }, { LFUN_TOOLBAR_TOGGLE, "toolbar-toggle", NoBuffer }, { LFUN_NOMENCL_INSERT, "nomencl-insert", Noop }, { LFUN_NOMENCL_PRINT, "nomencl-print", Noop }, diff --git a/src/LyXFunc.cpp b/src/LyXFunc.cpp index 46dfb5e86e..cc3bae867e 100644 --- a/src/LyXFunc.cpp +++ b/src/LyXFunc.cpp @@ -617,19 +617,11 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const enable = LyX::ref().session().bookmarks().size() > 0; break; - case LFUN_TOOLBAR_TOGGLE_STATE: { - ToolbarInfo::Flags flags = lyx_view_->getToolbarState(to_utf8(cmd.argument())); - if (!(flags & ToolbarInfo::AUTO)) - flag.setOnOff(flags & ToolbarInfo::ON); - break; - } - case LFUN_TOOLBAR_TOGGLE: { bool const current = lyx_view_->getToolbars().visible(cmd.getArg(0)); flag.setOnOff(current); break; } - case LFUN_WINDOW_CLOSE: { enable = (theApp()->gui().viewIds().size() > 1); break; @@ -1763,15 +1755,23 @@ void LyXFunc::dispatch(FuncRequest const & cmd) LyX::ref().session().bookmarks().clear(); break; - case LFUN_TOOLBAR_TOGGLE_STATE: - lyx_view_->toggleToolbarState(argument); - break; - case LFUN_TOOLBAR_TOGGLE: { BOOST_ASSERT(lyx_view_); - string const name = to_utf8(cmd.argument()); - bool const current = lyx_view_->getToolbars().visible(name); - lyx_view_->getToolbars().display(name, !current); + string const name = cmd.getArg(0); + bool const allowauto = cmd.getArg(1) == "allowauto"; + lyx_view_->toggleToolbarState(name, allowauto); + ToolbarInfo::Flags const flags = + lyx_view_->getToolbarState(name); + docstring state; + if (flags & ToolbarInfo::ON) + state = _("on"); + else if (flags & ToolbarInfo::OFF) + state = _("off"); + else if (flags & ToolbarInfo::AUTO) + state = _("auto"); + + setMessage(bformat(_("Toolbar \"%1$s\" state set to %2$s"), + from_ascii(name), state)); break; } diff --git a/src/MenuBackend.cpp b/src/MenuBackend.cpp index 50c2d037cc..dce50f52d1 100644 --- a/src/MenuBackend.cpp +++ b/src/MenuBackend.cpp @@ -789,9 +789,10 @@ void expandToolbars(Menu & tomenu) for (; cit != end; ++cit) { docstring label = _(cit->gui_name); - // frontends are not supposed to turn on/off toolbars, if they cannot - // update ToolbarBackend::flags. That is to say, ToolbarsBackend::flags - // should reflect the true state of toolbars. + // frontends are not supposed to turn on/off toolbars, + // if they cannot update ToolbarBackend::flags. That + // is to say, ToolbarsBackend::flags should reflect + // the true state of toolbars. // // menu is displayed as // on/off review @@ -801,7 +802,7 @@ void expandToolbars(Menu & tomenu) if (cit->flags & ToolbarInfo::AUTO) label += _(" (auto)"); tomenu.add(MenuItem(MenuItem::Command, label, - FuncRequest(LFUN_TOOLBAR_TOGGLE_STATE, cit->name))); + FuncRequest(LFUN_TOOLBAR_TOGGLE, cit->name + " allowauto"))); } } diff --git a/src/frontends/LyXView.cpp b/src/frontends/LyXView.cpp index c3a3739001..7772795d83 100644 --- a/src/frontends/LyXView.cpp +++ b/src/frontends/LyXView.cpp @@ -353,7 +353,7 @@ ToolbarInfo::Flags LyXView::getToolbarState(string const & name) } -void LyXView::toggleToolbarState(string const & name) +void LyXView::toggleToolbarState(string const & name, bool allowauto) { // it is possible to get current toolbar status like this,... // but I decide to obey the order of ToolbarBackend::flags @@ -361,7 +361,7 @@ void LyXView::toggleToolbarState(string const & name) // toolbars_->saveToolbarInfo(); // // toggle state on/off/auto - toolbars_->toggleToolbarState(name); + toolbars_->toggleToolbarState(name, allowauto); // update toolbar updateToolbars(); } diff --git a/src/frontends/LyXView.h b/src/frontends/LyXView.h index dc9b6df169..dd3717dd91 100644 --- a/src/frontends/LyXView.h +++ b/src/frontends/LyXView.h @@ -156,7 +156,7 @@ public: /// get toolbar state ToolbarInfo::Flags getToolbarState(std::string const & name); /// toggle toolbar state - void toggleToolbarState(std::string const & name); + void toggleToolbarState(std::string const & name, bool allowauto); /// update the menubar void updateMenubar(); /// update the status bar diff --git a/src/frontends/Toolbars.cpp b/src/frontends/Toolbars.cpp index 099cdafbfc..18fb1841cd 100644 --- a/src/frontends/Toolbars.cpp +++ b/src/frontends/Toolbars.cpp @@ -187,7 +187,7 @@ ToolbarInfo::Flags Toolbars::getToolbarState(string const & name) } -void Toolbars::toggleToolbarState(string const & name) +void Toolbars::toggleToolbarState(string const & name, bool allowauto) { ToolbarBackend::Toolbars::iterator cit = toolbarbackend.begin(); ToolbarBackend::Toolbars::iterator end = toolbarbackend.end(); @@ -203,8 +203,10 @@ void Toolbars::toggleToolbarState(string const & name) } else if (flags & ToolbarInfo::AUTO) { TurnOffFlag(AUTO); TurnOnFlag(OFF); - } else if ((flags & ToolbarInfo::MATH) || (flags & ToolbarInfo::TABLE) - || (flags & ToolbarInfo::REVIEW)) { + } else if (allowauto + && ((flags & ToolbarInfo::MATH) + || (flags & ToolbarInfo::TABLE) + || (flags & ToolbarInfo::REVIEW))) { // for math etc, toggle from on -> auto TurnOffFlag(ON); TurnOnFlag(AUTO); @@ -213,7 +215,7 @@ void Toolbars::toggleToolbarState(string const & name) TurnOffFlag(ON); TurnOnFlag(OFF); } - cit->flags = static_cast(flags); + cit->flags = static_cast(flags); return; } } diff --git a/src/frontends/Toolbars.h b/src/frontends/Toolbars.h index eb10a4cdfd..d87c4a705b 100644 --- a/src/frontends/Toolbars.h +++ b/src/frontends/Toolbars.h @@ -93,8 +93,10 @@ public: /// get toolbar state (on/off/auto) ToolbarInfo::Flags getToolbarState(std::string const & name); - /// toggle the state of toolbars (on/off/auto) - void toggleToolbarState(std::string const & name); + /** toggle the state of toolbars (on/off/auto). Skip "auto" + * when allowauto is false. + */ + void toggleToolbarState(std::string const & name, bool allowauto); /// Update the state of the toolbars. void update(bool in_math, bool in_table, bool review); diff --git a/src/lfuns.h b/src/lfuns.h index 8ac3c0a17a..c6a094f2c4 100644 --- a/src/lfuns.h +++ b/src/lfuns.h @@ -371,15 +371,13 @@ enum kb_action { LFUN_WINDOW_CLOSE, // Abdel 20061023 LFUN_UNICODE_INSERT, // Lgb 20061022 LFUN_BOOKMARK_CLEAR, // bpeng 20061031 - LFUN_TOOLBAR_TOGGLE_STATE, // bpeng 20061101 LFUN_NOMENCL_INSERT, // Ugras - // 285 LFUN_NOMENCL_PRINT, // Ugras + // 285 LFUN_CLEARPAGE_INSERT, // Ugras 20061125 LFUN_CLEARDOUBLEPAGE_INSERT, // Ugras 20061125 LFUN_LISTING_INSERT, // Herbert 20011110, bpeng 20070502 LFUN_TOOLBAR_TOGGLE, // Edwin 20070521 - //290 LFUN_LASTACTION // end of the table }; -- 2.39.2