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-12 19:53:43.000000000 +0200
@@ -1413,6 +1413,49 @@ wnck_tasklist_set_screen (WnckTasklist *
   wnck_tasklist_connect_screen (tasklist, screen);
 }
 
+gboolean
+wnck_tasklist_scroll_cb (GtkWidget *widget,
+                         GdkEventScroll *event,
+                         gpointer user_data)
+{
+  GList *window;
+  WnckTasklist *tasklist;
+  WnckTask *new_task = NULL;
+
+  tasklist = WNCK_TASKLIST (widget);
+  window = tasklist->priv->windows;
+  
+  while (window != NULL)
+  {
+    if (window->data == tasklist->priv->active_task)
+    {
+      /* current window found:
+           if scroll_up switch to preview window
+           if scroll_down switch to next window
+           else the event isn't for us.
+       */
+      if (event->direction == GDK_SCROLL_UP)
+        break;
+      if (event->direction == GDK_SCROLL_DOWN)
+      {
+        if (window->next)
+          new_task = window->next->data;
+        else
+          new_task = NULL;
+        break;
+      }
+      return FALSE;
+    }
+    new_task = window->data;
+    window = window->next;
+  }
+
+  if (new_task)
+    wnck_tasklist_activate_task_window(new_task, gtk_get_current_event_time ());    
+  
+  return TRUE;
+}
+
 GtkWidget*
 wnck_tasklist_new (WnckScreen *screen)
 {
@@ -1426,6 +1469,12 @@ wnck_tasklist_new (WnckScreen *screen)
 
   wnck_tasklist_set_screen (tasklist, screen);
 
+  /* callback when there is a scroll-event for switching to the next window  */
+  g_signal_connect_object (G_OBJECT (tasklist), "scroll-event",
+                           G_CALLBACK (wnck_tasklist_scroll_cb),
+                           G_OBJECT (tasklist),
+                           0);
+
   return GTK_WIDGET (tasklist);
 }
 
@@ -1712,6 +1761,9 @@ wnck_tasklist_active_window_changed (Wnc
 
   active_task = g_hash_table_lookup (tasklist->priv->win_hash,
 				     active_window);
+  /* if actived window has no corresponding task there is nothing to do */
+  if (active_window && !active_task)
+    return;
 
   wnck_tasklist_change_active_task (tasklist, active_task);
 }
Seulement dans .: scroll2.patch
