See below. This makes the shown minibuffer as part of the session, but I
don't think that's problematic. There are still other problems:
1) return on the completions popup doesn't select the item
2) focus gets lost (doesn't centralWidget()->focus() work with Qt4?)
OK?
john
Index: lyxfunc.C
===================================================================
--- lyxfunc.C (revision 15949)
+++ lyxfunc.C (working copy)
@@ -792,7 +792,7 @@
case LFUN_COMMAND_EXECUTE:
BOOST_ASSERT(lyx_view_);
- lyx_view_->getToolbars().display("minibuffer", true);
+ lyx_view_->setToolbarState("minibuffer",
ToolbarBackend::ON);
lyx_view_->focus_command_buffer();
break;
Index: frontends/LyXView.h
===================================================================
--- frontends/LyXView.h (revision 15949)
+++ frontends/LyXView.h (working copy)
@@ -138,6 +138,8 @@
void updateToolbars();
/// get toolbar state
ToolbarBackend::Flags getToolbarState(std::string const & name);
+ /// set toolbar state
+ void setToolbarState(std::string const & name, ToolbarBackend::Flags
flags);
/// toggle toolbar state
void toggleToolbarState(std::string const & name);
/// update the menubar
Index: frontends/Toolbars.C
===================================================================
--- frontends/Toolbars.C (revision 15949)
+++ frontends/Toolbars.C (working copy)
@@ -116,41 +116,45 @@
}
-void Toolbars::display(string const & name, bool show)
-{
+ToolbarBackend::Flags Toolbars::getToolbarState(string const & name)
+{
ToolbarBackend::Toolbars::const_iterator cit = toolbarbackend.begin();
ToolbarBackend::Toolbars::const_iterator end = toolbarbackend.end();
for (; cit != end; ++cit) {
- if (cit->name == name) {
- displayToolbar(*cit, show);
- return;
- }
+ if (cit->name == name)
+ return cit->flags;
}
lyxerr[Debug::GUI] << "Toolbar::display: no toolbar named "
<< name << endl;
+
+ // return dummy for msvc
+ return ToolbarBackend::OFF;
}
-ToolbarBackend::Flags Toolbars::getToolbarState(string const & name)
-{
- ToolbarBackend::Toolbars::const_iterator cit = toolbarbackend.begin();
- ToolbarBackend::Toolbars::const_iterator end = toolbarbackend.end();
+void Toolbars::setToolbarState(string const & name, ToolbarBackend::Flags fl)
+{
+ ToolbarBackend::Toolbars::iterator cit = toolbarbackend.begin();
+ ToolbarBackend::Toolbars::iterator end = toolbarbackend.end();
for (; cit != end; ++cit) {
- if (cit->name == name)
- return cit->flags;
+ if (cit->name == name) {
+ int flags = cit->flags;
+ TurnOffFlag(OFF);
+ TurnOffFlag(ON);
+ TurnOffFlag(AUTO);
+ flags |= fl;
+ cit->flags =
static_cast<lyx::ToolbarBackend::Flags>(flags);
+ return;
+ }
}
lyxerr[Debug::GUI] << "Toolbar::display: no toolbar named "
<< name << endl;
-
- // return dummy for msvc
- return ToolbarBackend::OFF;
}
-
void Toolbars::toggleToolbarState(string const & name)
{
ToolbarBackend::Toolbars::iterator cit = toolbarbackend.begin();
Index: frontends/LyXView.C
===================================================================
--- frontends/LyXView.C (revision 15949)
+++ frontends/LyXView.C (working copy)
@@ -311,6 +311,12 @@
}
+void LyXView::setToolbarState(std::string const & name, ToolbarBackend::Flags
flags)
+{
+ toolbars_->setToolbarState(name, flags);
+ updateToolbars();
+}
+
void LyXView::toggleToolbarState(string const & name)
{
// it is possible to get current toolbar status like this,...
Index: frontends/Toolbars.h
===================================================================
--- frontends/Toolbars.h (revision 15949)
+++ frontends/Toolbars.h (working copy)
@@ -85,12 +85,12 @@
/// Initialize the toolbars using the backend database.
void init();
- /// Show/hide the named toolbar.
- void display(std::string const & name, bool show);
-
/// get toolbar state (on/off/auto)
ToolbarBackend::Flags getToolbarState(std::string const & name);
+ /// set toolbar state (on/off/auto)
+ void setToolbarState(std::string const & name, ToolbarBackend::Flags
fl);
+
/// toggle the state of toolbars (on/off/auto)
void toggleToolbarState(std::string const & name);