all repos — fluxbox @ 9aee5b80cb32119a633151a489a2bd85b63e3b28

custom fork of the fluxbox windowmanager

Changed resize signal in BScreen to use the new signal system
Henrik Kinnunen fluxgen@fluxbox.org
commit

9aee5b80cb32119a633151a489a2bd85b63e3b28

parent

2fcc0fd9e7b92dbb440fd67e34fdbab05be7d98d

7 files changed, 35 insertions(+), 14 deletions(-)

jump to
M ChangeLogChangeLog

@@ -1,6 +1,9 @@

(Format: Year/Month/Day) Changes for 1.1.2 *08/09/28: + * Changed resize signal, in screen, to use the new signal system + (Henrik) + Toolbar.hh/cc, Slit.hh/cc, Screen.hh/cc * Changed workspace area signal to use the new signal system (Henrik) Window.hh/cc, Screen.hh/cc, fluxbox.hh/cc * Changed focused window signal to use the new signal system (Henrik)
M src/Screen.ccsrc/Screen.cc

@@ -340,7 +340,6 @@ const string &screenname,

const string &altscreenname, int scrn, int num_layers) : m_reconfigure_sig(*this), // reconfigure signal - m_resize_sig(*this), m_layermanager(num_layers), m_focused_windowtheme(new FbWinFrameTheme(scrn, ".focus", ".Focus")), m_unfocused_windowtheme(new FbWinFrameTheme(scrn, ".unfocus", ".Unfocus")),

@@ -1931,7 +1930,7 @@ // reset background

m_root_theme->reconfigTheme(); // send resize notify - m_resize_sig.notify(); + m_resize_sig.emit(*this); m_workspace_area_sig.emit(*this); // move windows out of inactive heads
M src/Screen.hhsrc/Screen.hh

@@ -226,7 +226,7 @@ /// focused window signal

FbTk::Signal<void, BScreen&, FluxboxWindow*, WinClient*> &focusedWindowSig() { return m_focusedwindow_sig; } /// reconfigure signal FbTk::Subject &reconfigureSig() { return m_reconfigure_sig; } - FbTk::Subject &resizeSig() { return m_resize_sig; } + ScreenSignal &resizeSig() { return m_resize_sig; } ScreenSignal &bgChangeSig() { return m_bg_change_sig; } //@}

@@ -493,11 +493,11 @@ void renderPosWindow();

const Strut* availableWorkspaceArea(int head) const; - ScreenSubject - m_reconfigure_sig, ///< reconfigure signal - m_resize_sig; ///< resize signal + ScreenSubject m_reconfigure_sig; ///< reconfigure signal + FbTk::Signal<void, BScreen&, FluxboxWindow*, WinClient*> m_focusedwindow_sig; ///< focused window signal + ScreenSignal m_resize_sig; ///< resize signal ScreenSignal m_workspace_area_sig; ///< workspace area changed signal ScreenSignal m_iconlist_sig; ///< notify if a window gets iconified/deiconified ScreenSignal m_clientlist_sig; ///< client signal
M src/Slit.ccsrc/Slit.cc

@@ -265,7 +265,9 @@ _FB_USES_NLS;

// attach to theme and root window change signal theme().reconfigSig().attach(this); - scr.resizeSig().attach(this); + + join(scr.resizeSig(), + FbTk::MemFun(*this, &Slit::screenSizeChanged)); join(scr.bgChangeSig(), FbTk::MemFun(*this, &Slit::updateForScreen));

@@ -1053,16 +1055,20 @@ // just the are that gets exposed

frame.window.clearArea(ev.x, ev.y, ev.width, ev.height); } -void Slit::updateForScreen(BScreen &screen) { - reconfigure(); -} - -void Slit::update(FbTk::Subject *subj) { +void Slit::screenSizeChanged(BScreen &screen) { reconfigure(); #ifdef XINERAMA - if (subj == &m_screen.resizeSig() && m_xineramaheadmenu) + if (m_xineramaheadmenu) m_xineramaheadmenu->reloadHeads(); #endif // XINERAMA +} + +void Slit::updateForScreen(BScreen &screen) { + reconfigure(); +} + +void Slit::update(FbTk::Subject*) { + updateForScreen(screen()); } void Slit::clearWindow() {
M src/Slit.hhsrc/Slit.hh

@@ -133,6 +133,7 @@ const SlitClients &clients() const { return m_client_list; }

SlitClients &clients() { return m_client_list; } private: /// Called when screen has changed + void screenSizeChanged(BScreen &screen); void updateForScreen(BScreen &screen); void updateAlpha();
M src/Toolbar.ccsrc/Toolbar.cc

@@ -51,6 +51,7 @@ #include "FbTk/BoolMenuItem.hh"

#include "FbTk/IntMenuItem.hh" #include "FbTk/Shape.hh" #include "FbTk/SimpleObserver.hh" +#include "FbTk/MemFun.hh" // use GNU extensions #ifndef _GNU_SOURCE

@@ -253,8 +254,10 @@ // we need to get notified when the theme is reloaded

m_observers.push_back(makeObserver(*this, &Toolbar::reconfigure)); m_theme.reconfigSig().attach(m_observers.back()); screen().reconfigureSig().attach(m_observers.back()); // get this on antialias change + // listen to screen size changes - screen().resizeSig().attach(m_observers.back()); + m_signal_tracker.join(screen().resizeSig(), + FbTk::MemFun(*this, &Toolbar::screenChanged)); moveToLayer((*m_rc_layernum).getNum());

@@ -378,6 +381,10 @@ }

void Toolbar::lower() { m_layeritem.lower(); +} + +void Toolbar::screenChanged(BScreen &screen) { + reconfigure(); } void Toolbar::reconfigure() {
M src/Toolbar.hhsrc/Toolbar.hh

@@ -41,6 +41,7 @@ #include "FbTk/XLayer.hh"

#include "FbTk/XLayerItem.hh" #include "FbTk/EventHandler.hh" #include "FbTk/FbWindow.hh" +#include "FbTk/Signal.hh" #include <memory>

@@ -139,6 +140,9 @@ void clearStrut();

void updateStrut(); void updateAlpha(); + /// Called when the screen changed property. + void screenChanged(BScreen &screen); + bool m_hidden; ///< hidden state /// Toolbar frame

@@ -193,6 +197,7 @@

bool m_resize_lock; ///< to lock rearrangeItems or not /// observers for various signals std::vector<FbTk::Observer*> m_observers; + FbTk::SignalTracker m_signal_tracker; };