]> Dogcows Code - chaz/openbox/blobdiff - util/epist/window.cc
adding buttons for styles
[chaz/openbox] / util / epist / window.cc
index 1e8bc2272de65601935449b604cbb700369c9030..505a0f87c393c18353c312c740615a2fb8184ea7 100644 (file)
@@ -1,4 +1,4 @@
-// -*- mode: C++; indent-tabs-mode: nil; -*-
+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
 // window.cc for Epistrophy - a key handler for NETWM/EWMH window managers.
 // Copyright (c) 2002 - 2002 Ben Jansens <ben at orodu.net>
 //
@@ -34,7 +34,14 @@ using std::dec;
 #include "epist.hh"
 #include "screen.hh"
 #include "window.hh"
-#include "../../src/XAtom.hh"
+#include "../../src/xatom.hh"
+
+  // defined by black/openbox
+const unsigned long XWindow::PropBlackboxAttributesElements;
+const unsigned long XWindow::AttribDecoration;
+const unsigned long XWindow::DecorNone;
+const unsigned long XWindow::DecorNormal;
+
 
 XWindow::XWindow(epist *epist, screen *screen, Window window)
   : _epist(epist), _screen(screen), _xatom(epist->xatom()), _window(window) {
@@ -123,12 +130,13 @@ void XWindow::updateNormalHints() {
 void XWindow::updateWMHints() {
   XWMHints *hints;
 
+  // assume a window takes input if it doesnt specify
+  _can_focus = True;
+  
   if ((hints = XGetWMHints(_epist->getXDisplay(), _window)) != NULL) {
-    _can_focus = hints->input;
+    if (hints->flags & InputHint)
+      _can_focus = hints->input;
     XFree(hints);
-  } else {
-    // assume a window takes input if it doesnt specify
-    _can_focus = True;
   }
 }
 
@@ -203,8 +211,10 @@ void XWindow::processEvent(const XEvent &e) {
   case PropertyNotify:
     if (e.xproperty.atom == XA_WM_NORMAL_HINTS)
       updateNormalHints();
-    if (e.xproperty.atom == XA_WM_HINTS)
+    else if (e.xproperty.atom == XA_WM_HINTS)
       updateWMHints();
+    else if (e.xproperty.atom == _xatom->getAtom(XAtom::blackbox_attributes))
+      updateBlackboxAttributes();
     else if (e.xproperty.atom == _xatom->getAtom(XAtom::net_wm_state))
       updateState();
     else if (e.xproperty.atom == _xatom->getAtom(XAtom::net_wm_desktop))
@@ -252,12 +262,15 @@ void XWindow::iconify() const {
 }
 
 
-void XWindow::focus() const {
+void XWindow::focus(bool raise) const {
   // this will cause the window to be uniconified also
-  _xatom->sendClientMessage(_screen->rootWindow(), XAtom::net_active_window,
-                            _window);
-  //XSetInputFocus(_epist->getXDisplay(), _window, None, CurrentTime);
+
+  if (raise) {
+    _xatom->sendClientMessage(_screen->rootWindow(), XAtom::net_active_window,
+                              _window);
+  } else {
+    XSetInputFocus(_epist->getXDisplay(), _window, None, CurrentTime);
+  }
 }
 
 
This page took 0.023147 seconds and 4 git commands to generate.