]> Dogcows Code - chaz/openbox/blobdiff - otk/display.cc
support net_wm_strut's! nothing to do with them yet however
[chaz/openbox] / otk / display.cc
index 77111d3cbb4f5398d5f121ba896c138cc5986053..bd6d2d05d1b31e0ba3cadfa4e217de3713b3b55b 100644 (file)
@@ -1,4 +1,4 @@
-// -*- mode: C++; indent-tabs-mode: nil; -*-
+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
 
 #ifdef HAVE_CONFIG_H
 # include "../config.h"
@@ -162,6 +162,8 @@ line argument.\n\n"));
 void OBDisplay::destroy()
 {
   delete _gccache;
+  while (_grab_count > 0)
+    ungrab();
   XCloseDisplay(display);
 }
 
@@ -227,5 +229,24 @@ void OBDisplay::ungrabButton(unsigned int button, unsigned int modifiers,
                   grab_window);
 }
 
+void OBDisplay::grabKey(unsigned int keycode, unsigned int modifiers,
+                        Window grab_window, bool owner_events,
+                        int pointer_mode, int keyboard_mode,
+                        bool allow_scroll_lock)
+{
+  unsigned int length = (allow_scroll_lock) ? 8 / 2:
+                                              8;
+  for (size_t cnt = 0; cnt < length; ++cnt)
+    XGrabKey(otk::OBDisplay::display, keycode, modifiers | _mask_list[cnt],
+                grab_window, owner_events, pointer_mode, keyboard_mode);
+}
+
+void OBDisplay::ungrabKey(unsigned int keycode, unsigned int modifiers,
+                          Window grab_window)
+{
+  for (size_t cnt = 0; cnt < 8; ++cnt)
+    XUngrabKey(otk::OBDisplay::display, keycode, modifiers | _mask_list[cnt],
+               grab_window);
+}
 
 }
This page took 0.022338 seconds and 4 git commands to generate.