]> Dogcows Code - chaz/openbox/commitdiff
can tell where events are coming from!
authorDana Jansens <danakj@orodu.net>
Wed, 18 Dec 2002 11:34:29 +0000 (11:34 +0000)
committerDana Jansens <danakj@orodu.net>
Wed, 18 Dec 2002 11:34:29 +0000 (11:34 +0000)
otk/eventdispatcher.cc
otk/eventdispatcher.hh
src/actions.cc
src/client.cc
src/client.hh
src/frame.cc
src/frame.hh
src/widget.hh

index a6d25624612a3d7abd6eb7713b431c57e734f9fa..33d8ba2d8150b9f178d81540ec6dae097101c83f 100644 (file)
@@ -34,8 +34,6 @@ void OtkEventDispatcher::clearHandler(Window id)
   _map.erase(id);
 }
 
-//#include <stdio.h>
-#include <stdio.h>
 void OtkEventDispatcher::dispatchEvents(void)
 {
   XEvent e;
@@ -45,7 +43,7 @@ void OtkEventDispatcher::dispatchEvents(void)
   while (XPending(OBDisplay::display)) {
     XNextEvent(OBDisplay::display, &e);
 
-#if defined(DEBUG) && 0
+#if 0
     printf("Event %d window %lx\n", e.type, e.xany.window);
 #endif
 
@@ -91,4 +89,12 @@ void OtkEventDispatcher::dispatchEvents(void)
   }
 }
 
+OtkEventHandler *OtkEventDispatcher::findHandler(Window win)
+{
+  OtkEventMap::iterator it = _map.find(win);
+  if (it != _map.end())
+    return it->second;
+  return 0;
+}
+
 }
index b56445a4bbda18d3da599ebcabf09f505254d606..9f7fb8656f5febebb7c8e3758d63010af88cb44f 100644 (file)
@@ -29,6 +29,8 @@ public:
   inline void setMasterHandler(OtkEventHandler *master)
   { _master = master; }
   OtkEventHandler *getMasterHandler(void) const { return _master; }
+
+  OtkEventHandler *findHandler(Window win);
   
 private:
   OtkEventMap _map;
index ceb55b6ccac677c12c7b1a86d289e7bc8cd1417a..9660937dc9cce5729e72c9c7909d1971d6246556 100644 (file)
@@ -5,6 +5,8 @@
 #endif
 
 #include "actions.hh"
+#include "widget.hh"
+#include "openbox.hh"
 #include "otk/display.hh"
 
 #include <stdio.h>
@@ -63,8 +65,11 @@ void OBActions::buttonPressHandler(const XButtonEvent &e)
   insertPress(e);
   
   // XXX: run the PRESS guile hook
-  printf("GUILE: PRESS: win %lx modifiers %u button %u time %lx\n",
-         (long)e.window, e.state, e.button, e.time);
+  OBWidget *w = dynamic_cast<OBWidget*>
+    (Openbox::instance->findHandler(e.window));
+
+  printf("GUILE: PRESS: win %lx type %d modifiers %u button %u time %lx\n",
+         (long)e.window, (w ? w->type():-1), e.state, e.button, e.time);
     
   if (_button) return; // won't count toward CLICK events
 
@@ -78,8 +83,11 @@ void OBActions::buttonReleaseHandler(const XButtonEvent &e)
   removePress(e);
   
   // XXX: run the RELEASE guile hook
-  printf("GUILE: RELEASE: win %lx modifiers %u button %u time %lx\n",
-         (long)e.window, e.state, e.button, e.time);
+  OBWidget *w = dynamic_cast<OBWidget*>
+    (Openbox::instance->findHandler(e.window));
+
+  printf("GUILE: RELEASE: win %lx type %d, modifiers %u button %u time %lx\n",
+         (long)e.window, (w ? w->type():-1), e.state, e.button, e.time);
 
   // not for the button we're watching?
   if (_button != e.button) return;
@@ -96,15 +104,15 @@ void OBActions::buttonReleaseHandler(const XButtonEvent &e)
     return;
 
   // XXX: run the CLICK guile hook
-  printf("GUILE: CLICK: win %lx modifiers %u button %u time %lx\n",
-         (long)e.window, e.state, e.button, e.time);
+  printf("GUILE: CLICK: win %lx type %d modifiers %u button %u time %lx\n",
+         (long)e.window, (w ? w->type():-1), e.state, e.button, e.time);
 
   if (e.time - _release.time < DOUBLECLICKDELAY &&
       _release.win == e.window && _release.button == e.button) {
 
     // XXX: run the DOUBLECLICK guile hook
-    printf("GUILE: DOUBLECLICK: win %lx modifiers %u button %u time %lx\n",
-           (long)e.window, e.state, e.button, e.time);
+    printf("GUILE: DOUBLECLICK: win %lx type %d modifiers %u button %u time %lx\n",
+           (long)e.window, (w ? w->type():-1), e.state, e.button, e.time);
 
     // reset so you cant triple click for 2 doubleclicks
     _release.win = 0;
@@ -124,7 +132,11 @@ void OBActions::enterHandler(const XCrossingEvent &e)
   OtkEventHandler::enterHandler(e);
   
   // XXX: run the ENTER guile hook
-  printf("GUILE: ENTER: win %lx modifiers %u\n", (long)e.window, e.state);
+  OBWidget *w = dynamic_cast<OBWidget*>
+    (Openbox::instance->findHandler(e.window));
+
+  printf("GUILE: ENTER: win %lx type %d modifiers %u\n",
+         (long)e.window, (w ? w->type():-1), e.state);
 }
 
 
