X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fscreen.c;h=221e338d0dded4a154de31c83970d2d16c63671f;hb=f857b0eb99471c9123d6e641afafeab5f47700e2;hp=dde0443ec63d7335cbc80d15cb6874c47e825afd;hpb=73c9a0e06b0248d430aac1c2c91f44a6a9dbac04;p=chaz%2Fopenbox diff --git a/openbox/screen.c b/openbox/screen.c index dde0443e..221e338d 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); @@ -391,7 +392,17 @@ void screen_startup(gboolean reconfig) screen_num_desktops = 0; if (OBT_PROP_GET32(obt_root(ob_screen), 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); + } screen_set_num_desktops(d); + } /* restore from session if possible */ else if (session_num_desktops) screen_set_num_desktops(session_num_desktops); @@ -599,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 @@ -656,7 +672,10 @@ void screen_set_desktop(guint num, gboolean dofocus) obt_main_loop_timeout_add(ob_main_loop, REMEMBER_LAST_DESKTOP_TIME, last_desktop_func, NULL, NULL, NULL); - ob_debug("Moving to desktop %d\n", num+1); + ob_debug("Moving to desktop %d", num+1); + + if (ob_state() == OB_STATE_RUNNING) + screen_show_desktop_popup(screen_desktop); /* ignore enter events caused by the move */ ignore_start = event_start_ignore_all_enters(); @@ -688,9 +707,6 @@ void screen_set_desktop(guint num, gboolean dofocus) if (event_curtime != CurrentTime) screen_desktop_user_time = event_curtime; - - if (ob_state() == OB_STATE_RUNNING) - screen_show_desktop_popup(screen_desktop); } void screen_add_desktop(gboolean current) @@ -713,7 +729,7 @@ void screen_add_desktop(gboolean current) parent - which will have to be on the same desktop */ !client_direct_parent(c)) { - ob_debug("moving window %s\n", c->title); + ob_debug("moving window %s", c->title); client_set_desktop(c, c->desktop+1, FALSE, TRUE); } } @@ -754,7 +770,7 @@ void screen_remove_desktop(gboolean current) parent - which will have to be on the same desktop */ !client_direct_parent(c)) { - ob_debug("moving window %s\n", c->title); + ob_debug("moving window %s", c->title); client_set_desktop(c, c->desktop - 1, TRUE, TRUE); } /* raise all the windows that are on the current desktop which @@ -764,7 +780,7 @@ void screen_remove_desktop(gboolean current) (d == DESKTOP_ALL || d == screen_desktop)) { stacking_raise(CLIENT_AS_WINDOW(c)); - ob_debug("raising window %s\n", c->title); + ob_debug("raising window %s", c->title); } } } @@ -772,7 +788,7 @@ void screen_remove_desktop(gboolean current) /* fallback focus like we're changing desktops */ if (screen_desktop < screen_num_desktops - 1) { screen_fallback_focus(); - ob_debug("fake desktop change\n"); + ob_debug("fake desktop change"); } screen_set_num_desktops(screen_num_desktops-1); @@ -1284,7 +1300,6 @@ static void get_xinerama_screens(Rect **xin_areas, guint *nxin) gint l, r, t, b; if (ob_debug_xinerama) { - g_print("Using fake xinerama !\n"); gint w = WidthOfScreen(ScreenOfDisplay(obt_display, ob_screen)); gint h = HeightOfScreen(ScreenOfDisplay(obt_display, ob_screen)); *nxin = 2;