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;
}
lyxerr[Debug::GUI] << "Toolbar::display: no toolbar named "
<< name << endl;
+
+ // return dummy for msvc
+ return ToolbarBackend::OFF;
}
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;
// 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;
}