From 874eb67297cd63999730d1e779ff00581dcbb89d Mon Sep 17 00:00:00 2001 From: Mathias Gumz <akira at fluxbox dot org> Date: Mon, 23 Aug 2010 19:49:47 +0200 Subject: moved knowledge about '_NET_SYSTEM_TRAY_S' into the 'SystemTray' class --- src/Screen.cc | 7 +++---- src/SystemTray.cc | 21 ++++++++++++--------- src/SystemTray.hh | 2 ++ 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/Screen.cc b/src/Screen.cc index eab0f59..db302fe 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -54,6 +54,7 @@ #include "AtomHandler.hh" #include "HeadArea.hh" #include "FbCommands.hh" +#include "SystemTray.hh" #include "Debug.hh" #include "FbTk/I18n.hh" @@ -1234,12 +1235,10 @@ bool BScreen::isKdeDockapp(Window client) const { bool BScreen::addKdeDockapp(Window client) { XSelectInput(FbTk::App::instance()->display(), client, StructureNotifyMask); - string atom_name("_NET_SYSTEM_TRAY_S"); - atom_name += FbTk::StringUtil::number2String(screenNumber()); - // find the right atomhandler that has the name: _NET_SYSTEM_TRAY_S<num> - AtomHandler *handler = Fluxbox::instance()->getAtomHandler(atom_name); FbTk::EventHandler *evh = 0; FbTk::EventManager *evm = FbTk::EventManager::instance(); + + AtomHandler *handler = Fluxbox::instance()->getAtomHandler(SystemTray::getNetSystemTrayAtom(screenNumber())); if (handler == 0) { #ifdef SLIT if (slit() != 0 && slit()->acceptKdeDockapp()) diff --git a/src/SystemTray.cc b/src/SystemTray.cc index 14ee9ac..73d8c0d 100644 --- a/src/SystemTray.cc +++ b/src/SystemTray.cc @@ -177,11 +177,8 @@ SystemTray::SystemTray(const FbTk::FbWindow& parent, Fluxbox* fluxbox = Fluxbox::instance(); Display *disp = fluxbox->display(); - // setup atom name to _NET_SYSTEM_TRAY_S<screen number> - string atom_name("_NET_SYSTEM_TRAY_S"); - atom_name += FbTk::StringUtil::number2String(m_window.screenNumber()); - // get selection owner and see if it's free + string atom_name = getNetSystemTrayAtom(m_window.screenNumber()); Atom tray_atom = XInternAtom(disp, atom_name.c_str(), False); Window owner = XGetSelectionOwner(disp, tray_atom); if (owner != 0) { @@ -225,11 +222,9 @@ SystemTray::~SystemTray() { Fluxbox* fluxbox = Fluxbox::instance(); fluxbox->removeAtomHandler(m_handler.get()); Display *disp = fluxbox->display(); - // setup atom name to _NET_SYSTEM_TRAY_S<screen number> - string atom_name("_NET_SYSTEM_TRAY_S"); - atom_name += FbTk::StringUtil::number2String(m_window.screenNumber()); // get selection owner and see if it's free + string atom_name = getNetSystemTrayAtom(m_window.screenNumber()); Atom tray_atom = XInternAtom(disp, atom_name.c_str(), False); // Properly give up selection. @@ -553,6 +548,14 @@ void SystemTray::update() { } Atom SystemTray::getXEmbedInfoAtom() { -static Atom theatom = XInternAtom(Fluxbox::instance()->display(), "_XEMBED_INFO", False); -return theatom; + static Atom theatom = XInternAtom(Fluxbox::instance()->display(), "_XEMBED_INFO", False); + return theatom; +} + +string SystemTray::getNetSystemTrayAtom(int screen_nr) { + + string atom_name("_NET_SYSTEM_TRAY_S"); + atom_name += FbTk::StringUtil::number2String(screen_nr); + + return atom_name; } diff --git a/src/SystemTray.hh b/src/SystemTray.hh index c67e08a..153220c 100644 --- a/src/SystemTray.hh +++ b/src/SystemTray.hh @@ -84,6 +84,8 @@ public: void parentMoved() { m_window.parentMoved(); } + static std::string getNetSystemTrayAtom(int screen_nr); + static Atom getXEmbedInfoAtom(); private: -- cgit v0.11.2