aboutsummaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index 293247b..55b74e1 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -348,6 +348,7 @@ BScreen::BScreen(FbTk::ResourceManager &rm,
348 m_currentworkspace_sig(*this), // current workspace signal 348 m_currentworkspace_sig(*this), // current workspace signal
349 m_reconfigure_sig(*this), // reconfigure signal 349 m_reconfigure_sig(*this), // reconfigure signal
350 m_resize_sig(*this), 350 m_resize_sig(*this),
351 m_bg_change_sig(*this),
351 m_layermanager(num_layers), 352 m_layermanager(num_layers),
352 m_windowtheme(new FbWinFrameTheme(scrn)), 353 m_windowtheme(new FbWinFrameTheme(scrn)),
353 // the order of windowtheme and winbutton theme is important 354 // the order of windowtheme and winbutton theme is important
@@ -795,6 +796,37 @@ void BScreen::update(FbTk::Subject *subj) {
795 796
796} 797}
797 798
799void BScreen::propertyNotify(Atom atom) {
800 static Atom fbcmd_atom = XInternAtom(FbTk::App::instance()->display(),
801 "_FLUXBOX_COMMAND", False);
802 if (atom == fbcmd_atom) {
803 Atom xa_ret_type;
804 int ret_format;
805 unsigned long ret_nitems, ret_bytes_after;
806 char *str;
807 if (rootWindow().property(fbcmd_atom, 0l, 64l,
808 True, XA_STRING, &xa_ret_type, &ret_format, &ret_nitems,
809 &ret_bytes_after, (unsigned char **)&str) && str) {
810
811 if (ret_bytes_after) {
812 XFree(str);
813 long len = 64 + (ret_bytes_after + 3)/4;
814 rootWindow().property(fbcmd_atom, 0l, len,
815 True, XA_STRING, &xa_ret_type, &ret_format, &ret_nitems,
816 &ret_bytes_after, (unsigned char **)&str);
817 }
818
819 FbTk::RefCount<FbTk::Command> cmd(CommandParser::instance().parseLine(str));
820 if (cmd.get())
821 cmd->execute();
822 XFree(str);
823
824 }
825 // TODO: this doesn't belong in FbPixmap
826 } else if (FbTk::FbPixmap::rootwinPropertyNotify(screenNumber(), atom))
827 m_bg_change_sig.notify();
828}
829
798void BScreen::keyPressEvent(XKeyEvent &ke) { 830void BScreen::keyPressEvent(XKeyEvent &ke) {
799 if (!m_typing_ahead) { 831 if (!m_typing_ahead) {
800 Fluxbox::instance()->keys()->doAction(ke.type, ke.state, ke.keycode, 832 Fluxbox::instance()->keys()->doAction(ke.type, ke.state, ke.keycode,
@@ -1408,7 +1440,6 @@ void BScreen::updateNetizenConfigNotify(XEvent &e) {
1408 1440
1409bool BScreen::isKdeDockapp(Window client) const { 1441bool BScreen::isKdeDockapp(Window client) const {
1410 //Check and see if client is KDE dock applet. 1442 //Check and see if client is KDE dock applet.
1411 //If so add to Slit
1412 bool iskdedockapp = false; 1443 bool iskdedockapp = false;
1413 Atom ajunk; 1444 Atom ajunk;
1414 int ijunk; 1445 int ijunk;