diff --git a/ChangeLog b/ChangeLog index e1eb09659..a1d8375c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Wed Mar 22 13:16:48 2006 Søren Sandmann + + * src/compositor.c (meta_compositor_remove_window): Actually + remove the window. + + * src/c-screen.c (meta_screen_info_remove_window): Only remove + node if non-NULL + Wed Mar 22 10:33:21 2006 Søren Sandmann * src/c-screen.c (meta_screen_info_redirect): Put a square below diff --git a/src/c-screen.c b/src/c-screen.c index 5432c9f44..373100215 100644 --- a/src/c-screen.c +++ b/src/c-screen.c @@ -555,11 +555,16 @@ meta_screen_info_remove_window (MetaScreenInfo *info, { CmNode *node = find_node (info, xwindow); +#if 0 g_print ("removing %lx\n", xwindow); - - g_hash_table_remove (info->window_infos_by_xid, (gpointer)xwindow); - - cm_stacker_remove_child (info->stacker, node); +#endif + + if (node) + { + g_hash_table_remove (info->window_infos_by_xid, (gpointer)xwindow); + + cm_stacker_remove_child (info->stacker, node); + } } void diff --git a/src/compositor.c b/src/compositor.c index aa7622da1..72fe9f473 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -395,9 +395,17 @@ process_destroy (MetaCompositor *compositor, screen = meta_display_screen_for_root (compositor->meta_display, event->event); + + +#if 0 + g_print ("destroywindow\n"); +#endif if (screen == NULL) { +#if 0 + g_print ("ignoring\n"); +#endif meta_topic (META_DEBUG_COMPOSITOR, "DestroyNotify received on non-root 0x%lx for 0x%lx\n", event->event, event->window); @@ -687,6 +695,9 @@ meta_compositor_remove_window (MetaCompositor *compositor, MetaScreenInfo *minfo; minfo = meta_screen_info_get_by_xwindow (xwindow); + + if (minfo) + meta_screen_info_remove_window (minfo, xwindow); #endif /* HAVE_COMPOSITE_EXTENSIONS */ }