/* create the netwm support window */
attrib.override_redirect = TRUE;
- attrib.event_mask = PropertyChangeMask;
+ attrib.event_mask = PropertyChangeMask | KeyPressMask | KeyReleaseMask;
screen_support_win = XCreateWindow(obt_display, obt_root(ob_screen),
-100, -100, 1, 1, 0,
CopyFromParent, InputOutput,
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);
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;
/* this calls screen_update_areas(), which we need ! */
dock_configure();
- for (it = client_list; it; it = g_list_next(it)) {
- client_move_onscreen(it->data, FALSE);
- client_reconfigure(it->data, FALSE);
- }
+ // bug: this is done in screen_update_areas() already
+// for (it = client_list; it; it = g_list_next(it)) {
+// client_move_onscreen(it->data, FALSE);
+// client_reconfigure(it->data, FALSE);
+// }
}
void screen_set_num_desktops(guint num)
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 */
}