diff -EbBu gtk+-2.8.17.orig/gtk/gtknotebook.c gtk+-2.8.17/gtk/gtknotebook.c
--- gtk+-2.8.17.orig/gtk/gtknotebook.c	2006-03-21 08:12:08.000000000 +0800
+++ gtk+-2.8.17/gtk/gtknotebook.c	2006-04-30 03:59:18.000000000 +0800
@@ -1,5 +1,6 @@
 /* GTK - The GIMP Toolkit
  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ * Copyright (C) 2006 Hong Jen Yee (PCMan) add prelight support for tabs.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -1151,6 +1152,9 @@
   attributes.event_mask = gtk_widget_get_events (widget);
   attributes.event_mask |= (GDK_BUTTON_PRESS_MASK |
 			    GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK |
+#ifdef  G_OS_WIN32  /* This is required by prelight state of tabs */
+                            GDK_POINTER_MOTION_MASK|GDK_LEAVE_NOTIFY_MASK|
+#endif
 			    GDK_SCROLL_MASK);
   attributes_mask = GDK_WA_X | GDK_WA_Y;
 
@@ -1538,7 +1542,6 @@
 	    gtk_notebook_draw_focus (widget);
 	}
 
-      
       if (notebook->cur_page)
 	gtk_container_propagate_expose (GTK_CONTAINER (notebook),
 					notebook->cur_page->child,
@@ -1986,6 +1989,15 @@
   GtkNotebookArrow arrow;
   gint x, y;
 
+#ifdef  G_OS_WIN32 /* cancel previous prelight state */
+  GdkRectangle area;
+  if( notebook->prelight_page && notebook->prelight_page->tab_label )
+  {
+    notebook->prelight_page = NULL;
+    gtk_notebook_redraw_tabs (GTK_NOTEBOOK (widget));
+  }
+#endif
+
   if (!get_widget_coordinates (widget, (GdkEvent *)event, &x, &y))
     return FALSE;
 
@@ -2007,6 +2019,10 @@
   GtkNotebook *notebook = GTK_NOTEBOOK (widget);
   GtkNotebookArrow arrow;
   gint x, y;
+#ifdef  G_OS_WIN32
+  GList *children;
+  GtkNotebookPage *page, *prelight_page = NULL;
+#endif
   
   if (notebook->button)
     return FALSE;
@@ -2014,6 +2030,36 @@
   if (!get_widget_coordinates (widget, (GdkEvent *)event, &x, &y))
     return FALSE;
 
+#ifdef  G_OS_WIN32
+  /* Support prelight state of tabs */
+  children = notebook->children;
+  while (children)
+    {
+      page = children->data;
+      if (GTK_WIDGET_VISIBLE (page->child) &&
+	  page->tab_label && GTK_WIDGET_MAPPED (page->tab_label) &&
+	  (x >= page->allocation.x) &&
+	  (y >= page->allocation.y) &&
+	  (x <= (page->allocation.x + page->allocation.width)) &&
+	  (y <= (page->allocation.y + page->allocation.height)))
+	{
+          prelight_page = page;
+	  break;
+	}
+      children = children->next;
+    }
+
+  if ( prelight_page != notebook->prelight_page )
+  {
+      notebook->prelight_page = prelight_page;
+      gtk_notebook_redraw_tabs (GTK_NOTEBOOK (widget));
+  }
+  if( prelight_page ) {
+      return TRUE;
+  }
+
+#endif
+
   arrow = gtk_notebook_get_arrow (notebook, x, y);
 
   if (arrow != notebook->in_child)
@@ -2021,7 +2067,10 @@
       notebook->in_child = arrow;
       gtk_notebook_redraw_arrows (notebook);
     }
+  else
+  {
   
+  }
   return TRUE;
 }
 
@@ -3075,6 +3124,10 @@
       
       if (notebook->cur_page == page)
 	state_type = GTK_STATE_NORMAL;
+#ifdef  G_OS_WIN32
+      else if (notebook->prelight_page == page )
+	state_type = GTK_STATE_PRELIGHT;
+#endif
       else 
 	state_type = GTK_STATE_ACTIVE;
       gtk_paint_extension(widget->style, widget->window,
@@ -3833,6 +3886,10 @@
 	{
 	  if (page == notebook->cur_page)
 	    gtk_widget_set_state (page->tab_label, GTK_STATE_NORMAL);
+    #ifdef  G_OS_WIN32
+          else if (notebook->prelight_page == page )
+            gtk_widget_set_state (page->tab_label, GTK_STATE_PRELIGHT);
+    #endif
 	  else
 	    gtk_widget_set_state (page->tab_label, GTK_STATE_ACTIVE);
 	}
diff -EbBu gtk+-2.8.17.orig/gtk/gtknotebook.h gtk+-2.8.17/gtk/gtknotebook.h
--- gtk+-2.8.17.orig/gtk/gtknotebook.h	2005-03-20 15:01:22.000000000 +0800
+++ gtk+-2.8.17/gtk/gtknotebook.h	2006-04-30 02:48:26.000000000 +0800
@@ -85,6 +85,10 @@
   guint has_before_next     : 1;
   guint has_after_previous  : 1;
   guint has_after_next      : 1;
+
+#ifdef  G_OS_WIN32  /* Currently, this is for Win32 only */
+  GtkNotebookPage *prelight_page;
+#endif
 };
 
 struct _GtkNotebookClass
