skip enter events caused by temporarily raising windows during alt-tab. also caused by the focus cycle indicator moving
Dana Jansens danakj@orodu.net
2 files changed,
12 insertions(+),
0 deletions(-)
M
openbox/focus_cycle_indicator.c
→
openbox/focus_cycle_indicator.c
@@ -158,6 +158,7 @@ frame_adjust_focus(c->frame, TRUE);
*/ gint x, y, w, h; gint wt, wl, wr, wb; + gulong ignore_start; wt = wl = wr = wb = FOCUS_INDICATOR_WIDTH;@@ -165,6 +166,9 @@ x = c->frame->area.x;
y = c->frame->area.y; 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);@@ -269,6 +273,8 @@ XMapWindow(ob_display, focus_indicator.top.win);
XMapWindow(ob_display, focus_indicator.left.win); XMapWindow(ob_display, focus_indicator.right.win); XMapWindow(ob_display, focus_indicator.bottom.win); + + event_end_ignore_all_enters(ignore_start); visible = TRUE; }
M
openbox/stacking.c
→
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 @@ break;
} 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 @@ {
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;