metacity r3654 - in trunk: . src/core
- From: iain svn gnome org
- To: svn-commits-list gnome org
- Subject: metacity r3654 - in trunk: . src/core
- Date: Wed, 19 Mar 2008 00:47:01 +0000 (GMT)
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]