changeset 1401:7266e030a3e3

Attempt at fixing tooltips for GTK2.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 27 Nov 2011 20:37:33 +0000
parents ccd383e11ff8
children 8ff5b05318fb
files gtk/dw.c
diffstat 1 files changed, 12 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/gtk/dw.c	Sun Nov 27 20:28:15 2011 +0000
+++ b/gtk/dw.c	Sun Nov 27 20:37:33 2011 +0000
@@ -4368,17 +4368,20 @@
 
 void _create_tooltip(HWND handle, char *text)
 {
-   GtkTooltips *tooltips = NULL;
-   GtkWidget *oldtooltips = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_tooltip");
-    
-   if(oldtooltips)
-      gtk_widget_destroy(oldtooltips);
-   if(text)
+   GtkTooltips *tooltips = (GtkTooltips *)gtk_object_get_data(GTK_OBJECT(handle), "_dw_tooltip");
+   
+   if(!tooltips)
    {
       tooltips = gtk_tooltips_new();
+      gtk_object_set_data(GTK_OBJECT(handle), "_dw_tooltip", (gpointer)tooltips);
+   }
+   if(text && *text)
+   {
       gtk_tooltips_set_tip(tooltips, handle, text, NULL);
-   }
-   gtk_object_set_data(GTK_OBJECT(handle), "_dw_tooltip", (gpointer)tooltips);
+      gtk_tooltips_enable(tooltips);
+   }
+   else
+      gtk_tooltips_disable(tooltips);
 }
 
 /*
@@ -4458,7 +4461,7 @@
    gtk_widget_show( box );
    gtk_container_add( GTK_CONTAINER(button), box );
    gtk_widget_show( button );
-   _create_tooltip(tmp, text);
+   _create_tooltip(button, text);
    gtk_object_set_data( GTK_OBJECT(button), "_dw_id", GINT_TO_POINTER(id) );
    DW_MUTEX_UNLOCK;
    return button;