summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-07 16:49:27 +0000
committerDana Jansens <danakj@orodu.net>2007-05-07 16:49:27 +0000
commit37e2be2a57a218bd671e2e4b056643fbb248ad02 (patch)
treed8e834c64666b993c69c500d5df5e46ed6fe5467
parent73348c28de6d2c1b554476134dd78fda8ea9a9e1 (diff)
fix a crash after reconfigure, the desktop names were not being re-set. so now they aren't deleted since we don't want to change them over a reconfigure anyways.
-rw-r--r--data/rc.xml.in4
-rw-r--r--openbox/screen.c104
2 files changed, 55 insertions, 53 deletions
diff --git a/data/rc.xml.in b/data/rc.xml.in
index 66880d7f..35cc4cfb 100644
--- a/data/rc.xml.in
+++ b/data/rc.xml.in
@@ -92,11 +92,11 @@
</theme>
<desktops>
+ <!-- this stuff is only used at startup, pagers allow you to change them
+ during a session -->
<number>4</number>
<firstdesk>1</firstdesk>
<names>
- <!-- the desktop names are only set at startup, pagers allow you to
- change them during a session -->
<name>desktop one</name>
<name>desktop two</name>
<name>desktop three</name>
diff --git a/openbox/screen.c b/openbox/screen.c
index 1faf521e..5fc2bb92 100644
--- a/openbox/screen.c
+++ b/openbox/screen.c
@@ -299,55 +299,55 @@ gboolean screen_annex(const gchar *program_name)
void screen_startup(gboolean reconfig)
{
- if (!reconfig) {
- guint i, numnames;
- gchar **names;
- GSList *it;
+ guint i, numnames;
+ gchar **names;
+ GSList *it;
+ guint32 d;
- /* get the initial size */
- screen_resize();
+ desktop_cycle_popup = pager_popup_new(FALSE);
+ pager_popup_height(desktop_cycle_popup, POPUP_HEIGHT);
- /* get the desktop names */
- numnames = g_slist_length(config_desktops_names);
- names = g_new(gchar*, numnames + 1);
- names[numnames] = NULL;
- for (i = 0, it = config_desktops_names; it; ++i, it = g_slist_next(it))
- names[i] = g_strdup(it->data);
+ if (reconfig)
+ return;
- /* set the root window property */
- PROP_SETSS(RootWindow(ob_display, ob_screen), net_desktop_names,names);
+ /* get the initial size */
+ screen_resize();
- g_strfreev(names);
- }
+ /* get the desktop names */
+ numnames = g_slist_length(config_desktops_names);
+ names = g_new(gchar*, numnames + 1);
+ names[numnames] = NULL;
+ for (i = 0, it = config_desktops_names; it; ++i, it = g_slist_next(it))
+ names[i] = g_strdup(it->data);
- desktop_cycle_popup = pager_popup_new(FALSE);
- pager_popup_height(desktop_cycle_popup, POPUP_HEIGHT);
+ /* set the root window property */
+ PROP_SETSS(RootWindow(ob_display, ob_screen), net_desktop_names,names);
+
+ g_strfreev(names);
- if (!reconfig)
- screen_num_desktops = 0;
+ /* set the number of desktops */
+ screen_num_desktops = 0;
screen_set_num_desktops(config_desktops_num);
- if (!reconfig) {
- guint32 d;
- /* start on the current desktop when a wm was already running */
- if (PROP_GET32(RootWindow(ob_display, ob_screen),
- net_current_desktop, cardinal, &d) &&
- d < screen_num_desktops)
- {
- screen_set_desktop(d, FALSE);
- } else if (session_desktop >= 0)
- screen_set_desktop(MIN((guint)session_desktop,
- screen_num_desktops), FALSE);
- else
- screen_set_desktop(MIN(config_screen_firstdesk,
- screen_num_desktops) - 1, FALSE);
- /* don't start in showing-desktop mode */
- screen_showing_desktop = FALSE;
- PROP_SET32(RootWindow(ob_display, ob_screen),
- net_showing_desktop, cardinal, screen_showing_desktop);
+ /* start on the current desktop when a wm was already running */
+ if (PROP_GET32(RootWindow(ob_display, ob_screen),
+ net_current_desktop, cardinal, &d) &&
+ d < screen_num_desktops)
+ {
+ screen_set_desktop(d, FALSE);
+ } else if (session_desktop >= 0)
+ screen_set_desktop(MIN((guint)session_desktop,
+ screen_num_desktops), FALSE);
+ else
+ screen_set_desktop(MIN(config_screen_firstdesk,
+ screen_num_desktops) - 1, FALSE);
+
+ /* don't start in showing-desktop mode */
+ screen_showing_desktop = FALSE;
+ PROP_SET32(RootWindow(ob_display, ob_screen),
+ net_showing_desktop, cardinal, screen_showing_desktop);
- screen_update_layout();
- }
+ screen_update_layout();
}
void screen_shutdown(gboolean reconfig)
@@ -356,22 +356,24 @@ void screen_shutdown(gboolean reconfig)
pager_popup_free(desktop_cycle_popup);
- if (!reconfig) {
- XSelectInput(ob_display, RootWindow(ob_display, ob_screen),
- NoEventMask);
+ if (reconfig)
+ return;
+
+ XSelectInput(ob_display, RootWindow(ob_display, ob_screen),
+ NoEventMask);
- /* we're not running here no more! */
- PROP_ERASE(RootWindow(ob_display, ob_screen), openbox_pid);
- /* not without us */
- PROP_ERASE(RootWindow(ob_display, ob_screen), net_supported);
- /* don't keep this mode */
- PROP_ERASE(RootWindow(ob_display, ob_screen), net_showing_desktop);
+ /* we're not running here no more! */
+ PROP_ERASE(RootWindow(ob_display, ob_screen), openbox_pid);
+ /* not without us */
+ PROP_ERASE(RootWindow(ob_display, ob_screen), net_supported);
+ /* don't keep this mode */
+ PROP_ERASE(RootWindow(ob_display, ob_screen), net_showing_desktop);
- XDestroyWindow(ob_display, screen_support_win);
- }
+ XDestroyWindow(ob_display, screen_support_win);
g_strfreev(screen_desktop_names);
screen_desktop_names = NULL;
+
for (r = area; *r; ++r)
g_free(*r);
g_free(area);