Updating branch refs/heads/master to d154ab127af75a4e1e7b37351dd7e48491a4f69e (commit) from 7da8c081dc4dd01a15e38475996613ca2f140393 (commit)
commit d154ab127af75a4e1e7b37351dd7e48491a4f69e Author: Olivier Fourdan <four...@xfce.org> Date: Fri Oct 21 08:47:04 2011 +0200 Upon restart, restore the previous selected workspace. src/hints.c | 31 +++++++++++++++++++++++++------ src/hints.h | 5 +++++ src/main.c | 2 +- src/workspaces.c | 6 +----- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/hints.c b/src/hints.c index 41fd99c..45c243c 100644 --- a/src/hints.c +++ b/src/hints.c @@ -558,15 +558,22 @@ setNetFullscreenMonitors (DisplayInfo *display_info, Window w, gint top, gint bo XA_CARDINAL, 32, PropModeReplace, (unsigned char *) data, 4); } +int +getNetCurrentDesktop (DisplayInfo *display_info, Window root) +{ + long ws; + + TRACE ("entering getNetCurrentDesktop"); + getHint (display_info, root, NET_CURRENT_DESKTOP, &ws); + return (int) ws; +} + void -initNetDesktopInfo (DisplayInfo *display_info, Window root, int workspace, int width, int height) +setNetCurrentDesktop (DisplayInfo *display_info, Window root, int workspace) { unsigned long data[2]; - TRACE ("entering initNetDesktopInfo"); - data[0] = width; - data[1] = height; - XChangeProperty (display_info->dpy, root, display_info->atoms[NET_DESKTOP_GEOMETRY], - XA_CARDINAL, 32, PropModeReplace, (unsigned char *) data, 2); + TRACE ("entering setNetCurrentDesktop"); + data[0] = 0; data[1] = 0; XChangeProperty (display_info->dpy, root, display_info->atoms[NET_DESKTOP_VIEWPORT], @@ -577,6 +584,18 @@ initNetDesktopInfo (DisplayInfo *display_info, Window root, int workspace, int w } void +initNetDesktopInfo (DisplayInfo *display_info, Window root, int workspace, int width, int height) +{ + unsigned long data[2]; + TRACE ("entering initNetDesktopInfo"); + data[0] = width; + data[1] = height; + XChangeProperty (display_info->dpy, root, display_info->atoms[NET_DESKTOP_GEOMETRY], + XA_CARDINAL, 32, PropModeReplace, (unsigned char *) data, 2); + setNetCurrentDesktop (display_info, root, workspace); +} + +void setUTF8StringHint (DisplayInfo *display_info, Window w, int atom_id, const gchar *val) { g_return_if_fail ((atom_id >= 0) && (atom_id < ATOM_COUNT)); diff --git a/src/hints.h b/src/hints.h index 70a5c80..c106247 100644 --- a/src/hints.h +++ b/src/hints.h @@ -195,6 +195,11 @@ void setNetFullscreenMonitors (DisplayInfo *, gint, gint, gint); +int getNetCurrentDesktop (DisplayInfo *, + Window root); +void setNetCurrentDesktop (DisplayInfo *, + Window, + int); void initNetDesktopInfo (DisplayInfo *, Window, int, diff --git a/src/main.c b/src/main.c index 1eb755b..15eae37 100644 --- a/src/main.c +++ b/src/main.c @@ -482,7 +482,7 @@ initialize (gint compositor_mode, gboolean replace_wm) sn_init_display (screen_info); myDisplayAddScreen (main_display_info, screen_info); - screen_info->current_ws = 0; + screen_info->current_ws = getNetCurrentDesktop (main_display_info, screen_info->xroot); setUTF8StringHint (main_display_info, screen_info->xfwm4_win, NET_WM_NAME, "Xfwm4"); setNetSupportedHint (main_display_info, screen_info->xroot, screen_info->xfwm4_win); initNetDesktopInfo (main_display_info, screen_info->xroot, screen_info->current_ws, diff --git a/src/workspaces.c b/src/workspaces.c index ef3fc15..8625249 100644 --- a/src/workspaces.c +++ b/src/workspaces.c @@ -246,7 +246,6 @@ workspaceSwitch (ScreenInfo *screen_info, gint new_ws, Client * c2, gboolean upd Window dr, window; gint rx, ry, wx, wy; unsigned int mask; - unsigned long data[1]; g_return_if_fail (screen_info != NULL); @@ -368,10 +367,7 @@ workspaceSwitch (ScreenInfo *screen_info, gint new_ws, Client * c2, gboolean upd } } - data[0] = new_ws; - XChangeProperty (myScreenGetXDisplay (screen_info), screen_info->xroot, - display_info->atoms[NET_CURRENT_DESKTOP], XA_CARDINAL, 32, - PropModeReplace, (unsigned char *) data, 1); + setNetCurrentDesktop (display_info, screen_info->xroot, new_ws); if (!(screen_info->params->click_to_focus)) { if (!(c2) && (XQueryPointer (myScreenGetXDisplay (screen_info), screen_info->xroot, &dr, &window, &rx, &ry, &wx, &wy, &mask))) _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits