Make edges more likely to eventually do something useful.
authorMikael Magnusson <mikachu@comhem.se>
Sun, 10 Feb 2008 21:11:52 +0000 (22:11 +0100)
committerMikael Magnusson <mikachu@comhem.se>
Sat, 8 Mar 2008 16:21:13 +0000 (17:21 +0100)
openbox/edges.c
openbox/event.c
openbox/frame.c

index d0f38a2fbdb2053f21a1d6d1029cfa42dca9c8ca..f24094291729896656f24e0f1bd994a0dd5bd49d 100644 (file)
@@ -73,9 +73,11 @@ void edges_startup(gboolean reconfigure)
         edge[i]->obwin.type = OB_WINDOW_CLASS_INTERNAL;
 
         get_position(i, *screen, &r);
-        edge[i]->win = XCreateWindow(obt_display, RootWindow(obt_display, ob_screen),
+        edge[i]->win = XCreateWindow(obt_display, obt_root(ob_screen),
                                      r.x, r.y, r.width, r.height, 0, 0, InputOnly,
                                      CopyFromParent, CWOverrideRedirect, &xswa);
+        XSelectInput(obt_display, edge[i]->win, ButtonPressMask | ButtonReleaseMask
+                     | EnterWindowMask | LeaveWindowMask);
         XMapWindow(obt_display, edge[i]->win);
 
         stacking_add(INTERNAL_AS_WINDOW(edge[i]));
index aca69cc36aab7380ea9dcee15611f6e63e8c12d3..c5426cf595b576a1a080dc61575177e773513a47 100644 (file)
@@ -87,6 +87,7 @@ static void event_process(const XEvent *e, gpointer data);
 static void event_handle_root(XEvent *e);
 static gboolean event_handle_menu_input(XEvent *e);
 static void event_handle_menu(ObMenuFrame *frame, XEvent *e);
+static void event_handle_internal(ObInternalWindow *internal, XEvent *e);
 static gboolean event_handle_prompt(ObPrompt *p, XEvent *e);
 static void event_handle_dock(ObDock *s, XEvent *e);
 static void event_handle_dockapp(ObDockApp *app, XEvent *e);
@@ -470,6 +471,7 @@ static void event_process(const XEvent *ec, gpointer data)
     ObWindow *obwin = NULL;
     ObMenuFrame *menu = NULL;
     ObPrompt *prompt = NULL;
+    ObInternalWindow *internal = NULL;
 
     /* make a copy we can mangle */
     ee = *ec;
@@ -492,7 +494,7 @@ static void event_process(const XEvent *ec, gpointer data)
             menu = WINDOW_AS_MENUFRAME(obwin);
             break;
         case OB_WINDOW_CLASS_INTERNAL:
-            /* we don't do anything with events directly on these windows */
+            internal = WINDOW_AS_INTERNAL(obwin);
             break;
         case OB_WINDOW_CLASS_PROMPT:
             prompt = WINDOW_AS_PROMPT(obwin);
@@ -649,6 +651,8 @@ static void event_process(const XEvent *ec, gpointer data)
         event_handle_dock(dock, e);
     else if (menu)
         event_handle_menu(menu, e);
+    else if (internal)
+        event_handle_internal(internal, e);
     else if (window == obt_root(ob_screen))
         event_handle_root(e);
     else if (e->type == MapRequest)
@@ -1861,6 +1865,12 @@ static void event_handle_menu(ObMenuFrame *frame, XEvent *ev)
     }
 }
 
+static void event_handle_internal(ObInternalWindow *internal, XEvent *ev)
+{
+    printf("haha!\n");
+    fflush(stdout);
+}
+
 static void event_handle_user_input(ObClient *client, XEvent *e)
 {
     g_assert(e->type == ButtonPress || e->type == ButtonRelease ||
index 23d4473cecbb65f7716e497ea54907fac1476a02..0f585ab3717d1324d0111f46e7339c6dca88bca4 100644 (file)
@@ -1330,7 +1330,6 @@ ObFrameContext frame_context(ObClient *client, Window win, gint x, gint y)
     if (moveresize_in_progress)
         return OB_FRAME_CONTEXT_MOVE_RESIZE;
 
-#warning figure out how to return the edge context from here
     if (win == obt_root(ob_screen))
         return OB_FRAME_CONTEXT_ROOT ;
     if (client == NULL) return OB_FRAME_CONTEXT_NONE;