From 62bcd7b286b7a398357ac3c124b84bc7c558e9dc 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 | 8 +++++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/obt/prop.c b/obt/prop.c index 0cecccf4..efcfa21d 100644 --- a/obt/prop.c +++ b/obt/prop.c @@ -191,6 +191,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 acb5c956..06ed9067 100644 --- a/obt/prop.h +++ b/obt/prop.h @@ -213,6 +213,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 28fd1609..cb690acc 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -298,6 +298,7 @@ gboolean screen_annex(void) supported[i++] = OBT_PROP_ATOM(OPENBOX_PID); supported[i++] = OBT_PROP_ATOM(OB_THEME); supported[i++] = OBT_PROP_ATOM(OB_CONFIG_FILE); + supported[i++] = OBT_PROP_ATOM(OB_LAST_DESKTOP); supported[i++] = OBT_PROP_ATOM(OB_CONTROL); supported[i++] = OBT_PROP_ATOM(OB_VERSION); supported[i++] = OBT_PROP_ATOM(OB_APP_ROLE); @@ -405,7 +406,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_show_desktop_mode = SCREEN_SHOW_DESKTOP_NO; @@ -565,6 +570,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.39.2