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 7648f78..68f928b 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -344,6 +344,7 @@ BScreen::BScreen(FbTk::ResourceManager &rm,
344 m_currentworkspace_sig(*this), // current workspace signal 344 m_currentworkspace_sig(*this), // current workspace signal
345 m_reconfigure_sig(*this), // reconfigure signal 345 m_reconfigure_sig(*this), // reconfigure signal
346 m_resize_sig(*this), 346 m_resize_sig(*this),
347 m_bg_change_sig(*this),
347 m_layermanager(num_layers), 348 m_layermanager(num_layers),
348 m_windowtheme(new FbWinFrameTheme(scrn)), 349 m_windowtheme(new FbWinFrameTheme(scrn)),
349 // the order of windowtheme and winbutton theme is important 350 // the order of windowtheme and winbutton theme is important
@@ -782,6 +783,37 @@ void BScreen::update(FbTk::Subject *subj) {
782 783
783} 784}
784 785
786void BScreen::propertyNotify(Atom atom) {
787 static Atom fbcmd_atom = XInternAtom(FbTk::App::instance()->display(),
788 "_FLUXBOX_COMMAND", False);
789 if (atom == fbcmd_atom) {
790 Atom xa_ret_type;
791 int ret_format;
792 unsigned long ret_nitems, ret_bytes_after;
793 char *str;
794 if (rootWindow().property(fbcmd_atom, 0l, 64l,
795 True, XA_STRING, &xa_ret_type, &ret_format, &ret_nitems,
796 &ret_bytes_after, (unsigned char **)&str) && str) {
797
798 if (ret_bytes_after) {
799 XFree(str);
800 long len = 64 + (ret_bytes_after + 3)/4;
801 rootWindow().property(fbcmd_atom, 0l, len,
802 True, XA_STRING, &xa_ret_type, &ret_format, &ret_nitems,
803 &ret_bytes_after, (unsigned char **)&str);
804 }
805
806 FbTk::RefCount<FbTk::Command> cmd(CommandParser::instance().parseLine(str));
807 if (cmd.get())
808 cmd->execute();
809 XFree(str);
810
811 }
812 // TODO: this doesn't belong in FbPixmap
813 } else if (FbTk::FbPixmap::rootwinPropertyNotify(screenNumber(), atom))
814 m_bg_change_sig.notify();
815}
816
785void BScreen::keyPressEvent(XKeyEvent &ke) { 817void BScreen::keyPressEvent(XKeyEvent &ke) {
786 Fluxbox::instance()->keys()->doAction(ke.type, ke.state, ke.keycode); 818 Fluxbox::instance()->keys()->doAction(ke.type, ke.state, ke.keycode);
787} 819}
@@ -1353,7 +1385,6 @@ void BScreen::updateNetizenConfigNotify(XEvent &e) {
1353 1385
1354bool BScreen::isKdeDockapp(Window client) const { 1386bool BScreen::isKdeDockapp(Window client) const {
1355 //Check and see if client is KDE dock applet. 1387 //Check and see if client is KDE dock applet.
1356 //If so add to Slit
1357 bool iskdedockapp = false; 1388 bool iskdedockapp = false;
1358 Atom ajunk; 1389 Atom ajunk;
1359 int ijunk; 1390 int ijunk;