aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ClientMenu.cc9
-rw-r--r--src/ClientMenu.hh4
-rw-r--r--src/FbTk/Menu.cc2
-rw-r--r--src/FbTk/Menu.hh8
4 files changed, 8 insertions, 15 deletions
diff --git a/src/ClientMenu.cc b/src/ClientMenu.cc
index faa1d3f..4a3dacd 100644
--- a/src/ClientMenu.cc
+++ b/src/ClientMenu.cc
@@ -153,13 +153,11 @@ void ClientMenu::titleChanged(Focusable& win) {
153 // find correct menu item 153 // find correct menu item
154 ClientMenuItem* cl_item = getMenuItem(*this, win); 154 ClientMenuItem* cl_item = getMenuItem(*this, win);
155 if (cl_item) 155 if (cl_item)
156 FbTk::Menu::update(0); 156 themeReconfigured();
157} 157}
158 158
159void ClientMenu::update(FbTk::Subject *subj) { 159void ClientMenu::update(FbTk::Subject *subj) {
160 if (subj && typeid(*subj) == typeid(Focusable::FocusSubject)) { 160 if (Focusable::FocusSubject *fsubj = dynamic_cast<Focusable::FocusSubject *>(subj)) {
161
162 Focusable::FocusSubject *fsubj = static_cast<Focusable::FocusSubject *>(subj);
163 Focusable &win = fsubj->win(); 161 Focusable &win = fsubj->win();
164 162
165 // find correct menu item 163 // find correct menu item
@@ -169,6 +167,5 @@ void ClientMenu::update(FbTk::Subject *subj) {
169 if (cl_item && fsubj == &win.dieSig()) { 167 if (cl_item && fsubj == &win.dieSig()) {
170 remove(cl_item->getIndex()); 168 remove(cl_item->getIndex());
171 } 169 }
172 } else 170 }
173 FbTk::Menu::update(subj);
174} 171}
diff --git a/src/ClientMenu.hh b/src/ClientMenu.hh
index 6b59e71..61fd198 100644
--- a/src/ClientMenu.hh
+++ b/src/ClientMenu.hh
@@ -25,7 +25,7 @@
25#include "FbMenu.hh" 25#include "FbMenu.hh"
26 26
27#include "FbTk/Signal.hh" 27#include "FbTk/Signal.hh"
28#include "FbTk/Subject.hh" 28#include "FbTk/Observer.hh"
29 29
30class BScreen; 30class BScreen;
31class FluxboxWindow; 31class FluxboxWindow;
@@ -35,7 +35,7 @@ class Focusable;
35 * A menu holding a set of client menus. 35 * A menu holding a set of client menus.
36 * @see WorkspaceMenu 36 * @see WorkspaceMenu
37 */ 37 */
38class ClientMenu: public FbMenu { 38class ClientMenu: public FbMenu, public FbTk::Observer {
39public: 39public:
40 40
41 typedef std::list<FluxboxWindow *> Focusables; 41 typedef std::list<FluxboxWindow *> Focusables;
diff --git a/src/FbTk/Menu.cc b/src/FbTk/Menu.cc
index da5760d..40f81c8 100644
--- a/src/FbTk/Menu.cc
+++ b/src/FbTk/Menu.cc
@@ -1233,7 +1233,7 @@ void Menu::stopHide() {
1233 m_hide_timer.stop(); 1233 m_hide_timer.stop();
1234} 1234}
1235 1235
1236void Menu::update(FbTk::Subject *subj) { 1236void Menu::themeReconfigured() {
1237 1237
1238 m_need_update = true; 1238 m_need_update = true;
1239 1239
diff --git a/src/FbTk/Menu.hh b/src/FbTk/Menu.hh
index 7b59cf7..bd830b4 100644
--- a/src/FbTk/Menu.hh
+++ b/src/FbTk/Menu.hh
@@ -31,7 +31,6 @@
31#include "FbString.hh" 31#include "FbString.hh"
32#include "FbWindow.hh" 32#include "FbWindow.hh"
33#include "EventHandler.hh" 33#include "EventHandler.hh"
34#include "Observer.hh"
35#include "MenuTheme.hh" 34#include "MenuTheme.hh"
36#include "Timer.hh" 35#include "Timer.hh"
37#include "TypeAhead.hh" 36#include "TypeAhead.hh"
@@ -44,8 +43,7 @@ class ImageControl;
44template <typename T> class RefCount; 43template <typename T> class RefCount;
45 44
46/// Base class for menus 45/// Base class for menus
47class Menu: public FbTk::EventHandler, FbTk::FbWindowRenderer, 46class Menu: public FbTk::EventHandler, FbTk::FbWindowRenderer {
48 public FbTk::Observer {
49public: 47public:
50 enum Alignment{ ALIGNDONTCARE = 1, ALIGNTOP, ALIGNBOTTOM }; 48 enum Alignment{ ALIGNDONTCARE = 1, ALIGNTOP, ALIGNBOTTOM };
51 enum { RIGHT = 1, LEFT }; 49 enum { RIGHT = 1, LEFT };
@@ -168,6 +166,7 @@ public:
168 166
169protected: 167protected:
170 168
169 void themeReconfigured();
171 void setTitleVisibility(bool b) { 170 void setTitleVisibility(bool b) {
172 m_title_vis = b; m_need_update = true; 171 m_title_vis = b; m_need_update = true;
173 if (!b) 172 if (!b)
@@ -187,15 +186,12 @@ protected:
187 186
188 virtual void internal_hide(bool first = true); 187 virtual void internal_hide(bool first = true);
189 188
190 virtual void update(FbTk::Subject *);
191
192private: 189private:
193 190
194 void openSubmenu(); 191 void openSubmenu();
195 void closeMenu(); 192 void closeMenu();
196 void startHide(); 193 void startHide();
197 void stopHide(); 194 void stopHide();
198 void themeReconfigured() { update(NULL); }
199 195
200 FbTk::ThemeProxy<MenuTheme> &m_theme; 196 FbTk::ThemeProxy<MenuTheme> &m_theme;
201 Menu *m_parent; 197 Menu *m_parent;