Mercurial > dwindows
diff gtk/dw.c @ 1400:ccd383e11ff8
Allow removing of tooltips by passing NULL or "" and prevent double tooltips on some platforms.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sun, 27 Nov 2011 20:28:15 +0000 |
parents | 614fb124d2e2 |
children | 7266e030a3e3 |
line wrap: on
line diff
--- a/gtk/dw.c Sun Nov 27 12:08:05 2011 +0000 +++ b/gtk/dw.c Sun Nov 27 20:28:15 2011 +0000 @@ -4366,6 +4366,21 @@ return tmp; } +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) + { + tooltips = gtk_tooltips_new(); + gtk_tooltips_set_tip(tooltips, handle, text, NULL); + } + gtk_object_set_data(GTK_OBJECT(handle), "_dw_tooltip", (gpointer)tooltips); +} + /* * Create a new bitmap button window (widget) to be packed. * Parameters: @@ -4376,7 +4391,6 @@ { GtkWidget *tmp; GtkWidget *bitmap; - GtkTooltips *tooltips; int _locked_by_me = FALSE; DW_MUTEX_LOCK; @@ -4389,12 +4403,7 @@ gtk_container_add (GTK_CONTAINER(tmp), bitmap); } gtk_widget_show(tmp); - if(text) - { - tooltips = gtk_tooltips_new(); - gtk_tooltips_set_tip(tooltips, tmp, text, NULL); - gtk_object_set_data(GTK_OBJECT(tmp), "_dw_tooltip", (gpointer)tooltips); - } + _create_tooltip(tmp, text); gtk_object_set_data(GTK_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); DW_MUTEX_UNLOCK; return tmp; @@ -4416,7 +4425,6 @@ GtkWidget *box; GtkWidget *label; GtkWidget *button; - GtkTooltips *tooltips; char *label_text=NULL; int _locked_by_me = FALSE; @@ -4450,12 +4458,7 @@ gtk_widget_show( box ); gtk_container_add( GTK_CONTAINER(button), box ); gtk_widget_show( button ); - if ( text ) - { - tooltips = gtk_tooltips_new(); - gtk_tooltips_set_tip( tooltips, button, text, NULL ); - gtk_object_set_data( GTK_OBJECT(button), "_dw_tooltip", (gpointer)tooltips ); - } + _create_tooltip(tmp, text); gtk_object_set_data( GTK_OBJECT(button), "_dw_id", GINT_TO_POINTER(id) ); DW_MUTEX_UNLOCK; return button; @@ -4474,7 +4477,6 @@ { GtkWidget *tmp; GtkWidget *bitmap; - GtkTooltips *tooltips; int _locked_by_me = FALSE; DW_MUTEX_LOCK; @@ -4487,12 +4489,7 @@ gtk_container_add (GTK_CONTAINER(tmp), bitmap); } gtk_widget_show(tmp); - if(text) - { - tooltips = gtk_tooltips_new(); - gtk_tooltips_set_tip(tooltips, tmp, text, NULL); - gtk_object_set_data(GTK_OBJECT(tmp), "_dw_tooltip", (gpointer)tooltips); - } + _create_tooltip(tmp, text); gtk_object_set_data(GTK_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); DW_MUTEX_UNLOCK; return tmp; @@ -4932,12 +4929,9 @@ void API dw_window_set_tooltip(HWND handle, char *bubbletext) { int _locked_by_me = FALSE; - GtkTooltips *tooltips; - - DW_MUTEX_LOCK; - tooltips = gtk_tooltips_new(); - gtk_tooltips_set_tip(tooltips, handle, bubbletext ? bubbletext : "", NULL); - gtk_object_set_data(GTK_OBJECT(handle), "_dw_tooltip", (gpointer)tooltips); + + DW_MUTEX_LOCK; + _create_tooltip(handle, bubbletext); DW_MUTEX_UNLOCK; }