--- metacity-2.9.0/src/window.c	2004-10-25 18:24:01.000000000 +0200
+++ metacity-2.9.0-mod/src/window.c	2004-11-24 19:34:49.000000000 +0100
@@ -1229,6 +1229,44 @@
   return is_minimized;
 }
 
+/* Check whether all other normal group windows are minimized */
+static gboolean
+group_is_minimized (MetaWindow *window)
+{
+  MetaGroup *group;
+  GSList *group_windows;
+  GSList *tmp;
+
+  group = meta_window_get_group (window);
+  if (group)
+    group_windows = meta_group_list_windows (group);
+  else
+    group_windows = NULL;
+
+  tmp = group_windows;
+  while (tmp)
+    {
+      MetaWindow *w;
+
+      w = tmp->data;
+
+      if (w->type == META_WINDOW_NORMAL &&
+          (w->stack_position > 0 ||
+           window->screen == w->screen) &&
+          window->xwindow != w->xwindow &&
+          !w->minimized)
+        {
+          g_slist_free (group_windows);
+          return FALSE;
+        }
+
+      tmp = tmp->next;
+    }
+
+  g_slist_free (group_windows);
+  return TRUE;
+}
+
 static gboolean
 window_showing_on_its_workspace (MetaWindow *window)
 {
@@ -1284,8 +1322,12 @@
   
   if (showing)
     {
-      if (ancestor_is_minimized (window))
-        showing = FALSE;
+      if (ancestor_is_minimized (window) ||
+          (window->type == META_WINDOW_UTILITY &&
+           group_is_minimized (window)))
+        {
+          showing = FALSE;
+        }
     }
 
 #if 0
