]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/Toolbars.C
hopefully fix tex2lyx linking.
[lyx.git] / src / frontends / Toolbars.C
index 2f68e7d1f7035d2cdba65229619309718d35b80a..660ae99073d1adee520291579952ca65e9bb2f46 100644 (file)
@@ -45,7 +45,10 @@ void Toolbars::initFlags(ToolbarBackend::Toolbar & tbb)
        ToolbarSection::ToolbarInfo & info = LyX::ref().session().toolbars().load(tbb.name);
 
        unsigned int flags = static_cast<unsigned int>(tbb.flags);
-       // remove position
+
+       // Remove default.ui positions. Only when a valid postion is stored 
+       // in the session file the default.ui value will be overwritten
+       unsigned int save = flags;
        TurnOffFlag(TOP);
        TurnOffFlag(BOTTOM);
        TurnOffFlag(RIGHT);
@@ -62,7 +65,8 @@ void Toolbars::initFlags(ToolbarBackend::Toolbar & tbb)
        else if (info.location == ToolbarSection::ToolbarInfo::LEFT)
                TurnOnFlag(LEFT);
        else {
-               TurnOnFlag(TOP);
+               // use setting from default.ui
+               flags = save;
                valid_location = false;
        }
 
@@ -114,11 +118,21 @@ void Toolbars::init()
 
 void Toolbars::display(string const & name, bool show)
 {
-       ToolbarBackend::Toolbars::const_iterator cit = toolbarbackend.begin();
-       ToolbarBackend::Toolbars::const_iterator end = toolbarbackend.end();
+       ToolbarBackend::Toolbars::iterator cit = toolbarbackend.begin();
+       ToolbarBackend::Toolbars::iterator end = toolbarbackend.end();
 
        for (; cit != end; ++cit) {
                if (cit->name == name) {
+                       unsigned int flags = cit->flags;
+                       TurnOffFlag(AUTO);
+                       if (show) {
+                               TurnOnFlag(ON);
+                               TurnOnFlag(OFF);
+                       } else {
+                               TurnOnFlag(OFF);
+                               TurnOnFlag(ON);
+                       }
+                       cit->flags = static_cast<lyx::ToolbarBackend::Flags>(flags);
                        displayToolbar(*cit, show);
                        return;
                }
@@ -141,6 +155,9 @@ ToolbarBackend::Flags Toolbars::getToolbarState(string const & name)
 
        lyxerr[Debug::GUI] << "Toolbar::display: no toolbar named "
                << name << endl;
+
+       // return dummy for msvc
+       return ToolbarBackend::OFF;
 }
 
 
@@ -152,21 +169,23 @@ void Toolbars::toggleToolbarState(string const & name)
        for (; cit != end; ++cit) {
                if (cit->name == name) {
                        int flags = cit->flags;
-                       if (flags & ToolbarBackend::ON) {
-                               TurnOffFlag(ON);
-                               TurnOnFlag(OFF);
+                       // off -> on
+                       if (flags & ToolbarBackend::OFF) {
+                               TurnOffFlag(OFF);
+                               TurnOnFlag(ON);
+                       // auto -> off
                        } else if (flags & ToolbarBackend::AUTO) {
                                TurnOffFlag(AUTO);
-                               TurnOnFlag(ON);
+                               TurnOnFlag(OFF);
                        } else if ((flags & ToolbarBackend::MATH) || (flags & ToolbarBackend::TABLE)
                                || (flags & ToolbarBackend::REVIEW)) {
-                               // for math etc, toggle from off -> auto
-                               TurnOffFlag(OFF);
+                               // for math etc, toggle from on -> auto
+                               TurnOffFlag(ON);
                                TurnOnFlag(AUTO);
                        } else {
-                               // for others, toggle from off -> on
-                               TurnOffFlag(OFF);
-                               TurnOnFlag(ON);
+                               // for others, toggle from on -> off
+                               TurnOffFlag(ON);
+                               TurnOnFlag(OFF);
                        }
                        cit->flags = static_cast<lyx::ToolbarBackend::Flags>(flags);
                        return;
@@ -324,7 +343,7 @@ void layoutSelected(LyXView & lv, string const & name)
                // Yes, the lyx::to_utf8(_()) is correct
                if (lyx::to_utf8(_(itname)) == name) {
                        FuncRequest const func(LFUN_LAYOUT, itname,
-                                              FuncRequest::UI);
+                                              FuncRequest::TOOLBAR);
                        lv.dispatch(func);
                        return;
                }