Author: vfr
Date: Mon Jan  3 17:49:15 2011
New Revision: 37077
URL: http://www.lyx.org/trac/changeset/37077

Log:
Fix bug #7099: Fix bug #7099: Math toolbars don't autoshow.

When applying the preference we need to save the full session information, 
because when this information is not yet saved, we will lose it forever. We can 
enter the preferences without a saved state when we start LyX with a modified 
default.ui.

see also: r37075 and r37076.

Modified:
   lyx-devel/trunk/src/frontends/qt4/GuiView.cpp
   lyx-devel/trunk/src/frontends/qt4/GuiView.h

Modified: lyx-devel/trunk/src/frontends/qt4/GuiView.cpp
==============================================================================
--- lyx-devel/trunk/src/frontends/qt4/GuiView.cpp       Mon Jan  3 16:56:27 
2011        (r37076)
+++ lyx-devel/trunk/src/frontends/qt4/GuiView.cpp       Mon Jan  3 17:49:15 
2011        (r37077)
@@ -631,6 +631,19 @@
 }
 
 
+void GuiView::saveUISettings() const
+{
+       // Save the toolbar private states
+       ToolbarMap::iterator end = d.toolbars_.end();
+       for (ToolbarMap::iterator it = d.toolbars_.begin(); it != end; ++it)
+               it->second->saveSession();
+       // Now take care of all other dialogs
+       map<string, DialogPtr>::const_iterator it = d.dialogs_.begin();
+       for (; it!= d.dialogs_.end(); ++it)
+               it->second->saveSession();
+}
+
+
 bool GuiView::restoreLayout()
 {
        QSettings settings;
@@ -862,16 +875,8 @@
        // Saving fullscreen requires additional tweaks in the toolbar code.
        // It wouldn't also work under linux natively.
        if (lyxrc.allow_geometry_session) {
-               // Save this window geometry and layout.
                saveLayout();
-               // Then the toolbar private states.
-               ToolbarMap::iterator end = d.toolbars_.end();
-               for (ToolbarMap::iterator it = d.toolbars_.begin(); it != end; 
++it)
-                       it->second->saveSession();
-               // Now take care of all other dialogs:
-               map<string, DialogPtr>::const_iterator it = d.dialogs_.begin();
-               for (; it!= d.dialogs_.end(); ++it)
-                       it->second->saveSession();
+               saveUISettings();
        }
 
        close_event->accept();
@@ -3726,6 +3731,7 @@
        // Make sure that no LFUN uses any GuiView.
        guiApp->setCurrentView(0);
        saveLayout();
+       saveUISettings();
        menuBar()->clear();
        constructToolbars();
        guiApp->menus().fillMenuBar(menuBar(), this, false);

Modified: lyx-devel/trunk/src/frontends/qt4/GuiView.h
==============================================================================
--- lyx-devel/trunk/src/frontends/qt4/GuiView.h Mon Jan  3 16:56:27 2011        
(r37076)
+++ lyx-devel/trunk/src/frontends/qt4/GuiView.h Mon Jan  3 17:49:15 2011        
(r37077)
@@ -336,8 +336,10 @@
        void disconnectDialog(std::string const & name);
 
 private:
-       ///
+       /// Saves the layout and geometry of the window
        void saveLayout() const;
+       /// Saves the settings of toolbars and all dialogs
+       void saveUISettings() const;
        ///
        bool restoreLayout();
        ///

Reply via email to