X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Ffocus_cycle_indicator.c;h=895279037eb2fce32d1e13c6d9636cfb5fd92c20;hb=HEAD;hp=4ee456b9a723b8c66ed0bcfdd93dc3830c481225;hpb=73c9a0e06b0248d430aac1c2c91f44a6a9dbac04;p=chaz%2Fopenbox diff --git a/openbox/focus_cycle_indicator.c b/openbox/focus_cycle_indicator.c index 4ee456b9..89527903 100644 --- a/openbox/focus_cycle_indicator.c +++ b/openbox/focus_cycle_indicator.c @@ -23,7 +23,7 @@ #include "openbox.h" #include "frame.h" #include "event.h" -#include "render/render.h" +#include "obrender/render.h" #include #include @@ -59,10 +59,10 @@ void focus_cycle_indicator_startup(gboolean reconfig) if (reconfig) return; - focus_indicator.top.obwin.type = OB_WINDOW_CLASS_INTERNALWINDOW; - focus_indicator.left.obwin.type = OB_WINDOW_CLASS_INTERNALWINDOW; - focus_indicator.right.obwin.type = OB_WINDOW_CLASS_INTERNALWINDOW; - focus_indicator.bottom.obwin.type = OB_WINDOW_CLASS_INTERNALWINDOW; + focus_indicator.top.type = OB_WINDOW_CLASS_INTERNAL; + focus_indicator.left.type = OB_WINDOW_CLASS_INTERNAL; + focus_indicator.right.type = OB_WINDOW_CLASS_INTERNAL; + focus_indicator.bottom.type = OB_WINDOW_CLASS_INTERNAL; attr.override_redirect = True; attr.background_pixel = BlackPixel(obt_display, ob_screen); @@ -79,18 +79,18 @@ void focus_cycle_indicator_startup(gboolean reconfig) create_window(obt_root(ob_screen), CWOverrideRedirect | CWBackPixel, &attr); - stacking_add(INTERNALWINDOW_AS_WINDOW(&focus_indicator.top)); - stacking_add(INTERNALWINDOW_AS_WINDOW(&focus_indicator.left)); - stacking_add(INTERNALWINDOW_AS_WINDOW(&focus_indicator.right)); - stacking_add(INTERNALWINDOW_AS_WINDOW(&focus_indicator.bottom)); + stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.top)); + stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.left)); + stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.right)); + stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.bottom)); window_add(&focus_indicator.top.window, - INTERNALWINDOW_AS_WINDOW(&focus_indicator.top)); + INTERNAL_AS_WINDOW(&focus_indicator.top)); window_add(&focus_indicator.left.window, - INTERNALWINDOW_AS_WINDOW(&focus_indicator.left)); + INTERNAL_AS_WINDOW(&focus_indicator.left)); window_add(&focus_indicator.right.window, - INTERNALWINDOW_AS_WINDOW(&focus_indicator.right)); + INTERNAL_AS_WINDOW(&focus_indicator.right)); window_add(&focus_indicator.bottom.window, - INTERNALWINDOW_AS_WINDOW(&focus_indicator.bottom)); + INTERNAL_AS_WINDOW(&focus_indicator.bottom)); color_white = RrColorNew(ob_rr_inst, 0xff, 0xff, 0xff); @@ -122,10 +122,10 @@ void focus_cycle_indicator_shutdown(gboolean reconfig) window_remove(focus_indicator.right.window); window_remove(focus_indicator.bottom.window); - stacking_remove(INTERNALWINDOW_AS_WINDOW(&focus_indicator.top)); - stacking_remove(INTERNALWINDOW_AS_WINDOW(&focus_indicator.left)); - stacking_remove(INTERNALWINDOW_AS_WINDOW(&focus_indicator.right)); - stacking_remove(INTERNALWINDOW_AS_WINDOW(&focus_indicator.bottom)); + stacking_remove(INTERNAL_AS_WINDOW(&focus_indicator.top)); + stacking_remove(INTERNAL_AS_WINDOW(&focus_indicator.left)); + stacking_remove(INTERNAL_AS_WINDOW(&focus_indicator.right)); + stacking_remove(INTERNAL_AS_WINDOW(&focus_indicator.bottom)); XDestroyWindow(obt_display, focus_indicator.top.window); XDestroyWindow(obt_display, focus_indicator.left.window); @@ -133,6 +133,12 @@ void focus_cycle_indicator_shutdown(gboolean reconfig) XDestroyWindow(obt_display, focus_indicator.bottom.window); } +void focus_cycle_update_indicator(ObClient *c) +{ + if (visible) + focus_cycle_draw_indicator(c); +} + void focus_cycle_draw_indicator(ObClient *c) { if (!c && visible) { @@ -158,6 +164,7 @@ void focus_cycle_draw_indicator(ObClient *c) */ gint x, y, w, h; gint wt, wl, wr, wb; + gulong ignore_start; wt = wl = wr = wb = FOCUS_INDICATOR_WIDTH; @@ -166,6 +173,9 @@ void focus_cycle_draw_indicator(ObClient *c) w = c->frame->area.width; h = wt; + /* kill enter events cause by this moving */ + ignore_start = event_start_ignore_all_enters(); + XMoveResizeWindow(obt_display, focus_indicator.top.window, x, y, w, h); a_focus_indicator->texture[0].data.lineart.x1 = 0; @@ -270,6 +280,8 @@ void focus_cycle_draw_indicator(ObClient *c) XMapWindow(obt_display, focus_indicator.right.window); XMapWindow(obt_display, focus_indicator.bottom.window); + event_end_ignore_all_enters(ignore_start); + visible = TRUE; } }