metacity r3654 - in trunk: . src/core



Author: iain
Date: Wed Mar 19 00:47:01 2008
New Revision: 3654
URL: http://svn.gnome.org/viewvc/metacity?rev=3654&view=rev

Log:
2008-03-19  Iain Holmes  <iain gnome org>

        * src/core/compositor.c (meta_compositor_set_active_window): Add 
a
        screen argument.
        (process_property_notify): Damage the whole screen when the 
background
        changes. Fixes 522599
        (add_repair): Use the idle instead of the timeout. Fixes 522166
        (unmap_win): If the window is also focus window NULLify it.

        * src/core/window.c (meta_window_notify_focus): Notify when a 
window
        has lost focus, pass in screen as well.



Modified:
   trunk/ChangeLog
   trunk/src/core/compositor.c
   trunk/src/core/compositor.h
   trunk/src/core/window.c

Modified: trunk/src/core/compositor.c
==============================================================================
--- trunk/src/core/compositor.c	(original)
+++ trunk/src/core/compositor.c	Wed Mar 19 00:47:01 2008
@@ -1354,7 +1354,7 @@
   if (compositor->repaint_id > 0)
     return;
 
-#if 0
+#if 1
   compositor->repaint_id = g_idle_add_full (G_PRIORITY_HIGH_IDLE,
                                             compositor_idle_cb, compositor,
                                             NULL);
@@ -1566,6 +1566,9 @@
       return;
     }
 
+  if (cw->window && cw->window == info->focus_window) 
+    info->focus_window = NULL;
+
   cw->attrs.map_state = IsUnmapped;
   cw->damaged = FALSE;
 
@@ -2094,6 +2097,10 @@
                               0, 0, 0, 0, TRUE);
                   XRenderFreePicture (display->xdisplay, info->root_tile);
                   info->root_tile = None;
+                  
+                  /* Damage the whole screen as we may need to redraw the 
+                     background ourselves */
+                  damage_screen (screen);
 #ifdef USE_IDLE_REPAINT
                   add_repair (display);
 #endif
@@ -2733,12 +2740,12 @@
 
 void
 meta_compositor_set_active_window (MetaCompositor *compositor,
+                                   MetaScreen     *screen,
                                    MetaWindow     *window)
 {
 #ifdef HAVE_COMPOSITE_EXTENSIONS
   MetaDisplay *display = compositor->display;
   Display *xdisplay = display->xdisplay;
-  MetaScreen *screen = window->screen;
   MetaCompWindow *old_focus = NULL, *new_focus = NULL;
   MetaCompScreen *info = screen->compositor_data;
   MetaWindow *old_focus_win = info->focus_window;
@@ -2749,9 +2756,12 @@
                                           old_focus_win->frame ? old_focus_win->frame->xwindow :
                                           old_focus_win->xwindow);
     }
-  new_focus = find_window_for_screen (screen,
-                                      window->frame ? window->frame->xwindow :
-                                      window->xwindow);
+  if (window) 
+    {
+      new_focus = find_window_for_screen (screen,
+                                          window->frame ? window->frame->xwindow :
+                                          window->xwindow);
+    }
 
   info->focus_window = window;
   if (old_focus)

Modified: trunk/src/core/compositor.h
==============================================================================
--- trunk/src/core/compositor.h	(original)
+++ trunk/src/core/compositor.h	Wed Mar 19 00:47:01 2008
@@ -65,6 +65,7 @@
 Pixmap meta_compositor_get_window_pixmap (MetaCompositor *compositor,
                                           MetaWindow     *window);
 void meta_compositor_set_active_window (MetaCompositor *compositor,
+                                        MetaScreen     *screen,
                                         MetaWindow     *window);
 
 #endif /* META_COMPOSITOR_H */

Modified: trunk/src/core/window.c
==============================================================================
--- trunk/src/core/window.c	(original)
+++ trunk/src/core/window.c	Wed Mar 19 00:47:01 2008
@@ -5204,7 +5204,7 @@
           window->display->focus_window = window;
           window->has_focus = TRUE;
           meta_compositor_set_active_window (window->display->compositor,
-                                             window);
+                                             window->screen, window);
 
           /* Move to the front of the focusing workspace's MRU list.
            * We should only be "removing" it from the MRU list if it's
@@ -5289,6 +5289,9 @@
           if (window->frame)
             meta_frame_queue_draw (window->frame);
 
+          meta_compositor_set_active_window (window->display->compositor, 
+                                             window->screen, NULL);
+
           meta_error_trap_push (window->display);
           XUninstallColormap (window->display->xdisplay,
                               window->colormap);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]