]> Dogcows Code - chaz/openbox/blobdiff - openbox/screen.c
rename the openbox_* atoms back to ob_*
[chaz/openbox] / openbox / screen.c
index 3819a3b1415cf70ff8becbaabe2ed45bb4eef9d2..684dd5bb16e44b4ecc59e11d32b91e7ea8474d3b 100644 (file)
@@ -196,7 +196,7 @@ gboolean screen_annex(const gchar *program_name)
     /* set the OPENBOX_PID hint */
     pid = getpid();
     PROP_SET32(RootWindow(ob_display, ob_screen),
-               openbox_pid, cardinal, pid);
+               ob_pid, cardinal, pid);
 
     /* set supporting window */
     PROP_SET32(RootWindow(ob_display, ob_screen),
@@ -258,6 +258,8 @@ gboolean screen_annex(const gchar *program_name)
     supported[i++] = prop_atoms.net_wm_action_fullscreen;
     supported[i++] = prop_atoms.net_wm_action_change_desktop;
     supported[i++] = prop_atoms.net_wm_action_close;
+    supported[i++] = prop_atoms.net_wm_action_above;
+    supported[i++] = prop_atoms.net_wm_action_below;
     supported[i++] = prop_atoms.net_wm_state;
     supported[i++] = prop_atoms.net_wm_state_modal;
     supported[i++] = prop_atoms.net_wm_state_maximized_vert;
@@ -287,10 +289,10 @@ gboolean screen_annex(const gchar *program_name)
     supported[i++] = prop_atoms.kde_net_wm_frame_strut;
     supported[i++] = prop_atoms.kde_net_wm_window_type_override;
 
-    supported[i++] = prop_atoms.openbox_wm_state_undecorated;
-    supported[i++] = prop_atoms.openbox_pid;
-    supported[i++] = prop_atoms.openbox_config;
-    supported[i++] = prop_atoms.openbox_control;
+    supported[i++] = prop_atoms.ob_wm_state_undecorated;
+    supported[i++] = prop_atoms.ob_pid;
+    supported[i++] = prop_atoms.ob_config;
+    supported[i++] = prop_atoms.ob_control;
     g_assert(i == num_support);
 
     PROP_SETA32(RootWindow(ob_display, ob_screen),
@@ -310,8 +312,13 @@ void screen_startup(gboolean reconfig)
     desktop_cycle_popup = pager_popup_new(FALSE);
     pager_popup_height(desktop_cycle_popup, POPUP_HEIGHT);
 
-    if (reconfig)
+    if (reconfig) {
+        /* update the pager popup's width */
+        pager_popup_text_width_to_strings(desktop_cycle_popup,
+                                          screen_desktop_names,
+                                          screen_num_desktops);
         return;
+    }
 
     /* get the initial size */
     screen_resize();
@@ -366,7 +373,7 @@ void screen_shutdown(gboolean reconfig)
                  NoEventMask);
 
     /* we're not running here no more! */
-    PROP_ERASE(RootWindow(ob_display, ob_screen), openbox_pid);
+    PROP_ERASE(RootWindow(ob_display, ob_screen), ob_pid);
     /* not without us */
     PROP_ERASE(RootWindow(ob_display, ob_screen), net_supported);
     /* don't keep this mode */
@@ -494,7 +501,7 @@ void screen_set_desktop(guint num, gboolean dofocus)
        do this before hiding the windows so if helper windows are coming
        with us, they don't get hidden
     */
-    if (dofocus && (c = focus_fallback_target(TRUE, focus_client))) {
+    if (dofocus && (c = focus_fallback(TRUE))) {
         /* only do the flicker reducing stuff ahead of time if we are going
            to call xsetinputfocus on the window ourselves. otherwise there is
            no guarantee the window will actually take focus.. */
@@ -506,7 +513,6 @@ void screen_set_desktop(guint num, gboolean dofocus)
                server FocusIn event */
             frame_adjust_focus(c->frame, TRUE);
         }
-        client_focus(c);
     }
 
     /* hide windows from bottom to top */
@@ -657,7 +663,7 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear,
 {
     guint r, c;
     static guint d = (guint)-1;
-    guint ret;
+    guint ret, oldd;
 
     if (d == (guint)-1)
         d = screen_desktop;
@@ -665,6 +671,7 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear,
     if ((cancel || done) && dialog)
         goto show_cycle_dialog;
 
+    oldd = d;
     get_row_col(d, &r, &c);
 
     if (linear) {
@@ -690,19 +697,17 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear,
         case OB_DIRECTION_EAST:
             ++c;
             if (c >= screen_desktop_layout.columns) {
-                if (wrap) {
+                if (wrap)
                     c = 0;
-                } else {
-                    d = screen_desktop;
+                else
                     goto show_cycle_dialog;
-                }
             }
             d = translate_row_col(r, c);
             if (d >= screen_num_desktops) {
                 if (wrap) {
                     ++c;
                 } else {
-                    d = screen_desktop;
+                    d = oldd;
                     goto show_cycle_dialog;
                 }
             }
@@ -710,19 +715,17 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear,
         case OB_DIRECTION_WEST:
             --c;
             if (c >= screen_desktop_layout.columns) {
-                if (wrap) {
+                if (wrap)
                     c = screen_desktop_layout.columns - 1;
-                } else {
-                    d = screen_desktop;
+                else
                     goto show_cycle_dialog;
-                }
             }
             d = translate_row_col(r, c);
             if (d >= screen_num_desktops) {
                 if (wrap) {
                     --c;
                 } else {
-                    d = screen_desktop;
+                    d = oldd;
                     goto show_cycle_dialog;
                 }
             }
@@ -730,19 +733,17 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear,
         case OB_DIRECTION_SOUTH:
             ++r;
             if (r >= screen_desktop_layout.rows) {
-                if (wrap) {
+                if (wrap)
                     r = 0;
-                } else {
-                    d = screen_desktop;
+                else
                     goto show_cycle_dialog;
-                }
             }
             d = translate_row_col(r, c);
             if (d >= screen_num_desktops) {
                 if (wrap) {
                     ++r;
                 } else {
-                    d = screen_desktop;
+                    d = oldd;
                     goto show_cycle_dialog;
                 }
             }
@@ -750,19 +751,17 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear,
         case OB_DIRECTION_NORTH:
             --r;
             if (r >= screen_desktop_layout.rows) {
-                if (wrap) {
+                if (wrap)
                     r = screen_desktop_layout.rows - 1;
-                } else {
-                    d = screen_desktop;
+                else
                     goto show_cycle_dialog;
-                }
             }
             d = translate_row_col(r, c);
             if (d >= screen_num_desktops) {
                 if (wrap) {
                     --r;
                 } else {
-                    d = screen_desktop;
+                    d = oldd;
                     goto show_cycle_dialog;
                 }
             }
@@ -939,7 +938,7 @@ void screen_show_desktop(gboolean show, ObClient *show_only)
     }
 
     if (show) {
-        /* focus desktop */
+        /* focus the desktop */
         for (it = focus_order; it; it = g_list_next(it)) {
             ObClient *c = it->data;
             if (c->type == OB_CLIENT_TYPE_DESKTOP &&
@@ -951,10 +950,16 @@ void screen_show_desktop(gboolean show, ObClient *show_only)
     else if (!show_only) {
         ObClient *c;
 
-        /* use NULL for the "old" argument because the desktop was focused
-           and we don't want to fallback to the desktop by default */
-        if ((c = focus_fallback_target(TRUE, NULL)))
-            client_focus(c);
+        if ((c = focus_fallback(TRUE))) {
+            /* only do the flicker reducing stuff ahead of time if we are going
+               to call xsetinputfocus on the window ourselves. otherwise there
+               is no guarantee the window will actually take focus.. */
+            if (c->can_focus) {
+                /* reduce flicker by hiliting now rather than waiting for the
+                   server FocusIn event */
+                frame_adjust_focus(c->frame, TRUE);
+            }
+        }
     }
 
     show = !!show; /* make it boolean */
This page took 0.028552 seconds and 4 git commands to generate.