@@ -133,15 +145,22 @@ void OBActions::leaveHandler(const XCrossingEvent &e)
   OtkEventHandler::leaveHandler(e);
 
   // XXX: run the LEAVE guile hook
-  printf("GUILE: LEAVE: win %lx modifiers %u\n", (long)e.window, e.state);
+  OBWidget *w = dynamic_cast<OBWidget*>
+    (Openbox::instance->findHandler(e.window));
+
+  printf("GUILE: LEAVE: win %lx type %d modifiers %u\n",
+         (long)e.window, (w ? w->type():-1), e.state);
 }
 
 
 void OBActions::keyPressHandler(const XKeyEvent &e)
 {
   // XXX: run the KEY guile hook
-  printf("GUILE: KEY: win %lx modifiers %u keycode %u\n",
-         (long)e.window, e.state, e.keycode);
+  OBWidget *w = dynamic_cast<OBWidget*>
+    (Openbox::instance->findHandler(e.window));
+
+  printf("GUILE: KEY: win %lx type %d modifiers %u keycode %u\n",
+         (long)e.window, (w ? w->type():-1), e.state, e.keycode);
 }
 
 
@@ -149,12 +168,15 @@ void OBActions::motionHandler(const XMotionEvent &e)
 {
   if (!e.same_screen) return; // this just gets stupid
 
+  OBWidget *w = dynamic_cast<OBWidget*>
+    (Openbox::instance->findHandler(e.window));
+
   _dx = e.x - _posqueue[0]->pos.x();
   _dy = e.y - _posqueue[0]->pos.y();
   
   // XXX: i can envision all sorts of crazy shit with this.. gestures, etc
-  printf("GUILE: MOTION: win %lx modifiers %u x %d y %d\n",
-         (long)e.window, e.state, _dx, _dy);
+  printf("GUILE: MOTION: win %lx type %d  modifiers %u x %d y %d\n",
+         (long)e.window, (w ? w->type():-1), e.state, _dx, _dy);
 }
 
 
index 07d754624ad29aacbb4b635d52d54e3548ec6572..914672503178a16763503c5b1985dc6668fb3a89 100644 (file)
@@ -26,6 +26,7 @@ namespace ob {
 
 OBClient::OBClient(int screen, Window window)
   : otk::OtkEventHandler(),
+    OBWidget(OBWidget::Type_Client),
     frame(0), _screen(screen), _window(window)
 {
   assert(screen >= 0);
index d518b9ccac5bc480f448b7b191053d98a7e7c0e7..39d9ac6288b83b041ea26564158987941eedd3df 100644 (file)
@@ -21,6 +21,7 @@ extern "C" {
 #include "otk/strut.hh"
 #include "otk/rect.hh"
 #include "otk/eventhandler.hh"
+#include "widget.hh"
 
 namespace ob {
 
@@ -38,7 +39,7 @@ class OBFrame;
   class' member variables and call whatever is nessary to complete the
   change (such as causing a redraw of the titlebar after the title is changed).
 */
-class OBClient : public otk::OtkEventHandler {
+class OBClient : public otk::OtkEventHandler, public OBWidget {
 public:
 
   //! The frame window which decorates around the client window
index 979d9575ee2ea2ad81cf3436d9bb2d2230fce826..1ba774269b1faa378e38fcfef019cc28c1bffa2c 100644 (file)
@@ -23,6 +23,7 @@ const long OBFrame::event_mask;
 
 OBFrame::OBFrame(OBClient *client, otk::Style *style)
   : otk::OtkWidget(Openbox::instance, style),
+    OBWidget(Type_Frame),
     _client(client),
     _screen(otk::OBDisplay::screenInfo(client->screen())),
     _plate(this, OBWidget::Type_Plate),
index 85c863e78e7dc69ab9841f76cab0162841dc3b64..5268512f44c9c9fe8f6d7ff3b997b37a67d42c0e 100644 (file)
@@ -29,11 +29,13 @@ namespace ob {
   parent with the SubstructureRedirectMask so that structure events for the
   client are sent to the window manager.
 */
-class OBFrame : public otk::OtkWidget {
+class OBFrame : public otk::OtkWidget, public OBWidget {
 public:
 
   //! The event mask to grab on frame windows
-  static const long event_mask = EnterWindowMask | LeaveWindowMask;
+  static const long event_mask = EnterWindowMask | LeaveWindowMask |
+                                 ButtonPressMask | ButtonReleaseMask |
+                                 ButtonMotionMask;
 
 private:
   OBClient *_client;
index ed0f0a9d740f2a35931741f9094fda8ae65e8685..6b9ffe77b5d321efd9ecc1c66eec0b6dfc1d4565 100644 (file)
@@ -7,6 +7,7 @@ namespace ob {
 class OBWidget {
 public:
   enum WidgetType {
+    Type_Frame,
     Type_Titlebar,
     Type_Handle,
     Type_Plate,
@@ -16,7 +17,8 @@ public:
     Type_IconifyButton,
     Type_StickyButton,
     Type_LeftGrip,
-    Type_RightGrip
+    Type_RightGrip,
+    Type_Client
   };
 
 private:
This page took 0.032592 seconds and 4 git commands to generate.