From 99187dba27410e44ca2d4ad37a9369b459404363 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 01b81acc..ca5c19d4 100644 --- a/obt/prop.c +++ b/obt/prop.c @@ -189,6 +189,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); } diff --git a/obt/prop.h b/obt/prop.h index f6c42c10..1107ac8b 100644 --- a/obt/prop.h +++ b/obt/prop.h @@ -210,6 +210,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_NUM_ATOMS diff --git a/openbox/screen.c b/openbox/screen.c index 99912da7..6c4d71b8 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -424,7 +424,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; @@ -589,6 +593,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); return FALSE; } -- 2.34.1