Index: gtk/gtkvolumebutton.c
===================================================================
--- gtk/gtkvolumebutton.c	(revision 18199)
+++ gtk/gtkvolumebutton.c	(working copy)
@@ -33,8 +33,8 @@
 #include <atk/atk.h>
 
 #include "gtkvolumebutton.h"
-#include "gtktooltips.h"
 #include "gtkstock.h"
+#include "gtktooltip.h"
 
 #include "gtkalias.h"
 
@@ -42,13 +42,17 @@
 struct _GtkVolumeButton
 {
   GtkScaleButton  parent;
-  GtkTooltips    *tooltips;
 };
 
 static void	gtk_volume_button_class_init	(GtkVolumeButtonClass *klass);
 static void	gtk_volume_button_init		(GtkVolumeButton      *button);
 static void	gtk_volume_button_dispose	(GObject *object);
-static void	gtk_volume_button_update_tooltip(GtkVolumeButton *button);
+static gboolean	cb_query_tooltip                (GtkWidget            *button,
+						 gint                  x,
+						 gint                  y,
+						 gboolean              keyboard_mode,
+						 GtkTooltip           *tooltip,
+						 gpointer              user_data);
 static void	cb_value_changed		(GtkVolumeButton      *button,
 						 gdouble               value,
 						 gpointer              user_data);
@@ -92,12 +96,11 @@ gtk_volume_button_init (GtkVolumeButton 
   g_object_set (G_OBJECT (button),
 		"adjustment", adj,
 		"size", GTK_ICON_SIZE_SMALL_TOOLBAR,
+		"has-tooltip", TRUE,
 	       	NULL);
 
-  button->tooltips = gtk_tooltips_new ();
-  g_object_ref_sink (button->tooltips);
-  gtk_volume_button_update_tooltip (button);
-
+  g_signal_connect (G_OBJECT (button), "query-tooltip",
+		    G_CALLBACK (cb_query_tooltip), NULL);
   g_signal_connect (G_OBJECT (button), "value-changed",
 		    G_CALLBACK (cb_value_changed), NULL);
 }
@@ -109,10 +112,6 @@ gtk_volume_button_dispose (GObject *obje
 
   button = GTK_VOLUME_BUTTON (object);
 
-  if (button->tooltips)
-    g_object_unref (button->tooltips);
-  button->tooltips = NULL;
-
   G_OBJECT_CLASS (parent_class)->dispose (object);
 }
 
@@ -135,8 +134,13 @@ gtk_volume_button_new (void)
   return GTK_WIDGET (button);
 }
 
-static void
-gtk_volume_button_update_tooltip (GtkVolumeButton *button)
+static gboolean
+cb_query_tooltip (GtkWidget  *button,
+		  gint        x,
+		  gint        y,
+		  gboolean    keyboard_mode,
+		  GtkTooltip *tooltip,
+		  gpointer    user_data)
 {
   gdouble val;
   char *str;
@@ -162,16 +166,16 @@ gtk_volume_button_update_tooltip (GtkVol
       str = g_strdup_printf (Q_("volume percentage|%d %%"), percent);
     }
 
-  gtk_tooltips_set_tip (button->tooltips,
-		       	GTK_WIDGET (button),
-			str, NULL);
+  gtk_tooltip_set_text (tooltip, str);
   g_free (str);
+
+  return TRUE;
 }
 
 static void
 cb_value_changed (GtkVolumeButton *button, gdouble value, gpointer user_data)
 {
-  gtk_volume_button_update_tooltip (button);
+  gtk_widget_trigger_tooltip_query (GTK_WIDGET (button));
 }
 
 
