diff options
-rw-r--r-- | ChangeLog | 20 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 20 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 20 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 20 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 20 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 20 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 20 | ||||
-rw-r--r-- | gtk/gtktooltips.c | 63 | ||||
-rw-r--r-- | gtk/gtktooltips.h | 57 |
9 files changed, 206 insertions, 54 deletions
@@ -1,3 +1,23 @@ +Wed Feb 18 02:58:50 1998 Tim Janik <timj@gimp.org> + + * gtk/gtktooltips.h: + new functions gtk_tooltips_data_get and + gtk_tooltips_set_tip, gtk_tooltips_set_tips is discouraged now. + (_GtkTooltips): removed some fields that were never used. + changed boolean fields to one bit size, to pack together with + the delay field. + (_GtkTooltipsData): added tip_private, renamed tips_text to + tip_text. + * gtk/gtktooltips.c: + (gtk_tooltips_data_get): new function to retrive the + _GtkTooltipsData structure of a widget. + (gtk_tooltips_set_tip): new function for more extensible tooltips + settings than gtk_tooltips_set_tips which is discuraged now. + removed a bug that caused a stale object_data key to a + _GtkTooltipsData structure. + removed a bug that caused tips falsly to come up for a grab widget + on widgets where events were grabbed from. + 1998-02-17 Federico Mena Quintero <federico@nuclecu.unam.mx> * gdk/gdkcc.c: Added some missing newlines on debug messages. diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index a5746d208..efaff46e2 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,23 @@ +Wed Feb 18 02:58:50 1998 Tim Janik <timj@gimp.org> + + * gtk/gtktooltips.h: + new functions gtk_tooltips_data_get and + gtk_tooltips_set_tip, gtk_tooltips_set_tips is discouraged now. + (_GtkTooltips): removed some fields that were never used. + changed boolean fields to one bit size, to pack together with + the delay field. + (_GtkTooltipsData): added tip_private, renamed tips_text to + tip_text. + * gtk/gtktooltips.c: + (gtk_tooltips_data_get): new function to retrive the + _GtkTooltipsData structure of a widget. + (gtk_tooltips_set_tip): new function for more extensible tooltips + settings than gtk_tooltips_set_tips which is discuraged now. + removed a bug that caused a stale object_data key to a + _GtkTooltipsData structure. + removed a bug that caused tips falsly to come up for a grab widget + on widgets where events were grabbed from. + 1998-02-17 Federico Mena Quintero <federico@nuclecu.unam.mx> * gdk/gdkcc.c: Added some missing newlines on debug messages. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index a5746d208..efaff46e2 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,23 @@ +Wed Feb 18 02:58:50 1998 Tim Janik <timj@gimp.org> + + * gtk/gtktooltips.h: + new functions gtk_tooltips_data_get and + gtk_tooltips_set_tip, gtk_tooltips_set_tips is discouraged now. + (_GtkTooltips): removed some fields that were never used. + changed boolean fields to one bit size, to pack together with + the delay field. + (_GtkTooltipsData): added tip_private, renamed tips_text to + tip_text. + * gtk/gtktooltips.c: + (gtk_tooltips_data_get): new function to retrive the + _GtkTooltipsData structure of a widget. + (gtk_tooltips_set_tip): new function for more extensible tooltips + settings than gtk_tooltips_set_tips which is discuraged now. + removed a bug that caused a stale object_data key to a + _GtkTooltipsData structure. + removed a bug that caused tips falsly to come up for a grab widget + on widgets where events were grabbed from. + 1998-02-17 Federico Mena Quintero <federico@nuclecu.unam.mx> * gdk/gdkcc.c: Added some missing newlines on debug messages. diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index a5746d208..efaff46e2 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,23 @@ +Wed Feb 18 02:58:50 1998 Tim Janik <timj@gimp.org> + + * gtk/gtktooltips.h: + new functions gtk_tooltips_data_get and + gtk_tooltips_set_tip, gtk_tooltips_set_tips is discouraged now. + (_GtkTooltips): removed some fields that were never used. + changed boolean fields to one bit size, to pack together with + the delay field. + (_GtkTooltipsData): added tip_private, renamed tips_text to + tip_text. + * gtk/gtktooltips.c: + (gtk_tooltips_data_get): new function to retrive the + _GtkTooltipsData structure of a widget. + (gtk_tooltips_set_tip): new function for more extensible tooltips + settings than gtk_tooltips_set_tips which is discuraged now. + removed a bug that caused a stale object_data key to a + _GtkTooltipsData structure. + removed a bug that caused tips falsly to come up for a grab widget + on widgets where events were grabbed from. + 1998-02-17 Federico Mena Quintero <federico@nuclecu.unam.mx> * gdk/gdkcc.c: Added some missing newlines on debug messages. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index a5746d208..efaff46e2 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,23 @@ +Wed Feb 18 02:58:50 1998 Tim Janik <timj@gimp.org> + + * gtk/gtktooltips.h: + new functions gtk_tooltips_data_get and + gtk_tooltips_set_tip, gtk_tooltips_set_tips is discouraged now. + (_GtkTooltips): removed some fields that were never used. + changed boolean fields to one bit size, to pack together with + the delay field. + (_GtkTooltipsData): added tip_private, renamed tips_text to + tip_text. + * gtk/gtktooltips.c: + (gtk_tooltips_data_get): new function to retrive the + _GtkTooltipsData structure of a widget. + (gtk_tooltips_set_tip): new function for more extensible tooltips + settings than gtk_tooltips_set_tips which is discuraged now. + removed a bug that caused a stale object_data key to a + _GtkTooltipsData structure. + removed a bug that caused tips falsly to come up for a grab widget + on widgets where events were grabbed from. + 1998-02-17 Federico Mena Quintero <federico@nuclecu.unam.mx> * gdk/gdkcc.c: Added some missing newlines on debug messages. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index a5746d208..efaff46e2 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,23 @@ +Wed Feb 18 02:58:50 1998 Tim Janik <timj@gimp.org> + + * gtk/gtktooltips.h: + new functions gtk_tooltips_data_get and + gtk_tooltips_set_tip, gtk_tooltips_set_tips is discouraged now. + (_GtkTooltips): removed some fields that were never used. + changed boolean fields to one bit size, to pack together with + the delay field. + (_GtkTooltipsData): added tip_private, renamed tips_text to + tip_text. + * gtk/gtktooltips.c: + (gtk_tooltips_data_get): new function to retrive the + _GtkTooltipsData structure of a widget. + (gtk_tooltips_set_tip): new function for more extensible tooltips + settings than gtk_tooltips_set_tips which is discuraged now. + removed a bug that caused a stale object_data key to a + _GtkTooltipsData structure. + removed a bug that caused tips falsly to come up for a grab widget + on widgets where events were grabbed from. + 1998-02-17 Federico Mena Quintero <federico@nuclecu.unam.mx> * gdk/gdkcc.c: Added some missing newlines on debug messages. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index a5746d208..efaff46e2 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,23 @@ +Wed Feb 18 02:58:50 1998 Tim Janik <timj@gimp.org> + + * gtk/gtktooltips.h: + new functions gtk_tooltips_data_get and + gtk_tooltips_set_tip, gtk_tooltips_set_tips is discouraged now. + (_GtkTooltips): removed some fields that were never used. + changed boolean fields to one bit size, to pack together with + the delay field. + (_GtkTooltipsData): added tip_private, renamed tips_text to + tip_text. + * gtk/gtktooltips.c: + (gtk_tooltips_data_get): new function to retrive the + _GtkTooltipsData structure of a widget. + (gtk_tooltips_set_tip): new function for more extensible tooltips + settings than gtk_tooltips_set_tips which is discuraged now. + removed a bug that caused a stale object_data key to a + _GtkTooltipsData structure. + removed a bug that caused tips falsly to come up for a grab widget + on widgets where events were grabbed from. + 1998-02-17 Federico Mena Quintero <federico@nuclecu.unam.mx> * gdk/gdkcc.c: Added some missing newlines on debug messages. diff --git a/gtk/gtktooltips.c b/gtk/gtktooltips.c index 272eadc70..00e39234f 100644 --- a/gtk/gtktooltips.c +++ b/gtk/gtktooltips.c @@ -47,6 +47,7 @@ static void gtk_tooltips_create_window (GtkTooltips *tooltips); static void gtk_tooltips_draw_tips (GtkTooltips *tooltips); static GtkDataClass *parent_class; +static const gchar *tooltips_data_key = "_GtkTooltipsData"; guint gtk_tooltips_get_type () @@ -87,7 +88,6 @@ static void gtk_tooltips_init (GtkTooltips *tooltips) { tooltips->enabled = TRUE; - tooltips->numwidgets = 0; tooltips->delay = DEFAULT_DELAY; tooltips->widget_list = NULL; tooltips->gc = NULL; @@ -112,12 +112,14 @@ gtk_tooltips_free_string (gpointer data, gpointer user_data) static void gtk_tooltips_destroy_data (GtkTooltipsData *tooltipsdata) { - g_free (tooltipsdata->tips_text); + g_free (tooltipsdata->tip_text); + g_free (tooltipsdata->tip_private); g_list_foreach (tooltipsdata->row, gtk_tooltips_free_string, 0); if (tooltipsdata->row) g_list_free (tooltipsdata->row); gtk_signal_disconnect_by_data (GTK_OBJECT (tooltipsdata->widget), (gpointer) tooltipsdata); + gtk_object_remove_data (GTK_OBJECT (tooltipsdata->widget), tooltips_data_key); gtk_widget_unref (tooltipsdata->widget); g_free (tooltipsdata); } @@ -188,7 +190,7 @@ gtk_tooltips_layout_text (GtkTooltips *tooltips, GtkTooltipsData *data) data->font = tooltips->tip_window->style->font; data->width = 0; - text = data->tips_text; + text = data->tip_text; if (!text) return; @@ -304,47 +306,52 @@ gtk_tooltips_set_delay (GtkTooltips *tooltips, tooltips->delay = delay; } +GtkTooltipsData* +gtk_tooltips_data_get (GtkWidget *widget) +{ + g_return_val_if_fail (widget != NULL, NULL); + + return gtk_object_get_data ((GtkObject*) widget, tooltips_data_key); +} + void -gtk_tooltips_set_tips (GtkTooltips *tooltips, - GtkWidget *widget, - const gchar *tips_text) +gtk_tooltips_set_tip (GtkTooltips *tooltips, + GtkWidget *widget, + const gchar *tip_text, + const gchar *tip_private) { GtkTooltipsData *tooltipsdata; g_return_if_fail (tooltips != NULL); + g_return_if_fail (GTK_IS_TOOLTIPS (tooltips)); g_return_if_fail (widget != NULL); - tooltipsdata = (GtkTooltipsData *) - gtk_object_get_data (GTK_OBJECT (widget), "_GtkTooltips"); + tooltipsdata = gtk_tooltips_data_get (widget); if (tooltipsdata) gtk_tooltips_widget_remove (tooltipsdata->widget, tooltipsdata); - tooltipsdata = g_new(GtkTooltipsData, 1); + if (!tip_text) + return; + + tooltipsdata = g_new0 (GtkTooltipsData, 1); if (tooltipsdata != NULL) { - memset (tooltipsdata, 0, sizeof (*tooltipsdata)); tooltipsdata->tooltips = tooltips; tooltipsdata->widget = widget; gtk_widget_ref (widget); - tooltipsdata->tips_text = g_strdup (tips_text); - if (!tooltipsdata->tips_text) - { - g_free (tooltipsdata); - return; - } + tooltipsdata->tip_text = g_strdup (tip_text); + tooltipsdata->tip_private = g_strdup (tip_private); gtk_tooltips_layout_text (tooltips, tooltipsdata); tooltips->widget_list = g_list_append (tooltips->widget_list, tooltipsdata); - tooltips->numwidgets++; - gtk_signal_connect_after(GTK_OBJECT (widget), "event", (GtkSignalFunc) gtk_tooltips_event_handler, (gpointer) tooltipsdata); - gtk_object_set_data (GTK_OBJECT (widget), "_GtkTooltips", + gtk_object_set_data (GTK_OBJECT (widget), tooltips_data_key, (gpointer) tooltipsdata); gtk_signal_connect (GTK_OBJECT (widget), "unmap", @@ -537,13 +544,15 @@ gtk_tooltips_event_handler (GtkWidget *widget, { GtkTooltips *tooltips; GtkTooltipsData *old_widget; + GtkWidget *event_widget; gint returnval = FALSE; - old_widget = (GtkTooltipsData*) - gtk_object_get_data (GTK_OBJECT (widget),"_GtkTooltips"); + old_widget = gtk_tooltips_data_get (widget); tooltips = old_widget->tooltips; + event_widget = gtk_get_event_widget (event); - if (tooltips->enabled == FALSE) + if (tooltips->enabled == FALSE || + event_widget != widget) return returnval; if ((event->type == GDK_LEAVE_NOTIFY || event->type == GDK_ENTER_NOTIFY) && @@ -564,12 +573,8 @@ gtk_tooltips_event_handler (GtkWidget *widget, else if (event->type == GDK_MOTION_NOTIFY || event->type == GDK_ENTER_NOTIFY) { old_widget = tooltips->active_widget; -#if 0 - if (widget->window != event->crossing.window) - tooltips->active_widget = NULL; - else -#endif - gtk_tooltips_set_active_widget (tooltips, widget); + + gtk_tooltips_set_active_widget (tooltips, widget); if (old_widget != tooltips->active_widget) { @@ -624,7 +629,7 @@ static void gtk_tooltips_widget_remove (GtkWidget *widget, gpointer data) { - GtkTooltipsData *tooltipsdata = (GtkTooltipsData *)data; + GtkTooltipsData *tooltipsdata = (GtkTooltipsData*) data; GtkTooltips *tooltips = tooltipsdata->tooltips; gtk_tooltips_widget_unmap (widget, data); diff --git a/gtk/gtktooltips.h b/gtk/gtktooltips.h index 3bbd09dfd..4ed9b7c2f 100644 --- a/gtk/gtktooltips.h +++ b/gtk/gtktooltips.h @@ -8,7 +8,7 @@ * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public @@ -26,19 +26,20 @@ extern "C" { #endif /* __cplusplus */ -#define GTK_TOOLTIPS(obj) GTK_CHECK_CAST (obj, gtk_tooltips_get_type (), GtkTooltips) +#define GTK_TOOLTIPS(obj) GTK_CHECK_CAST (obj, gtk_tooltips_get_type (), GtkTooltips) #define GTK_TOOLTIPS_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_tooltips_get_type (), GtkTooltipsClass) -#define GTK_IS_TOOLTIPS(obj) GTK_CHECK_TYPE (obj, gtk_tooltips_get_type ()) +#define GTK_IS_TOOLTIPS(obj) GTK_CHECK_TYPE (obj, gtk_tooltips_get_type ()) -typedef struct _GtkTooltips GtkTooltips; +typedef struct _GtkTooltips GtkTooltips; typedef struct _GtkTooltipsClass GtkTooltipsClass; -typedef struct _GtkTooltipsData GtkTooltipsData; +typedef struct _GtkTooltipsData GtkTooltipsData; struct _GtkTooltipsData { GtkTooltips *tooltips; GtkWidget *widget; - gchar *tips_text; + gchar *tip_text; + gchar *tip_private; GdkFont *font; gint width; GList *row; @@ -56,12 +57,10 @@ struct _GtkTooltips GdkColor *foreground; GdkColor *background; - gint numwidgets; - gint enabled; - gint inside; - gint delay; - gint timer_tag; - gint timer_active; + gint16 delay; + gint enabled : 1; + gint timer_active : 1; + gint timer_tag; }; struct _GtkTooltipsClass @@ -69,19 +68,27 @@ struct _GtkTooltipsClass GtkDataClass parent_class; }; -GtkType gtk_tooltips_get_type (void); -GtkTooltips* gtk_tooltips_new (void); - -void gtk_tooltips_enable (GtkTooltips *tooltips); -void gtk_tooltips_disable (GtkTooltips *tooltips); -void gtk_tooltips_set_delay (GtkTooltips *tooltips, - gint delay); -void gtk_tooltips_set_tips (GtkTooltips *tooltips, - GtkWidget *widget, - const gchar *tips_text); -void gtk_tooltips_set_colors (GtkTooltips *tooltips, - GdkColor *background, - GdkColor *foreground); +GtkType gtk_tooltips_get_type (void); +GtkTooltips* gtk_tooltips_new (void); + +void gtk_tooltips_enable (GtkTooltips *tooltips); +void gtk_tooltips_disable (GtkTooltips *tooltips); +void gtk_tooltips_set_delay (GtkTooltips *tooltips, + gint delay); +void gtk_tooltips_set_tip (GtkTooltips *tooltips, + GtkWidget *widget, + const gchar *tip_text, + const gchar *tip_private); +void gtk_tooltips_set_colors (GtkTooltips *tooltips, + GdkColor *background, + GdkColor *foreground); +GtkTooltipsData* gtk_tooltips_data_get (GtkWidget *widget); + +/* discouraged old function name + */ +#define gtk_tooltips_set_tips(t,w,x) gtk_tooltips_set_tip(t,w,x,NULL) + + #ifdef __cplusplus } |