]> Dogcows Code - chaz/openbox/blobdiff - src/bindings.cc
add the shadow class wrappers
[chaz/openbox] / src / bindings.cc
index 108a4ef08eb322f546d74049938bdcabc347d1f6..af9e64ababe36d9f38fa3a3355658fc44642b8c8 100644 (file)
@@ -387,14 +387,12 @@ void OBBindings::fireKey(int screen, unsigned int modifiers, unsigned int key,
           grabKeys(true);
           otk::OBDisplay::ungrab();
         } else {
-          Window win = None;
           OBClient *c = Openbox::instance->focusedClient();
-          if (c) win = c->window();
-          KeyData *data = new_key_data(screen, win, time, modifiers, key);
+          KeyData data(screen, c, time, modifiers, key);
           CallbackList::iterator it, end = p->callbacks.end();
+          printf("Firing key!\n");
           for (it = p->callbacks.begin(); it != end; ++it)
-            python_callback(*it, (PyObject*)data);
-          Py_XDECREF((PyObject*)data);
+            python_callback(*it, &data);
           resetChains(this);
         }
         break;
@@ -515,7 +513,7 @@ void OBBindings::grabButtons(bool grab, OBClient *client)
   }
 }
 
-void OBBindings::fireButton(ButtonData *data)
+void OBBindings::fireButton(MouseData *data)
 {
   if (data->context == MC_Window) {
     // these are grabbed in Sync mode to allow the press to be normal to the
@@ -530,7 +528,7 @@ void OBBindings::fireButton(ButtonData *data)
       CallbackList::iterator c_it,c_end = (*it)->callbacks[data->action].end();
       for (c_it = (*it)->callbacks[data->action].begin();
            c_it != c_end; ++c_it)
-        python_callback(*c_it, (PyObject*)data);
+        python_callback(*c_it, data);
     }
 }
 
@@ -540,7 +538,11 @@ bool OBBindings::addEvent(EventAction action, PyObject *callback)
   if (action < 0 || action >= NUM_EVENTS) {
     return false;
   }
-
+#ifdef    XKB
+  if (action == EventBell && _eventlist[action].empty())
+    XkbSelectEvents(otk::OBDisplay::display, XkbUseCoreKbd,
+                    XkbBellNotifyMask, XkbBellNotifyMask);
+#endif // XKB
   _eventlist[action].push_back(callback);
   Py_INCREF(callback);
   return true;
@@ -558,6 +560,11 @@ bool OBBindings::removeEvent(EventAction action, PyObject *callback)
   if (it != _eventlist[action].end()) {
     Py_XDECREF(*it);
     _eventlist[action].erase(it);
+#ifdef    XKB
+    if (action == EventBell && _eventlist[action].empty())
+      XkbSelectEvents(otk::OBDisplay::display, XkbUseCoreKbd,
+                      XkbBellNotifyMask, 0);
+#endif // XKB
     return true;
   }
   return false;
@@ -577,7 +584,7 @@ void OBBindings::fireEvent(EventData *data)
 {
   CallbackList::iterator c_it, c_end = _eventlist[data->action].end();
   for (c_it = _eventlist[data->action].begin(); c_it != c_end; ++c_it)
-    python_callback(*c_it, (PyObject*)data);
+    python_callback(*c_it, data);
 }
 
 }
This page took 0.025457 seconds and 4 git commands to generate.