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);
else if (info.location == ToolbarSection::ToolbarInfo::LEFT)
TurnOnFlag(LEFT);
else {
- TurnOnFlag(TOP);
+ // use setting from default.ui
+ flags = save;
valid_location = false;
}
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;
}
}
+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)
+ return cit->flags;
+ }
+
+ 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();
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);
- break;
+ return;
}
}
+ lyxerr[Debug::GUI] << "Toolbar::display: no toolbar named "
+ << name << endl;
}
#undef TurnOnFlag
#undef TurnOffFlag
// 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;
}