diff options
author | Sadrul Habib Chowdhury <sadrul@pidgin.im> | 2008-10-31 07:59:46 +0000 |
---|---|---|
committer | Sadrul Habib Chowdhury <sadrul@pidgin.im> | 2008-10-31 07:59:46 +0000 |
commit | d3cc5bf24a5f759be9b7a83e12e8229196ca8e34 (patch) | |
tree | 71a090201ae21d68b0825085fefebf9bc2748fb0 /pidgin/pidgintooltip.c | |
parent | 65a637da9cd60700ec178cde1ed3dd24e0695f46 (diff) | |
parent | 7902d6c9d6e8608a7147949eaa1838206a3b14ea (diff) | |
download | pidgin-sadrul.struct.hiding.tar.gz |
propagate from branch 'im.pidgin.pidgin' (head 328a7b5211ba8112c8978d5b81f5e39bf2ce2596)sadrul.struct.hiding
to branch 'local.struct.hiding' (head ee0f2a4594bf5beb531faa4978a7a450903a6017)
Diffstat (limited to 'pidgin/pidgintooltip.c')
-rw-r--r-- | pidgin/pidgintooltip.c | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/pidgin/pidgintooltip.c b/pidgin/pidgintooltip.c index 964fb0cca8..91b4bd0a3e 100644 --- a/pidgin/pidgintooltip.c +++ b/pidgin/pidgintooltip.c @@ -30,6 +30,9 @@ #include "pidgintooltip.h" #include "debug.h" +static gboolean enable_tooltips; +static int tooltip_delay = -1; + struct { GtkWidget *widget; @@ -56,6 +59,27 @@ typedef struct } PidginTooltipData; static void +initialize_tooltip_delay() +{ +#if GTK_CHECK_VERSION(2,14,0) + GtkSettings *settings; +#endif + + if (tooltip_delay != -1) + return; + +#if GTK_CHECK_VERSION(2,14,0) + settings = gtk_settings_get_default(); + + g_object_get(settings, "gtk-enable-tooltips", &enable_tooltips, NULL); + g_object_get(settings, "gtk-tooltip-timeout", &tooltip_delay, NULL); +#else + tooltip_delay = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay"); + enable_tooltips = (tooltip_delay != 0); +#endif +} + +static void destroy_tooltip_data(PidginTooltipData *data) { gtk_tree_path_free(data->common.treeview.path); @@ -280,14 +304,12 @@ static gboolean row_motion_cb(GtkWidget *tv, GdkEventMotion *event, gpointer userdata) { GtkTreePath *path; - int delay; if (event->window != gtk_tree_view_get_bin_window(GTK_TREE_VIEW(tv))) return FALSE; /* The cursor is probably on the TreeView's header. */ - /* XXX: probably use something more generic? */ - delay = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay"); - if (delay == 0) + initialize_tooltip_delay(); + if (!enable_tooltips) return FALSE; if (pidgin_tooltip.timeout) { @@ -307,7 +329,7 @@ row_motion_cb(GtkWidget *tv, GdkEventMotion *event, gpointer userdata) gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &pidgin_tooltip.tip_rect); gtk_tree_path_free(path); - pidgin_tooltip.timeout = g_timeout_add(delay, (GSourceFunc)pidgin_tooltip_timeout, userdata); + pidgin_tooltip.timeout = g_timeout_add(tooltip_delay, (GSourceFunc)pidgin_tooltip_timeout, userdata); return FALSE; } @@ -337,13 +359,13 @@ gboolean pidgin_tooltip_setup_for_treeview(GtkWidget *tree, gpointer userdata, static gboolean widget_motion_cb(GtkWidget *widget, GdkEvent *event, gpointer data) { - int delay = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay"); + initialize_tooltip_delay(); pidgin_tooltip_destroy(); - if (delay == 0) + if (!enable_tooltips) return FALSE; - pidgin_tooltip.timeout = g_timeout_add(delay, (GSourceFunc)pidgin_tooltip_timeout, data); + pidgin_tooltip.timeout = g_timeout_add(tooltip_delay, (GSourceFunc)pidgin_tooltip_timeout, data); return FALSE; } |