gtk+ r20216 - in branches/gtk-2-12: . gtk



Author: kristian
Date: Wed May 28 14:00:42 2008
New Revision: 20216
URL: http://svn.gnome.org/viewvc/gtk+?rev=20216&view=rev

Log:
2008-05-28  Kristian Rietveld  <kris imendio com>

	Merge from trunk:

	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:
   branches/gtk-2-12/ChangeLog
   branches/gtk-2-12/gtk/gtktooltip.c

Modified: branches/gtk-2-12/gtk/gtktooltip.c
==============================================================================
--- branches/gtk-2-12/gtk/gtktooltip.c	(original)
+++ branches/gtk-2-12/gtk/gtktooltip.c	Wed May 28 14:00:42 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
@@ -322,6 +323,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;
@@ -413,8 +423,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
@@ -765,6 +779,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]