Commit 382ce2f1 authored by Kristian Rietveld's avatar Kristian Rietveld Committed by Kristian Rietveld

Bug 504087 - make gtk_tooltip_set_custom a no-op for setting the current

2008-05-28  Kristian Rietveld  <kris@imendio.com>

	Bug 504087 - make gtk_tooltip_set_custom a no-op for setting the
	current widget again.

	* gtk/gtktooltip.c (gtk_tooltip_set_custom),
	(gtk_tooltip_reset), (gtk_tooltip_run_requery): use a
	custom_was_reset field to check if the custom widget is set again in
	the query-tooltip callback; if not, we set it to NULL.  Based on a
	patch by Xavier Claessens, insightful comments from Jean-Yves Lefort
	and Christian Persch.


svn path=/trunk/; revision=20215
parent 83b215f9
2008-05-28 Kristian Rietveld <kris@imendio.com>
Bug 504087 - make gtk_tooltip_set_custom a no-op for setting the
current widget again.
* gtk/gtktooltip.c (gtk_tooltip_set_custom),
(gtk_tooltip_reset), (gtk_tooltip_run_requery): use a
custom_was_reset field to check if the custom widget is set again in
the query-tooltip callback; if not, we set it to NULL. Based on a
patch by Xavier Claessens, insightful comments from Jean-Yves Lefort
and Christian Persch.
2008-05-28 Michael Natterer <mitch@imendio.com>
* modules/printbackends/cups/gtkcupsutils.c
......
......@@ -71,6 +71,7 @@ struct _GtkTooltip
guint browse_mode_enabled : 1;
guint keyboard_mode_enabled : 1;
guint tip_area_set : 1;
guint custom_was_reset : 1;
};
struct _GtkTooltipClass
......@@ -349,6 +350,15 @@ gtk_tooltip_set_custom (GtkTooltip *tooltip,
if (custom_widget)
g_return_if_fail (GTK_IS_WIDGET (custom_widget));
/* The custom widget has been updated from the query-tooltip
* callback, so we do not want to reset the custom widget later on.
*/
tooltip->custom_was_reset = TRUE;
/* No need to do anything if the custom widget stays the same */
if (tooltip->custom_widget == custom_widget)
return;
if (tooltip->custom_widget)
{
GtkWidget *custom = tooltip->custom_widget;
......@@ -440,8 +450,12 @@ gtk_tooltip_reset (GtkTooltip *tooltip)
{
gtk_tooltip_set_markup (tooltip, NULL);
gtk_tooltip_set_icon (tooltip, NULL);
gtk_tooltip_set_custom (tooltip, NULL);
gtk_tooltip_set_tip_area (tooltip, NULL);
/* See if the custom widget is again set from the query-tooltip
* callback.
*/
tooltip->custom_was_reset = FALSE;
}
static void
......@@ -792,6 +806,12 @@ gtk_tooltip_run_requery (GtkWidget **widget,
}
while (*widget);
/* If the custom widget was not reset in the query-tooltip
* callback, we clear it here.
*/
if (!tooltip->custom_was_reset)
gtk_tooltip_set_custom (tooltip, NULL);
return return_value;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment