From 4ee72e57564627b9339289808da9bc1c8058c79f Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 27 Jun 2010 00:19:37 +0200 Subject: [PATCH] make sure the screen_support_win does not end up getting managed as an "unmanaged" window also --- openbox/screen.c | 25 ++++++++++++++++++------- openbox/stacking.c | 1 + 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/openbox/screen.c b/openbox/screen.c index 8326a72e..9d5451ae 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -54,6 +54,12 @@ ButtonPressMask | ButtonReleaseMask | \ SubstructureNotifyMask) +#define SSW_X -100 +#define SSW_Y -100 +#define SSW_W 1 +#define SSW_H 1 +#define SSW_B 0 + static gboolean screen_validate_layout(ObDesktopLayout *l); static gboolean replace_wm(void); static void screen_tell_ksplash(void); @@ -171,14 +177,12 @@ gboolean screen_annex(void) pid_t pid; gint i, num_support; gulong *supported; - const Rect r = {-100, -100, 1, 1}; - const gint b = 0; /* create the netwm support window */ attrib.override_redirect = TRUE; attrib.event_mask = PropertyChangeMask; screen_support_win = XCreateWindow(obt_display, obt_root(ob_screen), - r.x, r.y, r.width, r.height, b, 0, + SSW_X, SSW_Y, SSW_W, SSW_H, SSW_B, 0, InputOnly, CopyFromParent, CWEventMask | CWOverrideRedirect, &attrib); @@ -201,10 +205,6 @@ gboolean screen_annex(void) return FALSE; } - screen_support_obwin = window_internal_new(screen_support_win, &r, b, 0); - screen_support_obwin->layer = OB_STACKING_LAYER_TOPMOST; - stacking_set_topmost(INTERNAL_AS_WINDOW(screen_support_obwin)); - screen_set_root_cursor(); /* set the OPENBOX_PID hint */ @@ -369,6 +369,16 @@ void screen_startup(gboolean reconfig) gchar **names = NULL; guint32 d; gboolean namesexist = FALSE; + const Rect r = {SSW_X, SSW_Y, SSW_W, SSW_H}; + + if (!reconfig) { + screen_support_obwin = window_internal_new(screen_support_win, + &r, SSW_B, 0); + screen_support_obwin->layer = OB_STACKING_LAYER_TOPMOST; + stacking_set_topmost(INTERNAL_AS_WINDOW(screen_support_obwin)); + window_add(&screen_support_win, + INTERNAL_AS_WINDOW(screen_support_obwin)); + } desktop_popup = pager_popup_new(); desktop_popup_perm = FALSE; @@ -484,6 +494,7 @@ void screen_shutdown(gboolean reconfig) XDestroyWindow(obt_display, screen_support_win); stacking_remove(INTERNAL_AS_WINDOW(screen_support_obwin)); + window_remove(screen_support_win); window_free(INTERNAL_AS_WINDOW(screen_support_obwin)); g_strfreev(screen_desktop_names); diff --git a/openbox/stacking.c b/openbox/stacking.c index 8b478f23..a8dac998 100644 --- a/openbox/stacking.c +++ b/openbox/stacking.c @@ -511,6 +511,7 @@ void stacking_add(ObWindow *win) if (WINDOW_IS_UNMANAGED(win)) { ObUNode *n = g_slice_new(ObUNode); + g_assert(window_top(win) != screen_support_win); n->um = WINDOW_AS_UNMANAGED(win); n->belowme = stacking_list; stacking_ulist = g_list_prepend(stacking_ulist, n); -- 2.34.1