]> Dogcows Code - chaz/openbox/blobdiff - openbox/screen.c
small change to the render API. RrMinsize became RrMinSize. added RrMinWidth and...
[chaz/openbox] / openbox / screen.c
index 74b8e71db4d8c42f553dadab2427cf9b0e9bebba..a302828baf1a7a293d87dc995e6efce2cbb687a5 100644 (file)
@@ -58,6 +58,7 @@ gboolean screen_showing_desktop;
 DesktopLayout screen_desktop_layout;
 gchar  **screen_desktop_names;
 Window   screen_support_win;
+Time     screen_desktop_user_time = CurrentTime;
 
 static Rect  **area; /* array of desktop holding array of xinerama areas */
 static Rect  *monitor_area;
@@ -138,16 +139,15 @@ static gboolean replace_wm()
       }
 
       if (wait >= timeout) {
-          g_message(_("Timeout expired while waiting for the current WM to die"
-                      " on screen %d"), ob_screen);
+          g_message(_("The WM on screen %d is not exiting"), ob_screen);
           return FALSE;
       }
     }
 
     /* Send client message indicating that we are now the WM */
     prop_message(RootWindow(ob_display, ob_screen), prop_atoms.manager,
-                 timestamp, wm_sn_atom, 0, 0, SubstructureNotifyMask);
-
+                 timestamp, wm_sn_atom, screen_support_win, 0,
+                 SubstructureNotifyMask);
 
     return TRUE;
 }
@@ -206,6 +206,9 @@ gboolean screen_annex()
 
     /* set the _NET_SUPPORTED_ATOMS hint */
     num_support = 55;
+#ifdef SYNC
+    num_support += 2;
+#endif
     i = 0;
     supported = g_new(gulong, num_support);
     supported[i++] = prop_atoms.net_wm_full_placement;
@@ -262,11 +265,12 @@ gboolean screen_annex()
     supported[i++] = prop_atoms.net_wm_moveresize;
     supported[i++] = prop_atoms.net_wm_user_time;
     supported[i++] = prop_atoms.net_frame_extents;
+#ifdef SYNC
+    supported[i++] = prop_atoms.net_wm_sync_request;
+    supported[i++] = prop_atoms.net_wm_sync_request_counter;
+#endif
     supported[i++] = prop_atoms.ob_wm_state_undecorated;
     g_assert(i == num_support);
-/*
-  supported[] = prop_atoms.net_wm_action_stick;
-*/
 
     PROP_SETA32(RootWindow(ob_display, ob_screen),
                 net_supported, atom, supported, num_support);
@@ -471,6 +475,9 @@ void screen_set_desktop(guint num)
     }
 
     event_ignore_queued_enters();
+
+    if (event_curtime != CurrentTime)
+        screen_desktop_user_time = event_curtime;
 }
 
 static void get_row_col(guint d, guint *r, guint *c)
@@ -591,11 +598,8 @@ void screen_desktop_popup(guint d, gboolean show)
         a = screen_physical_area_monitor(0);
         pager_popup_position(desktop_cycle_popup, CenterGravity,
                              a->x + a->width / 2, a->y + a->height / 2);
-        /* XXX the size and the font extents need to be related on some level
-         */
-        pager_popup_size(desktop_cycle_popup, POPUP_WIDTH, POPUP_HEIGHT);
-
-        pager_popup_set_text_align(desktop_cycle_popup, RR_JUSTIFY_CENTER);
+        pager_popup_width(desktop_cycle_popup, MAX(a->width/3, POPUP_WIDTH));
+        pager_popup_height(desktop_cycle_popup, POPUP_HEIGHT);
 
         pager_popup_show(desktop_cycle_popup, screen_desktop_names[d], d);
     }
@@ -907,23 +911,19 @@ void screen_show_desktop(gboolean show)
 
 void screen_install_colormap(ObClient *client, gboolean install)
 {
-    XWindowAttributes wa;
-
     if (client == NULL) {
         if (install)
             XInstallColormap(RrDisplay(ob_rr_inst), RrColormap(ob_rr_inst));
         else
             XUninstallColormap(RrDisplay(ob_rr_inst), RrColormap(ob_rr_inst));
     } else {
-        if (XGetWindowAttributes(ob_display, client->window, &wa) &&
-            wa.colormap != None) {
-            xerror_set_ignore(TRUE);
-            if (install)
-                XInstallColormap(RrDisplay(ob_rr_inst), wa.colormap);
-            else
-                XUninstallColormap(RrDisplay(ob_rr_inst), wa.colormap);
-            xerror_set_ignore(FALSE);
-        }
+        xerror_set_ignore(TRUE);
+        if (install) {
+            if (client->colormap != None)
+                XInstallColormap(RrDisplay(ob_rr_inst), client->colormap);
+        } else
+            XUninstallColormap(RrDisplay(ob_rr_inst), client->colormap);
+        xerror_set_ignore(FALSE);
     }
 }
 
This page took 0.026807 seconds and 4 git commands to generate.