fix rootmenu disappearing on reconfigure -- I can't tell that the code I
removed here did anything useful; it's probably a remnant of an old menu implementation
This commit is contained in:
parent
db0b1fadb8
commit
2a9e8e2782
2 changed files with 12 additions and 43 deletions
|
@ -1,5 +1,8 @@
|
||||||
(Format: Year/Month/Day)
|
(Format: Year/Month/Day)
|
||||||
Changes for 1.0rc3:
|
Changes for 1.0rc3:
|
||||||
|
*07/01/15:
|
||||||
|
* Fix rootmenu disappearing on reconfigure (Mark)
|
||||||
|
Screen.cc
|
||||||
*07/01/14:
|
*07/01/14:
|
||||||
* Stay on the same workspace after a restart (Mark)
|
* Stay on the same workspace after a restart (Mark)
|
||||||
Screen.cc
|
Screen.cc
|
||||||
|
|
|
@ -862,6 +862,15 @@ void BScreen::reconfigure() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if timestamp hasn't changed, then just a reconfigure is fine
|
||||||
|
// and that seems to happen somewhere else, anyway
|
||||||
|
if (fluxbox->menuTimestampsChanged()) {
|
||||||
|
// all bets are off, so just hide the menu and reset the filenames
|
||||||
|
fluxbox->clearMenuFilenames();
|
||||||
|
m_rootmenu->hide();
|
||||||
|
rereadMenu();
|
||||||
|
}
|
||||||
|
|
||||||
//reconfigure menus
|
//reconfigure menus
|
||||||
m_workspacemenu->reconfigure();
|
m_workspacemenu->reconfigure();
|
||||||
m_configmenu->reconfigure();
|
m_configmenu->reconfigure();
|
||||||
|
@ -869,49 +878,6 @@ void BScreen::reconfigure() {
|
||||||
m_windowmenu.reset(MenuCreator::createMenuType("windowmenu", screenNumber()));
|
m_windowmenu.reset(MenuCreator::createMenuType("windowmenu", screenNumber()));
|
||||||
m_windowmenu->setInternalMenu();
|
m_windowmenu->setInternalMenu();
|
||||||
|
|
||||||
// We need to check to see if the timestamps
|
|
||||||
// changed before we actually can restore the menus
|
|
||||||
// in the same way, since we can't really say if
|
|
||||||
// any submenu is in the same place as before if the
|
|
||||||
// menu changed.
|
|
||||||
|
|
||||||
// if timestamp changed then no restoring
|
|
||||||
bool restore_menus = ! fluxbox->menuTimestampsChanged();
|
|
||||||
|
|
||||||
// destroy old timestamps
|
|
||||||
fluxbox->clearMenuFilenames();
|
|
||||||
|
|
||||||
// save submenu index so we can restore them afterwards
|
|
||||||
vector<int> remember_sub;
|
|
||||||
if (restore_menus) {
|
|
||||||
FbTk::Menu *menu = m_rootmenu.get();
|
|
||||||
while (menu) {
|
|
||||||
int r = menu->currentSubmenu();
|
|
||||||
if (r < 0) break;
|
|
||||||
remember_sub.push_back(r);
|
|
||||||
menu = menu->find(r)->submenu();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
rereadMenu();
|
|
||||||
|
|
||||||
if (restore_menus) {
|
|
||||||
// restore submenus, no timestamp changed
|
|
||||||
FbTk::Menu *menu = m_rootmenu.get();
|
|
||||||
for (size_t i = 0; i < remember_sub.size(); i++ ) {
|
|
||||||
int sub = remember_sub[i];
|
|
||||||
if (!menu || sub < 0)
|
|
||||||
break;
|
|
||||||
FbTk::MenuItem *item = menu->find(sub);
|
|
||||||
if (item != 0) {
|
|
||||||
menu->drawSubmenu(sub);
|
|
||||||
menu = item->submenu();
|
|
||||||
} else
|
|
||||||
menu = 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// reconfigure workspaces
|
// reconfigure workspaces
|
||||||
for_each(m_workspaces_list.begin(),
|
for_each(m_workspaces_list.begin(),
|
||||||
m_workspaces_list.end(),
|
m_workspaces_list.end(),
|
||||||
|
|
Loading…
Reference in a new issue