diff options
author | Iain Holmes <iain@gnome.org> | 2008-03-19 00:47:01 +0000 |
---|---|---|
committer | Iain Holmes <iain@src.gnome.org> | 2008-03-19 00:47:01 +0000 |
commit | f2b400b82c679acf948618962cce71716e8f5207 (patch) | |
tree | 26ff660762d4595641d3d83a244d6a97de20b5ea | |
parent | e6293645827bcbe4708a91cc72f6a2a6dd9728f6 (diff) | |
download | metacity-f2b400b82c679acf948618962cce71716e8f5207.tar.gz |
Add a screen argument. (process_property_notify): Damage the whole screen
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.
svn path=/trunk/; revision=3654
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | src/core/compositor.c | 20 | ||||
-rw-r--r-- | src/core/compositor.h | 1 | ||||
-rw-r--r-- | src/core/window.c | 5 |
4 files changed, 32 insertions, 6 deletions
@@ -1,3 +1,15 @@ +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. + 2008-03-18 Iain Holmes <iain@gnome.org> * src/core/compositor.c (window_has_shadow): Allow shaped windows diff --git a/src/core/compositor.c b/src/core/compositor.c index bc82d052..425f9c8e 100644 --- a/src/core/compositor.c +++ b/src/core/compositor.c @@ -1354,7 +1354,7 @@ add_repair (MetaDisplay *display) 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 @@ unmap_win (MetaDisplay *display, 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 @@ process_property_notify (MetaCompositor *compositor, 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 @@ meta_compositor_get_window_pixmap (MetaCompositor *compositor, 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 @@ meta_compositor_set_active_window (MetaCompositor *compositor, 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) diff --git a/src/core/compositor.h b/src/core/compositor.h index b799c41c..7c6e7408 100644 --- a/src/core/compositor.h +++ b/src/core/compositor.h @@ -65,6 +65,7 @@ void meta_compositor_free_window (MetaCompositor *compositor, 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 */ diff --git a/src/core/window.c b/src/core/window.c index 76598795..3e6eb58e 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -5204,7 +5204,7 @@ meta_window_notify_focus (MetaWindow *window, 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 @@ meta_window_notify_focus (MetaWindow *window, 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); |