From 3febcbb9ae6a31edbd64a86f0045148bb052fcff Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 25 Jan 2008 00:35:31 -0500 Subject: [PATCH] skip enter events caused by temporarily raising windows during alt-tab. also caused by the focus cycle indicator moving --- openbox/focus_cycle_indicator.c | 6 ++++++ openbox/stacking.c | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/openbox/focus_cycle_indicator.c b/openbox/focus_cycle_indicator.c index 0aa65a75..7c5d5290 100644 --- a/openbox/focus_cycle_indicator.c +++ b/openbox/focus_cycle_indicator.c @@ -158,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; @@ -166,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; @@ -270,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; } } diff --git a/openbox/stacking.c b/openbox/stacking.c index b18c02af..63819ae2 100644 --- a/openbox/stacking.c +++ b/openbox/stacking.c @@ -114,6 +114,7 @@ void stacking_temp_raise(ObWindow *window) { Window win[2]; GList *it; + gulong start; /* don't use this for internal windows..! it would lower them.. */ g_assert(window_layer(window) < OB_STACKING_LAYER_INTERNAL); @@ -129,7 +130,9 @@ void stacking_temp_raise(ObWindow *window) } win[1] = window_top(window); + start = event_start_ignore_all_enters(); XRestackWindows(ob_display, win, 2); + event_end_ignore_all_enters(start); pause_changes = TRUE; } @@ -139,12 +142,15 @@ void stacking_restore(void) Window *win; GList *it; gint i; + gulong start; win = g_new(Window, g_list_length(stacking_list) + 1); win[0] = screen_support_win; for (i = 1, it = stacking_list; it; ++i, it = g_list_next(it)) win[i] = window_top(it->data); + start = event_start_ignore_all_enters(); XRestackWindows(ob_display, win, i); + event_end_ignore_all_enters(start); g_free(win); pause_changes = FALSE; -- 2.39.2