diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Screen.cc | 3 | ||||
-rw-r--r-- | src/Screen.hh | 8 | ||||
-rw-r--r-- | src/Slit.cc | 20 | ||||
-rw-r--r-- | src/Slit.hh | 1 | ||||
-rw-r--r-- | src/Toolbar.cc | 9 | ||||
-rw-r--r-- | src/Toolbar.hh | 5 |
6 files changed, 32 insertions, 14 deletions
diff --git a/src/Screen.cc b/src/Screen.cc index 66ab0fd..a4778be 100644 --- a/src/Screen.cc +++ b/src/Screen.cc | |||
@@ -340,7 +340,6 @@ BScreen::BScreen(FbTk::ResourceManager &rm, | |||
340 | const string &altscreenname, | 340 | const string &altscreenname, |
341 | int scrn, int num_layers) : | 341 | int scrn, int num_layers) : |
342 | m_reconfigure_sig(*this), // reconfigure signal | 342 | m_reconfigure_sig(*this), // reconfigure signal |
343 | m_resize_sig(*this), | ||
344 | m_layermanager(num_layers), | 343 | m_layermanager(num_layers), |
345 | m_focused_windowtheme(new FbWinFrameTheme(scrn, ".focus", ".Focus")), | 344 | m_focused_windowtheme(new FbWinFrameTheme(scrn, ".focus", ".Focus")), |
346 | m_unfocused_windowtheme(new FbWinFrameTheme(scrn, ".unfocus", ".Unfocus")), | 345 | m_unfocused_windowtheme(new FbWinFrameTheme(scrn, ".unfocus", ".Unfocus")), |
@@ -1931,7 +1930,7 @@ void BScreen::updateSize() { | |||
1931 | m_root_theme->reconfigTheme(); | 1930 | m_root_theme->reconfigTheme(); |
1932 | 1931 | ||
1933 | // send resize notify | 1932 | // send resize notify |
1934 | m_resize_sig.notify(); | 1933 | m_resize_sig.emit(*this); |
1935 | m_workspace_area_sig.emit(*this); | 1934 | m_workspace_area_sig.emit(*this); |
1936 | 1935 | ||
1937 | // move windows out of inactive heads | 1936 | // move windows out of inactive heads |
diff --git a/src/Screen.hh b/src/Screen.hh index d25364a..eb86b03 100644 --- a/src/Screen.hh +++ b/src/Screen.hh | |||
@@ -226,7 +226,7 @@ public: | |||
226 | FbTk::Signal<void, BScreen&, FluxboxWindow*, WinClient*> &focusedWindowSig() { return m_focusedwindow_sig; } | 226 | FbTk::Signal<void, BScreen&, FluxboxWindow*, WinClient*> &focusedWindowSig() { return m_focusedwindow_sig; } |
227 | /// reconfigure signal | 227 | /// reconfigure signal |
228 | FbTk::Subject &reconfigureSig() { return m_reconfigure_sig; } | 228 | FbTk::Subject &reconfigureSig() { return m_reconfigure_sig; } |
229 | FbTk::Subject &resizeSig() { return m_resize_sig; } | 229 | ScreenSignal &resizeSig() { return m_resize_sig; } |
230 | ScreenSignal &bgChangeSig() { return m_bg_change_sig; } | 230 | ScreenSignal &bgChangeSig() { return m_bg_change_sig; } |
231 | //@} | 231 | //@} |
232 | 232 | ||
@@ -493,11 +493,11 @@ private: | |||
493 | 493 | ||
494 | const Strut* availableWorkspaceArea(int head) const; | 494 | const Strut* availableWorkspaceArea(int head) const; |
495 | 495 | ||
496 | ScreenSubject | 496 | ScreenSubject m_reconfigure_sig; ///< reconfigure signal |
497 | m_reconfigure_sig, ///< reconfigure signal | 497 | |
498 | m_resize_sig; ///< resize signal | ||
499 | 498 | ||
500 | FbTk::Signal<void, BScreen&, FluxboxWindow*, WinClient*> m_focusedwindow_sig; ///< focused window signal | 499 | FbTk::Signal<void, BScreen&, FluxboxWindow*, WinClient*> m_focusedwindow_sig; ///< focused window signal |
500 | ScreenSignal m_resize_sig; ///< resize signal | ||
501 | ScreenSignal m_workspace_area_sig; ///< workspace area changed signal | 501 | ScreenSignal m_workspace_area_sig; ///< workspace area changed signal |
502 | ScreenSignal m_iconlist_sig; ///< notify if a window gets iconified/deiconified | 502 | ScreenSignal m_iconlist_sig; ///< notify if a window gets iconified/deiconified |
503 | ScreenSignal m_clientlist_sig; ///< client signal | 503 | ScreenSignal m_clientlist_sig; ///< client signal |
diff --git a/src/Slit.cc b/src/Slit.cc index 6824bde..5bb96c4 100644 --- a/src/Slit.cc +++ b/src/Slit.cc | |||
@@ -265,7 +265,9 @@ Slit::Slit(BScreen &scr, FbTk::XLayer &layer, const char *filename) | |||
265 | 265 | ||
266 | // attach to theme and root window change signal | 266 | // attach to theme and root window change signal |
267 | theme().reconfigSig().attach(this); | 267 | theme().reconfigSig().attach(this); |
268 | scr.resizeSig().attach(this); | 268 | |
269 | join(scr.resizeSig(), | ||
270 | FbTk::MemFun(*this, &Slit::screenSizeChanged)); | ||
269 | 271 | ||
270 | join(scr.bgChangeSig(), | 272 | join(scr.bgChangeSig(), |
271 | FbTk::MemFun(*this, &Slit::updateForScreen)); | 273 | FbTk::MemFun(*this, &Slit::updateForScreen)); |
@@ -1053,18 +1055,22 @@ void Slit::exposeEvent(XExposeEvent &ev) { | |||
1053 | frame.window.clearArea(ev.x, ev.y, ev.width, ev.height); | 1055 | frame.window.clearArea(ev.x, ev.y, ev.width, ev.height); |
1054 | } | 1056 | } |
1055 | 1057 | ||
1056 | void Slit::updateForScreen(BScreen &screen) { | 1058 | void Slit::screenSizeChanged(BScreen &screen) { |
1057 | reconfigure(); | ||
1058 | } | ||
1059 | |||
1060 | void Slit::update(FbTk::Subject *subj) { | ||
1061 | reconfigure(); | 1059 | reconfigure(); |
1062 | #ifdef XINERAMA | 1060 | #ifdef XINERAMA |
1063 | if (subj == &m_screen.resizeSig() && m_xineramaheadmenu) | 1061 | if (m_xineramaheadmenu) |
1064 | m_xineramaheadmenu->reloadHeads(); | 1062 | m_xineramaheadmenu->reloadHeads(); |
1065 | #endif // XINERAMA | 1063 | #endif // XINERAMA |
1066 | } | 1064 | } |
1067 | 1065 | ||
1066 | void Slit::updateForScreen(BScreen &screen) { | ||
1067 | reconfigure(); | ||
1068 | } | ||
1069 | |||
1070 | void Slit::update(FbTk::Subject*) { | ||
1071 | updateForScreen(screen()); | ||
1072 | } | ||
1073 | |||
1068 | void Slit::clearWindow() { | 1074 | void Slit::clearWindow() { |
1069 | frame.window.clear(); | 1075 | frame.window.clear(); |
1070 | } | 1076 | } |
diff --git a/src/Slit.hh b/src/Slit.hh index e1bcc5e..5514b42 100644 --- a/src/Slit.hh +++ b/src/Slit.hh | |||
@@ -133,6 +133,7 @@ public: | |||
133 | SlitClients &clients() { return m_client_list; } | 133 | SlitClients &clients() { return m_client_list; } |
134 | private: | 134 | private: |
135 | /// Called when screen has changed | 135 | /// Called when screen has changed |
136 | void screenSizeChanged(BScreen &screen); | ||
136 | void updateForScreen(BScreen &screen); | 137 | void updateForScreen(BScreen &screen); |
137 | 138 | ||
138 | void updateAlpha(); | 139 | void updateAlpha(); |
diff --git a/src/Toolbar.cc b/src/Toolbar.cc index 0292b87..f23e124 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.cc | |||
@@ -51,6 +51,7 @@ | |||
51 | #include "FbTk/IntMenuItem.hh" | 51 | #include "FbTk/IntMenuItem.hh" |
52 | #include "FbTk/Shape.hh" | 52 | #include "FbTk/Shape.hh" |
53 | #include "FbTk/SimpleObserver.hh" | 53 | #include "FbTk/SimpleObserver.hh" |
54 | #include "FbTk/MemFun.hh" | ||
54 | 55 | ||
55 | // use GNU extensions | 56 | // use GNU extensions |
56 | #ifndef _GNU_SOURCE | 57 | #ifndef _GNU_SOURCE |
@@ -253,8 +254,10 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, size_t width): | |||
253 | m_observers.push_back(makeObserver(*this, &Toolbar::reconfigure)); | 254 | m_observers.push_back(makeObserver(*this, &Toolbar::reconfigure)); |
254 | m_theme.reconfigSig().attach(m_observers.back()); | 255 | m_theme.reconfigSig().attach(m_observers.back()); |
255 | screen().reconfigureSig().attach(m_observers.back()); // get this on antialias change | 256 | screen().reconfigureSig().attach(m_observers.back()); // get this on antialias change |
257 | |||
256 | // listen to screen size changes | 258 | // listen to screen size changes |
257 | screen().resizeSig().attach(m_observers.back()); | 259 | m_signal_tracker.join(screen().resizeSig(), |
260 | FbTk::MemFun(*this, &Toolbar::screenChanged)); | ||
258 | 261 | ||
259 | 262 | ||
260 | moveToLayer((*m_rc_layernum).getNum()); | 263 | moveToLayer((*m_rc_layernum).getNum()); |
@@ -380,6 +383,10 @@ void Toolbar::lower() { | |||
380 | m_layeritem.lower(); | 383 | m_layeritem.lower(); |
381 | } | 384 | } |
382 | 385 | ||
386 | void Toolbar::screenChanged(BScreen &screen) { | ||
387 | reconfigure(); | ||
388 | } | ||
389 | |||
383 | void Toolbar::reconfigure() { | 390 | void Toolbar::reconfigure() { |
384 | 391 | ||
385 | updateVisibleState(); | 392 | updateVisibleState(); |
diff --git a/src/Toolbar.hh b/src/Toolbar.hh index 100b38b..f631c41 100644 --- a/src/Toolbar.hh +++ b/src/Toolbar.hh | |||
@@ -41,6 +41,7 @@ | |||
41 | #include "FbTk/XLayerItem.hh" | 41 | #include "FbTk/XLayerItem.hh" |
42 | #include "FbTk/EventHandler.hh" | 42 | #include "FbTk/EventHandler.hh" |
43 | #include "FbTk/FbWindow.hh" | 43 | #include "FbTk/FbWindow.hh" |
44 | #include "FbTk/Signal.hh" | ||
44 | 45 | ||
45 | #include <memory> | 46 | #include <memory> |
46 | 47 | ||
@@ -139,6 +140,9 @@ private: | |||
139 | void updateStrut(); | 140 | void updateStrut(); |
140 | void updateAlpha(); | 141 | void updateAlpha(); |
141 | 142 | ||
143 | /// Called when the screen changed property. | ||
144 | void screenChanged(BScreen &screen); | ||
145 | |||
142 | bool m_hidden; ///< hidden state | 146 | bool m_hidden; ///< hidden state |
143 | 147 | ||
144 | /// Toolbar frame | 148 | /// Toolbar frame |
@@ -193,6 +197,7 @@ private: | |||
193 | bool m_resize_lock; ///< to lock rearrangeItems or not | 197 | bool m_resize_lock; ///< to lock rearrangeItems or not |
194 | /// observers for various signals | 198 | /// observers for various signals |
195 | std::vector<FbTk::Observer*> m_observers; | 199 | std::vector<FbTk::Observer*> m_observers; |
200 | FbTk::SignalTracker m_signal_tracker; | ||
196 | }; | 201 | }; |
197 | 202 | ||
198 | 203 | ||