gtk+ r20215 - in trunk: . gtk
- From: kristian svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r20215 - in trunk: . gtk
- Date: Wed, 28 May 2008 14:00:32 +0000 (UTC)
Author: kristian
Date: Wed May 28 14:00:31 2008
New Revision: 20215
URL: http://svn.gnome.org/viewvc/gtk+?rev=20215&view=rev
Log:
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.
Modified:
trunk/ChangeLog
trunk/gtk/gtktooltip.c
Modified: trunk/gtk/gtktooltip.c
==============================================================================
--- trunk/gtk/gtktooltip.c (original)
+++ trunk/gtk/gtktooltip.c Wed May 28 14:00:31 2008
@@ -71,6 +71,7 @@
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 @@
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_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 @@
}
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;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]