From ef86b56e1b7f7ae4dc62deba6b853ede0de5b0d9 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Wed, 27 Feb 2008 16:53:43 +0100 Subject: [PATCH] Save screen_last_desktop to the root prop _OB_LAST_DESKTOP. --- obt/prop.c | 1 + obt/prop.h | 1 + openbox/screen.c | 7 ++++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/obt/prop.c b/obt/prop.c index 0f0259ef..517803f7 100644 --- a/obt/prop.c +++ b/obt/prop.c @@ -190,6 +190,7 @@ void obt_prop_startup(void) CREATE_(OB_CONFIG_FILE); CREATE_(OB_WM_ACTION_UNDECORATE); CREATE_(OB_WM_STATE_UNDECORATED); + CREATE_(OB_LAST_DESKTOP); CREATE_(OB_CONTROL); CREATE_(OB_VERSION); CREATE_(OB_APP_ROLE); diff --git a/obt/prop.h b/obt/prop.h index bc0a6d98..28cd7225 100644 --- a/obt/prop.h +++ b/obt/prop.h @@ -211,6 +211,7 @@ typedef enum { OBT_PROP_OPENBOX_PID, /* this is depreecated in favour of ob_control */ OBT_PROP_OB_THEME, OBT_PROP_OB_CONFIG_FILE, + OBT_PROP_OB_LAST_DESKTOP, OBT_PROP_OB_CONTROL, OBT_PROP_OB_VERSION, OBT_PROP_OB_APP_ROLE, diff --git a/openbox/screen.c b/openbox/screen.c index 0bfc4c69..d1fe8810 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -440,7 +440,11 @@ void screen_startup(gboolean reconfig) else screen_set_desktop(MIN(config_screen_firstdesk, screen_num_desktops) - 1, FALSE); - screen_last_desktop = screen_desktop; + OBT_PROP_GET32(obt_root(ob_screen), OB_LAST_DESKTOP, CARDINAL, &screen_last_desktop); + if (screen_last_desktop < 0 || screen_last_desktop >= screen_num_desktops) { + screen_last_desktop = screen_desktop; + OBT_PROP_SET32(obt_root(ob_screen), OB_LAST_DESKTOP, CARDINAL, screen_last_desktop); + } /* don't start in showing-desktop mode */ screen_showing_desktop = FALSE; @@ -603,6 +607,7 @@ static void screen_fallback_focus(void) static gboolean last_desktop_func(gpointer data) { screen_desktop_timeout = TRUE; + OBT_PROP_SET32(obt_root(ob_screen), OB_LAST_DESKTOP, CARDINAL, screen_last_desktop); screen_desktop_timer = 0; return FALSE; /* don't repeat */ } -- 2.34.1