all repos — openbox @ 3febcbb9ae6a31edbd64a86f0045148bb052fcff

openbox fork - make it a bit more like ryudo

skip enter events caused by temporarily raising windows during alt-tab.  also caused by the focus cycle indicator moving
Dana Jansens danakj@orodu.net
commit

3febcbb9ae6a31edbd64a86f0045148bb052fcff

parent

aa5f7e7dca0054c0a015e34eeae128890901627f

2 files changed, 12 insertions(+), 0 deletions(-)

jump to
M openbox/focus_cycle_indicator.copenbox/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.copenbox/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;