add some comments and asserts to make sure I don't ever add this bug again
Dana Jansens danakj@orodu.net
3 files changed,
13 insertions(+),
3 deletions(-)
M
openbox/focus.c
→
openbox/focus.c
@@ -34,7 +34,6 @@ mapped. */
XSetWindowAttributes attrib; focus_client = NULL; - focus_cycle_popup = popup_new(TRUE); attrib.override_redirect = TRUE; focus_backup = XCreateWindow(ob_display, ob_root,@@ -42,6 +41,10 @@ -100, -100, 1, 1, 0,
CopyFromParent, InputOutput, CopyFromParent, CWOverrideRedirect, &attrib); XMapRaised(ob_display, focus_backup); + + /* do this *after* focus_backup is created, since it is used for + stacking */ + focus_cycle_popup = popup_new(TRUE); /* start with nothing focused */ focus_set_client(NULL);
M
openbox/openbox.c
→
openbox/openbox.c
@@ -197,6 +197,9 @@ in this group */
timer_startup(); event_startup(); grab_startup(); + /* focus_backup is used for stacking, so this needs to come before + anything that calls stacking_add */ + focus_startup(); window_startup(); plugin_startup(); /* load the plugins specified in the pluginrc */@@ -218,7 +221,6 @@ exit_with_error("Unable to load a theme.");
frame_startup(); moveresize_startup(); - focus_startup(); screen_startup(); group_startup(); client_startup();
M
openbox/stacking.c
→
openbox/stacking.c
@@ -61,6 +61,8 @@ win[0] = window_top(g_list_previous(before)->data);
for (i = 1, it = wins; it; ++i, it = g_list_next(it)) { win[i] = window_top(it->data); + g_assert(win[i] != None); /* better not call stacking shit before + setting your top level window value */ stacking_list = g_list_insert_before(stacking_list, before, it->data); }@@ -253,7 +255,10 @@
void stacking_add(ObWindow *win) { StackLayer l; - GList *wins, *it; + GList *wins; + + g_assert(focus_backup != None); /* make sure I dont break this in the + future */ l = window_layer(win); wins = g_list_append(NULL, win); /* list of 1 element */