X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fscreen.c;h=118798e8e8b02f00a8a3b61c30b37a0b6e84948a;hb=95b1cd01669f9867511f9a65ce01e4404e5800b3;hp=50db863870473aadb4651278fa0b7c752d0ed4dd;hpb=3175986d3ae670a9023fc464a0311c278973873e;p=chaz%2Fopenbox diff --git a/openbox/screen.c b/openbox/screen.c index 50db8638..118798e8 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -25,7 +25,7 @@ guint screen_desktop = 0; Size screen_physical_size; gboolean screen_showing_desktop; DesktopLayout screen_desktop_layout; -char **screen_desktop_names; +char **screen_desktop_names = NULL; static Rect *area = NULL; static Strut *strut = NULL; @@ -48,7 +48,7 @@ gboolean screen_annex() XErrorHandler old; pid_t pid; int i, num_support; - Atom *supported; + guint32 *supported; running = FALSE; old = XSetErrorHandler(another_running); @@ -61,7 +61,7 @@ gboolean screen_annex() g_message("Managing screen %d", ob_screen); /* set the mouse cursor for the root window (the default cursor) */ - XDefineCursor(ob_display, ob_root, ob_cursors.left_ptr); + XDefineCursor(ob_display, ob_root, ob_cursors.ptr); /* set the OPENBOX_PID hint */ pid = getpid(); @@ -78,9 +78,9 @@ gboolean screen_annex() PROP_SET32(support_window, net_supporting_wm_check, window,support_window); /* set the _NET_SUPPORTED_ATOMS hint */ - num_support = 48; + num_support = 61; i = 0; - supported = g_new(Atom, num_support); + supported = g_new(guint32, num_support); supported[i++] = prop_atoms.net_current_desktop; supported[i++] = prop_atoms.net_number_of_desktops; supported[i++] = prop_atoms.net_desktop_geometry; @@ -129,14 +129,21 @@ gboolean screen_annex() supported[i++] = prop_atoms.net_wm_state_fullscreen; supported[i++] = prop_atoms.net_wm_state_above; supported[i++] = prop_atoms.net_wm_state_below; + supported[i++] = prop_atoms.net_moveresize_window; + supported[i++] = prop_atoms.net_wm_moveresize; + supported[i++] = prop_atoms.net_wm_moveresize_size_topleft; + supported[i++] = prop_atoms.net_wm_moveresize_size_top; + supported[i++] = prop_atoms.net_wm_moveresize_size_topright; + supported[i++] = prop_atoms.net_wm_moveresize_size_right; + supported[i++] = prop_atoms.net_wm_moveresize_size_bottomright; + supported[i++] = prop_atoms.net_wm_moveresize_size_bottom; + supported[i++] = prop_atoms.net_wm_moveresize_size_bottomleft; + supported[i++] = prop_atoms.net_wm_moveresize_size_left; + supported[i++] = prop_atoms.net_wm_moveresize_move; + supported[i++] = prop_atoms.net_wm_moveresize_size_keyboard; + supported[i++] = prop_atoms.net_wm_moveresize_move_keyboard; g_assert(i == num_support); /* - supported[] = prop_atoms.net_wm_moveresize; - supported[] = prop_atoms.net_wm_moveresize_size_topleft; - supported[] = prop_atoms.net_wm_moveresize_size_topright; - supported[] = prop_atoms.net_wm_moveresize_size_bottomleft; - supported[] = prop_atoms.net_wm_moveresize_size_bottomright; - supported[] = prop_atoms.net_wm_moveresize_move; supported[] = prop_atoms.net_wm_action_stick; */ @@ -159,6 +166,7 @@ void screen_startup() g_slist_length(config_desktops_names) + 1); for (i = 0, it = config_desktops_names; it; ++i, it = it->next) screen_desktop_names[i] = it->data; /* dont strdup */ + screen_desktop_names[i] = NULL; PROP_SETSS(ob_root, net_desktop_names, screen_desktop_names); g_free(screen_desktop_names); /* dont free the individual strings */ screen_desktop_names = NULL; @@ -377,13 +385,16 @@ void screen_update_desktop_names() /* empty the array */ g_strfreev(screen_desktop_names); + screen_desktop_names = NULL; - PROP_GETSS(ob_root, net_desktop_names, utf8, &screen_desktop_names); - - for (i = 0; screen_desktop_names[i] && i < screen_num_desktops; ++i); - if (i < screen_num_desktops) { + if (PROP_GETSS(ob_root, net_desktop_names, utf8, &screen_desktop_names)) + for (i = 0; screen_desktop_names[i] && i <= screen_num_desktops; ++i); + else + i = 0; + if (i <= screen_num_desktops) { screen_desktop_names = g_renew(char*, screen_desktop_names, screen_num_desktops + 1); + screen_desktop_names[screen_num_desktops] = NULL; for (; i < screen_num_desktops; ++i) screen_desktop_names[i] = g_strdup("Unnamed Desktop"); }