menus update their values when they are reconfigure()d. the screen, toolbar and slit rc values are reloaded in BScreen::reconfigure() before the menus. the toolbar and slit rc values are explicitly loaded in their constructors, as is BScreen's.
@@ -249,9 +249,6 @@ XDefineCursor(getBaseDisplay().getXDisplay(), getRootWindow(),
openbox.getSessionCursor()); workspaceNames = new LinkedList<char>; - - load(); // load config options from Resources - workspacesList = new LinkedList<Workspace>; rootmenuList = new LinkedList<Rootmenu>; netizenList = new LinkedList<Netizen>;@@ -265,6 +262,7 @@ root_colormap_installed = True;
image_control->setDither(resource.image_dither); + load(); // load config options from Resources LoadStyle(); XGCValues gcv;@@ -1040,7 +1038,8 @@ setRootCommand(resource.root_command);
#ifdef HAVE_STRFTIME // it deletes the current value before setting the new one, so we have to // duplicate the current value. - setStrftimeFormat(bstrdup(resource.strftime_format)); + std::string s = resource.strftime_format; + setStrftimeFormat(s.c_str()); #else // !HAVE_STRFTIME setDateFormat(resource.date_format); setClock24Hour(resource.clock24hour);@@ -1211,6 +1210,10 @@ }
void BScreen::reconfigure(void) { load(); + toolbar->load(); +#ifdef SLIT + slit->load(); +#endif // SLIT LoadStyle(); XGCValues gcv;
@@ -52,6 +52,7 @@ m_placement = CenterRight;
m_direction = Vertical; m_ontop = false; m_hidden = m_autohide = false; + load(); display = screen.getBaseDisplay().getXDisplay(); frame.window = frame.pixmap = None;@@ -314,8 +315,6 @@ m_hidden = m_autohide = b;
} void Slit::reconfigure(void) { - load(); - frame.area.setSize(0, 0); LinkedListIterator<SlitClient> it(clientList); SlitClient *client;@@ -710,8 +709,12 @@ insert(i18n->getMessage(CommonSet, CommonAutoHide, "Auto hide"), 2);
update(); - if (slit.onTop()) setItemSelected(2, True); - if (slit.autoHide()) setItemSelected(3, True); + setValues(); +} + +void Slitmenu::setValues() { + setItemSelected(2, slit.onTop()); + setItemSelected(3, slit.autoHide()); }@@ -757,6 +760,7 @@ }
void Slitmenu::reconfigure(void) { + setValues(); directionmenu->reconfigure(); placementmenu->reconfigure();@@ -776,10 +780,19 @@ Slit::Vertical);
update(); - if (sm.slit.direction() == Slit::Horizontal) + setValues(); +} + + +void Slitmenu::Directionmenu::setValues() { + if (slitmenu.slit.direction() == Slit::Horizontal) setItemSelected(0, True); else setItemSelected(1, True); +} + +void Slitmenu::Directionmenu::reconfigure() { + setValues(); }
@@ -42,9 +42,11 @@ Slitmenu &slitmenu;
protected: virtual void itemSelected(int, int); + virtual void setValues(); public: Directionmenu(Slitmenu &); + void reconfigure(); }; class Placementmenu : public Basemenu {@@ -71,7 +73,7 @@
protected: virtual void itemSelected(int, int); virtual void internal_hide(); - + virtual void setValues(); public: Slitmenu(Slit &);
@@ -73,6 +73,7 @@ m_width_percent =66;
m_placement = BottomCenter; m_ontop = false; m_hidden = m_autohide = false; + load(); // get the clock updating every minute clock_timer = new BTimer(openbox, *this);@@ -1271,9 +1272,13 @@ insert(i18n->getMessage(ToolbarSet, ToolbarEditWkspcName,
"Edit current workspace name"), 3); update(); + + setValues(); +} - if (toolbar.onTop()) setItemSelected(1, True); - if (toolbar.autoHide()) setItemSelected(2, True); +void Toolbarmenu::setValues() { + setItemSelected(1, toolbar.onTop()); + setItemSelected(2, toolbar.autoHide()); }@@ -1328,6 +1333,7 @@ }
void Toolbarmenu::reconfigure() { + setValues(); placementmenu->reconfigure(); Basemenu::reconfigure();@@ -1355,7 +1361,6 @@ insert(i18n->getMessage(CommonSet, CommonPlacementBottomRight,
"Bottom Right"), Toolbar::BottomRight); update(); } - void Toolbarmenu::Placementmenu::itemSelected(int button, int index) { if (button != 1)
@@ -56,6 +56,7 @@
protected: virtual void itemSelected(int, int); virtual void internal_hide(); + virtual void setValues(); public: Toolbarmenu(Toolbar &);
@@ -1072,7 +1072,6 @@ void Openbox::real_reconfigure() {
grab(); load(); - save(); for (int i = 0, n = menuTimestamps->count(); i < n; i++) { MenuTimestamp *ts = menuTimestamps->remove(0);