X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fscreen.c;h=91bbb4e75c694f9bac4fbefd87a3141ff1ed366f;hb=8412fb0297ce30cdbbada464ddfb18508ace39ad;hp=353d2de077fbe2b4e59b146ca2d7d5580f75d7a6;hpb=fd77a0a7b3f892925f203287b8b46c6ec9be94ea;p=chaz%2Fopenbox diff --git a/openbox/screen.c b/openbox/screen.c index 353d2de0..91bbb4e7 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -206,7 +206,7 @@ gboolean screen_annex(void) NET_SUPPORTING_WM_CHECK, WINDOW, screen_support_win); /* set properties on the supporting window */ - OBT_PROP_SETS(screen_support_win, NET_WM_NAME, utf8, "Openbox"); + OBT_PROP_SETS(screen_support_win, NET_WM_NAME, "Openbox"); OBT_PROP_SET32(screen_support_win, NET_SUPPORTING_WM_CHECK, WINDOW, screen_support_win); @@ -249,6 +249,7 @@ gboolean screen_annex(void) supported[i++] = OBT_PROP_ATOM(NET_WM_WINDOW_TYPE_DIALOG); supported[i++] = OBT_PROP_ATOM(NET_WM_WINDOW_TYPE_NORMAL); supported[i++] = OBT_PROP_ATOM(NET_WM_ALLOWED_ACTIONS); + supported[i++] = OBT_PROP_ATOM(NET_WM_WINDOW_OPACITY); supported[i++] = OBT_PROP_ATOM(NET_WM_ACTION_MOVE); supported[i++] = OBT_PROP_ATOM(NET_WM_ACTION_RESIZE); supported[i++] = OBT_PROP_ATOM(NET_WM_ACTION_MINIMIZE); @@ -311,7 +312,7 @@ gboolean screen_annex(void) NET_SUPPORTED, ATOM, supported, num_support); g_free(supported); - OBT_PROP_SETS(RootWindow(obt_display, ob_screen), OB_VERSION, utf8, + OBT_PROP_SETS(RootWindow(obt_display, ob_screen), OB_VERSION, OPENBOX_VERSION); screen_tell_ksplash(); @@ -375,7 +376,7 @@ void screen_startup(gboolean reconfig) screen_resize(); /* have names already been set for the desktops? */ - if (OBT_PROP_GETSS(obt_root(ob_screen), NET_DESKTOP_NAMES, utf8, &names)) { + if (OBT_PROP_GETSS_UTF8(obt_root(ob_screen), NET_DESKTOP_NAMES, &names)) { g_strfreev(names); namesexist = TRUE; } @@ -397,7 +398,7 @@ void screen_startup(gboolean reconfig) /* set the root window property */ OBT_PROP_SETSS(obt_root(ob_screen), - NET_DESKTOP_NAMES, utf8, (const gchar*const*)names); + NET_DESKTOP_NAMES, (const gchar*const*)names); g_strfreev(names); } @@ -479,7 +480,6 @@ void screen_shutdown(gboolean reconfig) void screen_resize(void) { - static gint oldw = 0, oldh = 0; gint w, h; GList *it; gulong geometry[2]; @@ -487,10 +487,6 @@ void screen_resize(void) w = WidthOfScreen(ScreenOfDisplay(obt_display, ob_screen)); h = HeightOfScreen(ScreenOfDisplay(obt_display, ob_screen)); - if (w == oldw && h == oldh) return; - - oldw = w; oldh = h; - /* Set the _NET_DESKTOP_GEOMETRY hint */ screen_physical_size.width = geometry[0] = w; screen_physical_size.height = geometry[1] = h; @@ -500,7 +496,7 @@ void screen_resize(void) if (ob_state() != OB_STATE_RUNNING) return; - screen_update_areas(); + /* this calls screen_update_areas(), which we need ! */ dock_configure(); for (it = client_list; it; it = g_list_next(it)) @@ -1182,7 +1178,7 @@ void screen_update_desktop_names(void) screen_desktop_names = NULL; if (OBT_PROP_GETSS(obt_root(ob_screen), - NET_DESKTOP_NAMES, utf8, &screen_desktop_names)) + NET_DESKTOP_NAMES, &screen_desktop_names)) for (i = 0; screen_desktop_names[i] && i < screen_num_desktops; ++i); else i = 0; @@ -1209,7 +1205,7 @@ void screen_update_desktop_names(void) /* if we changed any names, then set the root property so we can all agree on the names */ OBT_PROP_SETSS(obt_root(ob_screen), NET_DESKTOP_NAMES, - utf8, (const gchar*const*)screen_desktop_names); + (const gchar*const*)screen_desktop_names); } /* resize the pager for these names */ @@ -1458,10 +1454,8 @@ void screen_update_areas(void) dims, 4 * screen_num_desktops); /* the area has changed, adjust all the windows if they need it */ - for (it = onscreen; it; it = g_list_next(it)) { - client_move_onscreen(it->data, FALSE); + for (it = onscreen; it; it = g_list_next(it)) client_reconfigure(it->data, FALSE); - } g_free(dims); } @@ -1653,7 +1647,7 @@ guint screen_find_monitor(const Rect *search) } } } - return most; + return most < screen_num_monitors ? most : screen_monitor_primary(FALSE); } const Rect* screen_physical_area_all_monitors(void) @@ -1754,3 +1748,12 @@ gboolean screen_pointer_pos(gint *x, gint *y) } return ret; } + +gboolean screen_compare_desktops(guint a, guint b) +{ + if (a == DESKTOP_ALL) + a = screen_desktop; + if (b == DESKTOP_ALL) + b = screen_desktop; + return a == b; +}