]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiToolbar.cpp
Handle correctly zero table special arguments.
[lyx.git] / src / frontends / qt4 / GuiToolbar.cpp
index 36a7326a5e60850bfbd1932b036689b10c2625d3..db96e0e526dbf3ed77bf208bc7092a191c7c6029 100644 (file)
@@ -61,8 +61,6 @@ GuiToolbar::GuiToolbar(ToolbarInfo const & tbinfo, GuiView & owner)
        connect(&owner, SIGNAL(iconSizeChanged(QSize)), this,
                SLOT(setIconSize(QSize)));
 
-       // Toolbar dragging is allowed.
-       setMovable(true);
        // This is used by QMainWindow::restoreState for proper main window state
        // restauration.
        setObjectName(toqstr(tbinfo.name));
@@ -73,7 +71,7 @@ GuiToolbar::GuiToolbar(ToolbarInfo const & tbinfo, GuiView & owner)
 void GuiToolbar::setVisible(bool visible)
 {
        // This is a hack to find out which toolbars have been restored by
-       // MainWindow::restoreState and which toolbars should be initialized 
+       // MainWindow::restoreState and which toolbars should be initialized
        // by us (i.e., new toolbars)
        restored_ = true;
        QToolBar::setVisible(visible);
@@ -93,7 +91,7 @@ void GuiToolbar::fill()
        ToolbarInfo::item_iterator it = tbinfo_.items.begin();
        ToolbarInfo::item_iterator end = tbinfo_.items.end();
        for (; it != end; ++it)
-               add(*it);       
+               add(*it);
        filled_ = true;
 }
 
@@ -180,7 +178,7 @@ public:
        }
 };
 
-}
+} // namespace
 
 
 MenuButton::MenuButton(GuiToolbar * bar, ToolbarItem const & item, bool const sticky)
@@ -353,10 +351,10 @@ QString GuiToolbar::sessionKey() const
 }
 
 
-void GuiToolbar::saveSession() const
+void GuiToolbar::saveSession(QSettings & settings) const
 {
-       QSettings settings;
        settings.setValue(sessionKey() + "/visibility", visibility_);
+       settings.setValue(sessionKey() + "/movability", isMovable());
 }
 
 
@@ -369,10 +367,13 @@ void GuiToolbar::restoreSession()
        if (visibility == error_val || visibility == 0) {
                // This should not happen, but in case we use the defaults
                LYXERR(Debug::GUI, "Session settings could not be found! Defaults are used instead.");
-               visibility = 
+               visibility =
                        guiApp->toolbars().defaultVisibility(fromqstr(objectName()));
        }
        setVisibility(visibility);
+
+       int movability = settings.value(sessionKey() + "/movability", true).toBool();
+       setMovable(movability);
 }
 
 
@@ -408,6 +409,27 @@ void GuiToolbar::toggle()
                qstring_to_ucs4(windowTitle()), state));
 }
 
+void GuiToolbar::movable(bool silent)
+{
+       // toggle movability
+       setMovable(!isMovable());
+
+       // manual update avoids bug in qt that the drag handle is not removed
+       // properly, e.g. in Windows
+       Q_EMIT update();
+
+       // silence for toggling of many toolbars for performance
+       if (!silent) {
+               docstring state;
+               if (isMovable())
+                       state = _("movable");
+               else
+                       state = _("immovable");
+               owner_.message(bformat(_("Toolbar \"%1$s\" state set to %2$s"),
+                       qstring_to_ucs4(windowTitle()), state));
+       }
+}
+
 } // namespace frontend
 } // namespace lyx