From: Mikael Magnusson Date: Sun, 10 Feb 2008 21:11:52 +0000 (+0100) Subject: Make edges more likely to eventually do something useful. X-Git-Tag: mikabox-3.4.7.2~41^2~1 X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=fa8ad9eeb498a7c7175c74ac837888f284b2871f;p=mikachu%2Fopenbox.git Make edges more likely to eventually do something useful. --- diff --git a/openbox/edges.c b/openbox/edges.c index d0f38a2f..f2409429 100644 --- a/openbox/edges.c +++ b/openbox/edges.c @@ -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])); diff --git a/openbox/event.c b/openbox/event.c index aca69cc3..c5426cf5 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -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 || diff --git a/openbox/frame.c b/openbox/frame.c index 23d4473c..0f585ab3 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -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;