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-16 13:01:53.000000000 +0200
@@ -132,6 +132,7 @@ struct _WnckTasklistPrivate
   WnckScreen *screen;
 
   WnckTask *active_task; /* NULL if active window not in tasklist */
+  WnckTask *previously_active_task;
   WnckTask *active_class_group; /* NULL if active window not in tasklist */
   
   gboolean include_all_workspaces;
@@ -1413,6 +1414,37 @@ wnck_tasklist_set_screen (WnckTasklist *
   wnck_tasklist_connect_screen (tasklist, screen);
 }
 
+static gboolean
+wnck_tasklist_scroll_cb (WnckTasklist *tasklist,
+                         GdkEventScroll *event,
+                         gpointer user_data)
+{
+  GList *window;
+  WnckTask *task;
+  
+  task = tasklist->priv->active_task;
+  if (!task)
+    task = tasklist->priv->previously_active_task;
+  window = g_list_find(tasklist->priv->windows, task);
+
+  switch (event->direction)
+  {
+    case GDK_SCROLL_DOWN:
+    case GDK_SCROLL_LEFT:
+        window = window->prev;
+    break;
+    case GDK_SCROLL_UP:
+    case GDK_SCROLL_RIGHT:
+        window = window->next;
+    break;
+  }
+
+  if (window)
+    wnck_tasklist_activate_task_window(window->data, event->time);
+  
+  return TRUE;
+}
+
 GtkWidget*
 wnck_tasklist_new (WnckScreen *screen)
 {
@@ -1426,6 +1458,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);
 }
 
@@ -1624,6 +1662,7 @@ wnck_tasklist_change_active_task (WnckTa
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tasklist->priv->active_task->button),
 				    FALSE);
       tasklist->priv->active_task->really_toggling = FALSE;
+      tasklist->priv->previously_active_task = tasklist->priv->active_task;
     }
   
   tasklist->priv->active_task = active_task;
