all repos — openbox @ 307da13fff916694f870ecb77aaf3ce0cf51d09e

openbox fork - make it a bit more like ryudo

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.
Dana Jansens danakj@orodu.net
commit

307da13fff916694f870ecb77aaf3ce0cf51d09e

parent

9cd9d92bb1d66db9329bf5cd6e42e8b0096945e6

M src/Configmenu.ccsrc/Configmenu.cc

@@ -63,6 +63,10 @@ insert(i18n->getMessage(ConfigmenuSet, ConfigmenuHideToolbar,

"Hide toolbar"), 6); update(); + setValues(); +} + +void Configmenu::setValues() { setItemSelected(2, screen.getImageControl()->doDither()); setItemSelected(3, screen.opaqueMove()); setItemSelected(4, screen.fullMax());

@@ -71,7 +75,7 @@ setItemSelected(6, screen.focusLast());

setItemSelected(7, screen.hideToolbar()); } -Configmenu::~Configmenu(void) { +Configmenu::~Configmenu() { delete focusmenu; delete placementmenu; }

@@ -130,7 +134,8 @@ }

} // switch } -void Configmenu::reconfigure(void) { +void Configmenu::reconfigure() { + setValues(); focusmenu->reconfigure(); placementmenu->reconfigure();

@@ -152,12 +157,21 @@ insert(i18n->getMessage(ConfigmenuSet, ConfigmenuAutoRaise,

"Auto Raise"), 3); update(); + setValues(); +} + +void Configmenu::Focusmenu::setValues() { setItemSelected(0, !configmenu->screen.sloppyFocus()); setItemSelected(1, configmenu->screen.sloppyFocus()); setItemEnabled(2, configmenu->screen.sloppyFocus()); setItemSelected(2, configmenu->screen.autoRaise()); } +void Configmenu::Focusmenu::reconfigure() { + setValues(); + Basemenu::reconfigure(); +} + void Configmenu::Focusmenu::itemSelected(int button, int index) { if (button != 1) return;

@@ -234,6 +248,10 @@ insert(i18n->getMessage(ConfigmenuSet, ConfigmenuBottomTop,

"Bottom to Top"), BScreen::BottomTop); update(); + setValues(); +} + +void Configmenu::Placementmenu::setValues() { switch (configmenu->screen.placementPolicy()) { case BScreen::RowSmartPlacement: setItemSelected(0, True);

@@ -262,6 +280,11 @@ setItemSelected(5, !rl);

setItemSelected(6, tb); setItemSelected(7, !tb); +} + +void Configmenu::Placementmenu::reconfigure() { + setValues(); + Basemenu::reconfigure(); } void Configmenu::Placementmenu::itemSelected(int button, int index) {
M src/Configmenu.hsrc/Configmenu.h

@@ -38,9 +38,11 @@ Configmenu *configmenu;

protected: virtual void itemSelected(int, int); + virtual void setValues(); public: Focusmenu(Configmenu *); + void reconfigure(); }; class Placementmenu : public Basemenu {

@@ -49,9 +51,12 @@ Configmenu *configmenu;

protected: virtual void itemSelected(int, int); + virtual void setValues(); + public: Placementmenu(Configmenu *); + void reconfigure(); }; BScreen &screen;

@@ -63,15 +68,17 @@ friend class Placementmenu;

protected: virtual void itemSelected(int, int); + virtual void setValues(); + public: Configmenu(BScreen &); - virtual ~Configmenu(void); + virtual ~Configmenu(); - inline Basemenu *getFocusmenu(void) { return focusmenu; } - inline Basemenu *getPlacementmenu(void) { return placementmenu; } + inline Basemenu *getFocusmenu() { return focusmenu; } + inline Basemenu *getPlacementmenu() { return placementmenu; } - void reconfigure(void); + void reconfigure(); }; #endif // __Configmenu_hh
M src/Screen.ccsrc/Screen.cc

@@ -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;
M src/Slit.ccsrc/Slit.cc

@@ -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(); }
M src/Slit.hsrc/Slit.h

@@ -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 &);
M src/Toolbar.ccsrc/Toolbar.cc

@@ -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)
M src/Toolbar.hsrc/Toolbar.h

@@ -56,6 +56,7 @@

protected: virtual void itemSelected(int, int); virtual void internal_hide(); + virtual void setValues(); public: Toolbarmenu(Toolbar &);
M src/openbox.ccsrc/openbox.cc

@@ -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);