diff -urN gtk-2.12.11-clean/gdk/gdkwindow.c gtk-2.12.11-unfrozen/gdk/gdkwindow.c
--- gtk-2.12.11-clean/gdk/gdkwindow.c	2008-11-17 20:18:12.000000000 +0000
+++ gtk-2.12.11-unfrozen/gdk/gdkwindow.c	2008-11-17 20:23:59.000000000 +0000
@@ -2304,8 +2304,7 @@
 gdk_window_schedule_update (GdkWindow *window)
 {
   if (window &&
-      (GDK_WINDOW_OBJECT (window)->update_freeze_count ||
-       gdk_window_is_toplevel_frozen (window)))
+      (GDK_WINDOW_OBJECT (window)->update_freeze_count ))
     return;
 
   if (!update_idle)
@@ -2437,8 +2436,7 @@
       
       if (!GDK_WINDOW_DESTROYED (tmp_list->data))
         {
-	  if (private->update_freeze_count ||
-	      gdk_window_is_toplevel_frozen (tmp_list->data))
+	  if (private->update_freeze_count)
 	    update_windows = g_slist_prepend (update_windows, private);
 	  else
 	    gdk_window_process_updates_internal (tmp_list->data);
@@ -2488,8 +2486,7 @@
     }
   
   if (private->update_area &&
-      !private->update_freeze_count &&
-      !gdk_window_is_toplevel_frozen (window))
+      !private->update_freeze_count)
     {      
       gdk_window_process_updates_internal (window);
       update_windows = g_slist_remove (update_windows, window);
