gtk/gtktooltips.c (gtk_tooltips_set_tip, gtk_tooltips_draw_tips):

Don't remove the tooltip window when the tip text changes. (#15891)
This commit is contained in:
Matthias Clasen 2001-08-13 10:43:28 +00:00
parent dc43576615
commit abea7e4283
8 changed files with 71 additions and 21 deletions

View File

@ -1,3 +1,8 @@
2001-08-13 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/gtktooltips.c (gtk_tooltips_set_tip, gtk_tooltips_draw_tips):
Don't remove the tooltip window when the tip text changes. (#15891)
Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com> Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra * gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra

View File

@ -1,3 +1,8 @@
2001-08-13 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/gtktooltips.c (gtk_tooltips_set_tip, gtk_tooltips_draw_tips):
Don't remove the tooltip window when the tip text changes. (#15891)
Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com> Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra * gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra

View File

@ -1,3 +1,8 @@
2001-08-13 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/gtktooltips.c (gtk_tooltips_set_tip, gtk_tooltips_draw_tips):
Don't remove the tooltip window when the tip text changes. (#15891)
Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com> Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra * gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra

View File

@ -1,3 +1,8 @@
2001-08-13 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/gtktooltips.c (gtk_tooltips_set_tip, gtk_tooltips_draw_tips):
Don't remove the tooltip window when the tip text changes. (#15891)
Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com> Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra * gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra

View File

@ -1,3 +1,8 @@
2001-08-13 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/gtktooltips.c (gtk_tooltips_set_tip, gtk_tooltips_draw_tips):
Don't remove the tooltip window when the tip text changes. (#15891)
Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com> Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra * gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra

View File

@ -1,3 +1,8 @@
2001-08-13 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/gtktooltips.c (gtk_tooltips_set_tip, gtk_tooltips_draw_tips):
Don't remove the tooltip window when the tip text changes. (#15891)
Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com> Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra * gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra

View File

@ -1,3 +1,8 @@
2001-08-13 Matthias Clasen <matthiasc@waldgeist.poet.de>
* gtk/gtktooltips.c (gtk_tooltips_set_tip, gtk_tooltips_draw_tips):
Don't remove the tooltip window when the tip text changes. (#15891)
Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com> Sun Aug 12 12:02:09 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra * gtk/Makefile.am ($(srcdir)/gtkmarshal.c): Remove extra

View File

@ -243,43 +243,61 @@ gtk_tooltips_set_tip (GtkTooltips *tooltips,
g_return_if_fail (widget != NULL); g_return_if_fail (widget != NULL);
tooltipsdata = gtk_tooltips_data_get (widget); tooltipsdata = gtk_tooltips_data_get (widget);
if (tooltipsdata)
gtk_tooltips_widget_remove (tooltipsdata->widget, tooltipsdata);
if (!tip_text) if (!tip_text)
return;
tooltipsdata = g_new0 (GtkTooltipsData, 1);
if (tooltipsdata != NULL)
{ {
if (tooltipsdata)
gtk_tooltips_widget_remove (tooltipsdata->widget, tooltipsdata);
return;
}
if (tooltips->active_tips_data
&& tooltips->active_tips_data->widget == widget
&& GTK_WIDGET_DRAWABLE (tooltips->active_tips_data->widget))
{
g_free (tooltipsdata->tip_text);
g_free (tooltipsdata->tip_private);
tooltipsdata->tip_text = g_strdup (tip_text);
tooltipsdata->tip_private = g_strdup (tip_private);
gtk_tooltips_draw_tips (tooltips);
}
else
{
gtk_widget_ref (widget);
if (tooltipsdata)
gtk_tooltips_widget_remove (tooltipsdata->widget, tooltipsdata);
tooltipsdata = g_new0 (GtkTooltipsData, 1);
tooltipsdata->tooltips = tooltips; tooltipsdata->tooltips = tooltips;
tooltipsdata->widget = widget; tooltipsdata->widget = widget;
gtk_widget_ref (widget);
tooltipsdata->tip_text = g_strdup (tip_text); tooltipsdata->tip_text = g_strdup (tip_text);
tooltipsdata->tip_private = g_strdup (tip_private); tooltipsdata->tip_private = g_strdup (tip_private);
tooltips->tips_data_list = g_list_append (tooltips->tips_data_list, tooltips->tips_data_list = g_list_append (tooltips->tips_data_list,
tooltipsdata); tooltipsdata);
gtk_signal_connect_after(GTK_OBJECT (widget), "event", gtk_signal_connect_after (GTK_OBJECT (widget), "event",
(GtkSignalFunc) gtk_tooltips_event_handler, (GtkSignalFunc) gtk_tooltips_event_handler,
(gpointer) tooltipsdata); tooltipsdata);
gtk_object_set_data (GTK_OBJECT (widget), tooltips_data_key, gtk_object_set_data (GTK_OBJECT (widget), tooltips_data_key,
(gpointer) tooltipsdata); tooltipsdata);
gtk_signal_connect (GTK_OBJECT (widget), "unmap", gtk_signal_connect (GTK_OBJECT (widget), "unmap",
(GtkSignalFunc) gtk_tooltips_widget_unmap, (GtkSignalFunc) gtk_tooltips_widget_unmap,
(gpointer) tooltipsdata); tooltipsdata);
gtk_signal_connect (GTK_OBJECT (widget), "unrealize", gtk_signal_connect (GTK_OBJECT (widget), "unrealize",
(GtkSignalFunc) gtk_tooltips_widget_unmap, (GtkSignalFunc) gtk_tooltips_widget_unmap,
(gpointer) tooltipsdata); tooltipsdata);
gtk_signal_connect (GTK_OBJECT (widget), "destroy", gtk_signal_connect (GTK_OBJECT (widget), "destroy",
(GtkSignalFunc) gtk_tooltips_widget_remove, (GtkSignalFunc) gtk_tooltips_widget_remove,
(gpointer) tooltipsdata); tooltipsdata);
} }
} }
@ -306,10 +324,7 @@ gtk_tooltips_draw_tips (GtkTooltips * tooltips)
if (!tooltips->tip_window) if (!tooltips->tip_window)
gtk_tooltips_force_window (tooltips); gtk_tooltips_force_window (tooltips);
else if (GTK_WIDGET_VISIBLE (tooltips->tip_window)) else if (GTK_WIDGET_VISIBLE (tooltips->tip_window))
{ g_get_current_time (&tooltips->last_popdown);
gtk_widget_hide (tooltips->tip_window);
g_get_current_time (&tooltips->last_popdown);
}
gtk_widget_ensure_style (tooltips->tip_window); gtk_widget_ensure_style (tooltips->tip_window);
style = tooltips->tip_window->style; style = tooltips->tip_window->style;
@ -344,7 +359,7 @@ gtk_tooltips_draw_tips (GtkTooltips * tooltips)
else else
y = y + widget->allocation.height + 4; y = y + widget->allocation.height + 4;
gtk_widget_set_uposition (tooltips->tip_window, x, y); gtk_window_move (tooltips->tip_window, x, y);
gtk_widget_show (tooltips->tip_window); gtk_widget_show (tooltips->tip_window);
} }