X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Ffocus_cycle_indicator.c;h=7c5d5290539cb46c38d1bd95760e0ad59d3c7671;hb=ee0477d167a3b87618b82d1080fd37e4403e6d2e;hp=5a6a1029efc1a0d1c44d6cf236709aa4930f694b;hpb=ea371936cec5f1e7f0eaed698b2cff6fab42f210;p=chaz%2Fopenbox diff --git a/openbox/focus_cycle_indicator.c b/openbox/focus_cycle_indicator.c index 5a6a1029..7c5d5290 100644 --- a/openbox/focus_cycle_indicator.c +++ b/openbox/focus_cycle_indicator.c @@ -18,6 +18,7 @@ */ #include "focus_cycle.h" +#include "focus_cycle_indicator.h" #include "client.h" #include "openbox.h" #include "frame.h" @@ -29,7 +30,7 @@ #define FOCUS_INDICATOR_WIDTH 6 -struct +static struct { InternalWindow top; InternalWindow left; @@ -82,6 +83,14 @@ void focus_cycle_indicator_startup(gboolean reconfig) stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.left)); stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.right)); stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.bottom)); + g_hash_table_insert(window_map, &focus_indicator.top.win, + &focus_indicator.top); + g_hash_table_insert(window_map, &focus_indicator.left.win, + &focus_indicator.left); + g_hash_table_insert(window_map, &focus_indicator.right.win, + &focus_indicator.right); + g_hash_table_insert(window_map, &focus_indicator.bottom.win, + &focus_indicator.bottom); color_white = RrColorNew(ob_rr_inst, 0xff, 0xff, 0xff); @@ -108,6 +117,11 @@ void focus_cycle_indicator_shutdown(gboolean reconfig) RrAppearanceFree(a_focus_indicator); + g_hash_table_remove(window_map, &focus_indicator.top.win); + g_hash_table_remove(window_map, &focus_indicator.left.win); + g_hash_table_remove(window_map, &focus_indicator.right.win); + g_hash_table_remove(window_map, &focus_indicator.bottom.win); + stacking_remove(INTERNAL_AS_WINDOW(&focus_indicator.top)); stacking_remove(INTERNAL_AS_WINDOW(&focus_indicator.left)); stacking_remove(INTERNAL_AS_WINDOW(&focus_indicator.right)); @@ -144,6 +158,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; @@ -152,6 +167,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(ob_display, focus_indicator.top.win, x, y, w, h); a_focus_indicator->texture[0].data.lineart.x1 = 0; @@ -256,6 +274,8 @@ void focus_cycle_draw_indicator(ObClient *c) XMapWindow(ob_display, focus_indicator.right.win); XMapWindow(ob_display, focus_indicator.bottom.win); + event_end_ignore_all_enters(ignore_start); + visible = TRUE; } }