X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fscreen.c;h=773cb75f38c07d0d160ca426b1ea1a2f57efbb90;hb=3263845459d15da683b7cab92fb856acbdf2800e;hp=de3203e327722eed250a16c090489b369c8f899d;hpb=5563e251c36a1fbda703cf4bc3c8c6ae543829bd;p=chaz%2Fopenbox diff --git a/openbox/screen.c b/openbox/screen.c index de3203e3..773cb75f 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -58,7 +58,7 @@ static void screen_fallback_focus(void); guint screen_num_desktops; guint screen_num_monitors; guint screen_desktop; -guint screen_last_desktop = 1; +guint screen_last_desktop; gboolean screen_showing_desktop; ObDesktopLayout screen_desktop_layout; gchar **screen_desktop_names; @@ -290,6 +290,7 @@ gboolean screen_annex(void) supported[i++] = OBT_PROP_ATOM(OB_WM_STATE_UNDECORATED); 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_CONTROL); g_assert(i == num_support); @@ -393,6 +394,10 @@ void screen_startup(gboolean reconfig) NET_NUMBER_OF_DESKTOPS, CARDINAL, &d)) { if (d != config_desktops_num) { + /* TRANSLATORS: If you need to specify a different order of the + arguments, you can use %1$d for the first one and %2$d for the + second one. For example, + "The current session has %2$d desktops, but Openbox is configured for %1$d ..." */ g_warning(_("Openbox is configured for %d desktops, but the current session has %d. Overriding the Openbox configuration."), config_desktops_num, d); } @@ -605,10 +610,15 @@ void screen_set_desktop(guint num, gboolean dofocus) /* If screen_desktop_timeout is true, then we've been on this desktop long enough and we can save it as the last desktop. */ - /* save the "last desktop" as the "old desktop" */ - screen_old_desktop = screen_last_desktop; - /* save the desktop we're coming from as the "last desktop" */ - screen_last_desktop = previous; + if (screen_last_desktop == previous) + /* this is the startup state only */ + screen_old_desktop = screen_desktop; + else { + /* save the "last desktop" as the "old desktop" */ + screen_old_desktop = screen_last_desktop; + /* save the desktop we're coming from as the "last desktop" */ + screen_last_desktop = previous; + } } else { /* If screen_desktop_timeout is false, then we just got to this desktop