summaryrefslogtreecommitdiff
path: root/pidgin/pidgintooltip.c
diff options
context:
space:
mode:
authorSadrul Habib Chowdhury <sadrul@pidgin.im>2008-10-31 07:59:46 +0000
committerSadrul Habib Chowdhury <sadrul@pidgin.im>2008-10-31 07:59:46 +0000
commitd3cc5bf24a5f759be9b7a83e12e8229196ca8e34 (patch)
tree71a090201ae21d68b0825085fefebf9bc2748fb0 /pidgin/pidgintooltip.c
parent65a637da9cd60700ec178cde1ed3dd24e0695f46 (diff)
parent7902d6c9d6e8608a7147949eaa1838206a3b14ea (diff)
downloadpidgin-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.c38
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;
}