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);
 

Reply via email to