Changed background changed signal in BScreen to use the new signal system

This commit is contained in:
Henrik Kinnunen 2008-09-21 16:12:36 +02:00
parent 71674739ec
commit d05804e666
7 changed files with 43 additions and 17 deletions

View file

@ -1,6 +1,9 @@
(Format: Year/Month/Day) (Format: Year/Month/Day)
Changes for 1.1.2 Changes for 1.1.2
*08/09/21: *08/09/21:
* Changed background changed signal in Bscreen to use the new signal
system (Henrik)
Screen.hh/cc,SystemTray.hh/cc,Slit.hh/cc
* Changed workspace names signal in BScreen to use the new signal * Changed workspace names signal in BScreen to use the new signal
system (Henrik) system (Henrik)
Screen.hh/cc, SendToMenu.hh/cc, WorkspaceMenu.hh/cc, WorkspaceNameTool.hh/cc Screen.hh/cc, SendToMenu.hh/cc, WorkspaceMenu.hh/cc, WorkspaceNameTool.hh/cc

View file

@ -345,7 +345,6 @@ BScreen::BScreen(FbTk::ResourceManager &rm,
m_focusedwindow_sig(*this), // focused window signal m_focusedwindow_sig(*this), // focused window signal
m_reconfigure_sig(*this), // reconfigure signal m_reconfigure_sig(*this), // reconfigure signal
m_resize_sig(*this), m_resize_sig(*this),
m_bg_change_sig(*this),
m_layermanager(num_layers), m_layermanager(num_layers),
m_focused_windowtheme(new FbWinFrameTheme(scrn, ".focus", ".Focus")), m_focused_windowtheme(new FbWinFrameTheme(scrn, ".focus", ".Focus")),
m_unfocused_windowtheme(new FbWinFrameTheme(scrn, ".unfocus", ".Unfocus")), m_unfocused_windowtheme(new FbWinFrameTheme(scrn, ".unfocus", ".Unfocus")),
@ -855,7 +854,7 @@ void BScreen::propertyNotify(Atom atom) {
} }
// TODO: this doesn't belong in FbPixmap // TODO: this doesn't belong in FbPixmap
} else if (FbTk::FbPixmap::rootwinPropertyNotify(screenNumber(), atom)) } else if (FbTk::FbPixmap::rootwinPropertyNotify(screenNumber(), atom))
m_bg_change_sig.notify(); m_bg_change_sig.emit(*this);
} }
void BScreen::keyPressEvent(XKeyEvent &ke) { void BScreen::keyPressEvent(XKeyEvent &ke) {

View file

@ -209,24 +209,25 @@ public:
@name Screen signals @name Screen signals
*/ */
//@{ //@{
typedef FbTk::Signal<void, BScreen&> ScreenSignal;
/// client list signal /// client list signal
FbTk::Subject &clientListSig() { return m_clientlist_sig; } FbTk::Subject &clientListSig() { return m_clientlist_sig; }
/// icon list sig /// icon list sig
FbTk::Subject &iconListSig() { return m_iconlist_sig; } FbTk::Subject &iconListSig() { return m_iconlist_sig; }
/// workspace count signal /// workspace count signal
FbTk::Signal<void, BScreen&> &workspaceCountSig() { return m_workspacecount_sig; } ScreenSignal &workspaceCountSig() { return m_workspacecount_sig; }
/// workspace names signal /// workspace names signal
FbTk::Signal<void, BScreen&> &workspaceNamesSig() { return m_workspacenames_sig; } ScreenSignal &workspaceNamesSig() { return m_workspacenames_sig; }
/// workspace area signal /// workspace area signal
FbTk::Subject &workspaceAreaSig() { return m_workspace_area_sig; } FbTk::Subject &workspaceAreaSig() { return m_workspace_area_sig; }
/// current workspace signal /// current workspace signal
FbTk::Signal<void, BScreen&> &currentWorkspaceSig() { return m_currentworkspace_sig; } ScreenSignal &currentWorkspaceSig() { return m_currentworkspace_sig; }
/// focused window signal /// focused window signal
FbTk::Subject &focusedWindowSig() { return m_focusedwindow_sig; } FbTk::Subject &focusedWindowSig() { return m_focusedwindow_sig; }
/// reconfigure signal /// reconfigure signal
FbTk::Subject &reconfigureSig() { return m_reconfigure_sig; } FbTk::Subject &reconfigureSig() { return m_reconfigure_sig; }
FbTk::Subject &resizeSig() { return m_resize_sig; } FbTk::Subject &resizeSig() { return m_resize_sig; }
FbTk::Subject &bgChangeSig() { return m_bg_change_sig; } ScreenSignal &bgChangeSig() { return m_bg_change_sig; }
//@} //@}
/// called when the screen receives a signal from a subject /// called when the screen receives a signal from a subject
@ -494,16 +495,15 @@ private:
ScreenSubject ScreenSubject
m_clientlist_sig, ///< client signal m_clientlist_sig, ///< client signal
m_iconlist_sig, ///< notify if a window gets iconified/deiconified m_iconlist_sig, ///< notify if a window gets iconified/deiconified
m_workspace_area_sig, ///< workspace area changed signal m_workspace_area_sig, ///< workspace area changed signal
m_focusedwindow_sig, ///< focused window signal m_focusedwindow_sig, ///< focused window signal
m_reconfigure_sig, ///< reconfigure signal m_reconfigure_sig, ///< reconfigure signal
m_resize_sig, ///< resize signal m_resize_sig; ///< resize signal
m_bg_change_sig; ///< background change signal
FbTk::Signal<void, BScreen&> m_workspacecount_sig; ///< workspace count signal ScreenSignal m_bg_change_sig; ///< background change signal
FbTk::Signal<void, BScreen&> m_currentworkspace_sig; ///< current workspace signal ScreenSignal m_workspacecount_sig; ///< workspace count signal
FbTk::Signal<void, BScreen&> m_workspacenames_sig; ///< workspace names signal ScreenSignal m_currentworkspace_sig; ///< current workspace signal
ScreenSignal m_workspacenames_sig; ///< workspace names signal
FbTk::MultLayers m_layermanager; FbTk::MultLayers m_layermanager;

View file

@ -41,6 +41,8 @@
#include "FbTk/Theme.hh" #include "FbTk/Theme.hh"
#include "FbTk/Transparent.hh" #include "FbTk/Transparent.hh"
#include "FbTk/MacroCommand.hh" #include "FbTk/MacroCommand.hh"
#include "FbTk/MemFun.hh"
#include "FbCommands.hh" #include "FbCommands.hh"
#include "Layer.hh" #include "Layer.hh"
#include "LayerMenu.hh" #include "LayerMenu.hh"
@ -264,7 +266,10 @@ Slit::Slit(BScreen &scr, FbTk::XLayer &layer, const char *filename)
// attach to theme and root window change signal // attach to theme and root window change signal
theme().reconfigSig().attach(this); theme().reconfigSig().attach(this);
scr.resizeSig().attach(this); scr.resizeSig().attach(this);
scr.bgChangeSig().attach(this);
join(scr.bgChangeSig(),
FbTk::MemFun(*this, &Slit::updateForScreen));
scr.reconfigureSig().attach(this); // if alpha changed (we disablethis signal when we get theme change sig) scr.reconfigureSig().attach(this); // if alpha changed (we disablethis signal when we get theme change sig)
scr.addConfigMenu(_FB_XTEXT(Slit, Slit, "Slit", "The Slit"), m_slitmenu); scr.addConfigMenu(_FB_XTEXT(Slit, Slit, "Slit", "The Slit"), m_slitmenu);
@ -1048,6 +1053,10 @@ void Slit::exposeEvent(XExposeEvent &ev) {
frame.window.clearArea(ev.x, ev.y, ev.width, ev.height); 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::update(FbTk::Subject *subj) {
reconfigure(); reconfigure();
#ifdef XINERAMA #ifdef XINERAMA

View file

@ -38,6 +38,7 @@
#include "FbTk/Timer.hh" #include "FbTk/Timer.hh"
#include "FbTk/Resource.hh" #include "FbTk/Resource.hh"
#include "FbTk/XLayerItem.hh" #include "FbTk/XLayerItem.hh"
#include "FbTk/Signal.hh"
#include <X11/Xutil.h> #include <X11/Xutil.h>
@ -51,7 +52,9 @@ class Strut;
class Layer; class Layer;
/// Handles dock apps /// Handles dock apps
class Slit: public FbTk::EventHandler, public FbTk::Observer, public LayerObject { class Slit: public FbTk::EventHandler, public FbTk::Observer,
public LayerObject, private FbTk::SignalTracker
{
public: public:
typedef std::list<SlitClient *> SlitClients; typedef std::list<SlitClient *> SlitClients;
/** /**
@ -129,6 +132,9 @@ public:
const SlitClients &clients() const { return m_client_list; } const SlitClients &clients() const { return m_client_list; }
SlitClients &clients() { return m_client_list; } SlitClients &clients() { return m_client_list; }
private: private:
/// Called when screen has changed
void updateForScreen(BScreen &screen);
void updateAlpha(); void updateAlpha();
void clearWindow(); void clearWindow();
void setupMenu(); void setupMenu();

View file

@ -24,6 +24,7 @@
#include "FbTk/EventManager.hh" #include "FbTk/EventManager.hh"
#include "FbTk/ImageControl.hh" #include "FbTk/ImageControl.hh"
#include "FbTk/TextUtils.hh" #include "FbTk/TextUtils.hh"
#include "FbTk/MemFun.hh"
#include "AtomHandler.hh" #include "AtomHandler.hh"
#include "fluxbox.hh" #include "fluxbox.hh"
@ -170,7 +171,10 @@ SystemTray::SystemTray(const FbTk::FbWindow& parent,
// setup signals // setup signals
m_observer.reset(makeObserver(*this, &SystemTray::update)); m_observer.reset(makeObserver(*this, &SystemTray::update));
m_theme->reconfigSig().attach(m_observer.get()); m_theme->reconfigSig().attach(m_observer.get());
screen.bgChangeSig().attach(m_observer.get());
join(screen.bgChangeSig(),
FbTk::MemFun(*this, &SystemTray::updateForScreen));
Fluxbox* fluxbox = Fluxbox::instance(); Fluxbox* fluxbox = Fluxbox::instance();
Display *disp = fluxbox->display(); Display *disp = fluxbox->display();

View file

@ -25,6 +25,7 @@
#include "FbTk/FbWindow.hh" #include "FbTk/FbWindow.hh"
#include "FbTk/EventHandler.hh" #include "FbTk/EventHandler.hh"
#include "FbTk/Signal.hh"
#include "ToolTheme.hh" #include "ToolTheme.hh"
#include "ToolbarItem.hh" #include "ToolbarItem.hh"
@ -42,7 +43,8 @@ template <class T> class ThemeProxy;
class Observer; class Observer;
} }
class SystemTray: public ToolbarItem, public FbTk::EventHandler { class SystemTray: public ToolbarItem, public FbTk::EventHandler,
private FbTk::SignalTracker {
public: public:
explicit SystemTray(const FbTk::FbWindow &parent, explicit SystemTray(const FbTk::FbWindow &parent,
@ -85,7 +87,10 @@ public:
static Atom getXEmbedInfoAtom(); static Atom getXEmbedInfoAtom();
private: private:
/// Called when an update for a screen is needed.
void updateForScreen(BScreen &screen) {
update();
}
void update(); void update();
typedef std::list<TrayWindow *> ClientList; typedef std::list<TrayWindow *> ClientList;