diff -rup ../libwnck-2.10.0-orig/libwnck/tasklist.c ./libwnck/tasklist.c
--- ../libwnck-2.10.0-orig/libwnck/tasklist.c	2005-02-28 08:28:20.000000000 +0100
+++ ./libwnck/tasklist.c	2005-07-17 12:17:01.000000000 +0200
@@ -1713,6 +1713,18 @@ wnck_tasklist_active_window_changed (Wnc
   active_task = g_hash_table_lookup (tasklist->priv->win_hash,
 				     active_window);
 
+  if (active_window && !active_task)
+    {
+      gulong transient_id;
+      transient_id = wnck_window_get_transient(active_window);
+      if (transient_id)
+        {
+          active_window = wnck_window_get(transient_id);
+          active_task = g_hash_table_lookup (tasklist->priv->win_hash,
+                             active_window);
+        }
+    }
+    
   wnck_tasklist_change_active_task (tasklist, active_task);
 }
 
diff -rup ../libwnck-2.10.0-orig/libwnck/window.c ./libwnck/window.c
--- ../libwnck-2.10.0-orig/libwnck/window.c	2005-02-21 00:30:35.000000000 +0100
+++ ./libwnck/window.c	2005-07-17 11:51:53.000000000 +0200
@@ -490,6 +490,14 @@ wnck_window_get_xid (WnckWindow *window)
   return window->priv->xwindow;
 }
 
+gulong
+wnck_window_get_transient (WnckWindow *window)
+{
+  g_return_val_if_fail (WNCK_IS_WINDOW (window), None);
+
+  return window->priv->transient_for;
+}
+
 WnckClassGroup *
 wnck_window_get_class_group (WnckWindow *window)
 {
diff -rup ../libwnck-2.10.0-orig/libwnck/window.h ./libwnck/window.h
--- ../libwnck-2.10.0-orig/libwnck/window.h	2005-02-21 00:30:35.000000000 +0100
+++ ./libwnck/window.h	2005-07-17 11:51:15.000000000 +0200
@@ -138,6 +138,7 @@ const char* wnck_window_get_icon_name (W
 WnckApplication* wnck_window_get_application  (WnckWindow *window);
 gulong           wnck_window_get_group_leader (WnckWindow *window);
 gulong           wnck_window_get_xid          (WnckWindow *window);
+gulong           wnck_window_get_transient    (WnckWindow *window);
 
 WnckClassGroup *wnck_window_get_class_group (WnckWindow *window);
