pidgin/pidgintooltip.c

Tue, 21 Jul 2009 03:05:36 +0000

author
Paul Aurich <darkrain42@pidgin.im>
date
Tue, 21 Jul 2009 03:05:36 +0000
changeset 27910
f72e8440bd9b
parent 25607
ce654025996e
child 29499
08832cbd946b
permissions
-rw-r--r--

Check in updated icons, logo, and new voice/video icons from Hylke.

The new status icons mostly look the same except for Offline.

21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1 /**
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2 * @file pidgintooltip.c Pidgin Tooltip API
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 * @ingroup pidgin
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
4 */
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
5
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
6 /* pidgin
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 *
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
10 * source distribution.
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
11 *
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
16 *
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
21 *
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
25 */
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27 #include "internal.h"
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28 #include "prefs.h"
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
29 #include "pidgin.h"
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30 #include "pidgintooltip.h"
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
31 #include "debug.h"
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
32
24558
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
33 static gboolean enable_tooltips;
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
34 static int tooltip_delay = -1;
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
35
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
36 struct
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37 {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
38 GtkWidget *widget;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39 int timeout;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
40 GdkRectangle tip_rect;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41 GtkWidget *tipwindow;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
42 PidginTooltipPaint paint_tooltip;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
43 } pidgin_tooltip;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
44
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
45 typedef struct
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
46 {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
47 GtkWidget *widget;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
48 gpointer userdata;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
49 PidginTooltipPaint paint_tooltip;
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
50 union {
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
51 struct {
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
52 PidginTooltipCreateForTree create_tooltip;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
53 GtkTreePath *path;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
54 } treeview;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
55 struct {
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
56 PidginTooltipCreate create_tooltip;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
57 } widget;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
58 } common;
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
59 } PidginTooltipData;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
61 static void
24558
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
62 initialize_tooltip_delay()
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
63 {
24566
96129698582d Fix a compiler warning I introduce with the GtkSetting code.
Richard Laager <rlaager@pidgin.im>
parents: 24558
diff changeset
64 #if GTK_CHECK_VERSION(2,14,0)
24558
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
65 GtkSettings *settings;
24566
96129698582d Fix a compiler warning I introduce with the GtkSetting code.
Richard Laager <rlaager@pidgin.im>
parents: 24558
diff changeset
66 #endif
24558
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
67
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
68 if (tooltip_delay != -1)
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
69 return;
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
70
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
71 #if GTK_CHECK_VERSION(2,14,0)
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
72 settings = gtk_settings_get_default();
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
73
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
74 g_object_get(settings, "gtk-enable-tooltips", &enable_tooltips, NULL);
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
75 g_object_get(settings, "gtk-tooltip-timeout", &tooltip_delay, NULL);
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
76 #else
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
77 tooltip_delay = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay");
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
78 enable_tooltips = (tooltip_delay != 0);
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
79 #endif
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
80 }
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
81
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
82 static void
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
83 destroy_tooltip_data(PidginTooltipData *data)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
84 {
25435
812799377532 Jan Kratochvil found another race condition in the treeview tooltip code, this fixes it. Fixes #8069.
Daniel Atallah <datallah@pidgin.im>
parents: 24566
diff changeset
85 if (data->common.treeview.path)
812799377532 Jan Kratochvil found another race condition in the treeview tooltip code, this fixes it. Fixes #8069.
Daniel Atallah <datallah@pidgin.im>
parents: 24566
diff changeset
86 gtk_tree_path_free(data->common.treeview.path);
23901
fb9610ea214c Jan Kratochvil noticed there was a race condition in the treeview tooltip
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
87 pidgin_tooltip_destroy();
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
88 g_free(data);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
89 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
90
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
91 void pidgin_tooltip_destroy()
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
92 {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
93 if (pidgin_tooltip.timeout > 0) {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
94 g_source_remove(pidgin_tooltip.timeout);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
95 pidgin_tooltip.timeout = 0;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
96 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
97 if (pidgin_tooltip.tipwindow) {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
98 gtk_widget_destroy(pidgin_tooltip.tipwindow);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
99 pidgin_tooltip.tipwindow = NULL;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
100 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
101 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
102
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
103 static gboolean
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
104 pidgin_tooltip_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
105 {
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
106 if (pidgin_tooltip.paint_tooltip) {
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
107 gtk_paint_flat_box(widget->style, widget->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
108 NULL, widget, "tooltip", 0, 0, -1, -1);
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
109 pidgin_tooltip.paint_tooltip(widget, data);
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
110 }
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
111 return FALSE;
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
112 }
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
113
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
114 static GtkWidget*
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 22064
diff changeset
115 setup_tooltip_window(void)
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
116 {
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
117 const char *name;
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
118 GtkWidget *tipwindow;
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
119
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
120 tipwindow = gtk_window_new(GTK_WINDOW_POPUP);
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
121 name = gtk_window_get_title(GTK_WINDOW(pidgin_tooltip.widget));
22022
0e7195deb9f8 GDK_WINDOW_TYPE_HINT_TOOLTIP is GTK+ >= 2.10.0
Daniel Atallah <datallah@pidgin.im>
parents: 21998
diff changeset
122 #if GTK_CHECK_VERSION(2,10,0)
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
123 gtk_window_set_type_hint(GTK_WINDOW(tipwindow), GDK_WINDOW_TYPE_HINT_TOOLTIP);
22022
0e7195deb9f8 GDK_WINDOW_TYPE_HINT_TOOLTIP is GTK+ >= 2.10.0
Daniel Atallah <datallah@pidgin.im>
parents: 21998
diff changeset
124 #endif
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
125 gtk_widget_set_app_paintable(tipwindow, TRUE);
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
126 gtk_window_set_title(GTK_WINDOW(tipwindow), name ? name : _("Pidgin Tooltip"));
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
127 gtk_window_set_resizable(GTK_WINDOW(tipwindow), FALSE);
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
128 gtk_widget_set_name(tipwindow, "gtk-tooltips");
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
129 gtk_widget_ensure_style(tipwindow);
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
130 gtk_widget_realize(tipwindow);
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
131 return tipwindow;
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
132 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
133
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
134 static void
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
135 setup_tooltip_window_position(gpointer data, int w, int h)
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
136 {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
137 int sig;
25605
85d2115907ac Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25435
diff changeset
138 int scr_w, scr_h, x, y, dy;
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
139 #if GTK_CHECK_VERSION(2,2,0)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
140 int mon_num;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
141 GdkScreen *screen = NULL;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
142 #endif
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
143 GdkRectangle mon_size;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
144 GtkWidget *tipwindow = pidgin_tooltip.tipwindow;
25605
85d2115907ac Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25435
diff changeset
145
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
146 #if GTK_CHECK_VERSION(2,2,0)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
147 gdk_display_get_pointer(gdk_display_get_default(), &screen, &x, &y, NULL);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
148 mon_num = gdk_screen_get_monitor_at_point(screen, x, y);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
149 gdk_screen_get_monitor_geometry(screen, mon_num, &mon_size);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
150
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
151 scr_w = mon_size.width + mon_size.x;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
152 scr_h = mon_size.height + mon_size.y;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
153 #else
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
154 scr_w = gdk_screen_width();
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
155 scr_h = gdk_screen_height();
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
156 gdk_window_get_pointer(NULL, &x, &y, NULL);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
157 mon_size.x = 0;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
158 mon_size.y = 0;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
159 #endif
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
160
25605
85d2115907ac Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25435
diff changeset
161 #if GTK_CHECK_VERSION(2,4,0)
85d2115907ac Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25435
diff changeset
162 dy = gdk_display_get_default_cursor_size(gdk_display_get_default()) / 2;
85d2115907ac Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25435
diff changeset
163 #else
85d2115907ac Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25435
diff changeset
164 dy = 0;
85d2115907ac Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25435
diff changeset
165 #endif
85d2115907ac Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25435
diff changeset
166
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
167 #if GTK_CHECK_VERSION(2,2,0)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
168 if (w > mon_size.width)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
169 w = mon_size.width - 10;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
170
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
171 if (h > mon_size.height)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
172 h = mon_size.height - 10;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
173 #endif
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
174 x -= ((w >> 1) + 4);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
175
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
176 if ((y + h + 4) > scr_h)
25605
85d2115907ac Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25435
diff changeset
177 y = y - h - dy - 5;
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178 else
25605
85d2115907ac Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25435
diff changeset
179 y = y + dy + 6;
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
180
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
181 if (y < mon_size.y)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
182 y = mon_size.y;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
183
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
184 if (y != mon_size.y) {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
185 if ((x + w) > scr_w)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
186 x -= (x + w + 5) - scr_w;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
187 else if (x < mon_size.x)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188 x = mon_size.x;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
189 } else {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
190 x -= (w / 2 + 10);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
191 if (x < mon_size.x)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
192 x = mon_size.x;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
193 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
194
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
195 gtk_widget_set_size_request(tipwindow, w, h);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196 gtk_window_move(GTK_WINDOW(tipwindow), x, y);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
197 gtk_widget_show(tipwindow);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
198
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
199 g_signal_connect(G_OBJECT(tipwindow), "expose_event",
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
200 G_CALLBACK(pidgin_tooltip_expose_event), data);
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
201
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
202 /* Hide the tooltip when the widget is destroyed */
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
203 sig = g_signal_connect(G_OBJECT(pidgin_tooltip.widget), "destroy", G_CALLBACK(pidgin_tooltip_destroy), NULL);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
204 g_signal_connect_swapped(G_OBJECT(tipwindow), "destroy", G_CALLBACK(g_source_remove), GINT_TO_POINTER(sig));
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
205 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
206
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
207 void pidgin_tooltip_show(GtkWidget *widget, gpointer userdata,
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
208 PidginTooltipCreate create_tooltip, PidginTooltipPaint paint_tooltip)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
209 {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
210 GtkWidget *tipwindow;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
211 int w, h;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
212
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
213 pidgin_tooltip_destroy();
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
214
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
215 pidgin_tooltip.widget = gtk_widget_get_toplevel(widget);
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
216 pidgin_tooltip.tipwindow = tipwindow = setup_tooltip_window();
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
217 pidgin_tooltip.paint_tooltip = paint_tooltip;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
218
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
219 if (!create_tooltip(tipwindow, userdata, &w, &h)) {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
220 pidgin_tooltip_destroy();
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
221 return;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
222 }
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
223 setup_tooltip_window_position(userdata, w, h);
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
224 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
225
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
226 static void
21997
08bc3d1daa99 Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21994
diff changeset
227 reset_data_treepath(PidginTooltipData *data)
08bc3d1daa99 Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21994
diff changeset
228 {
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
229 gtk_tree_path_free(data->common.treeview.path);
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
230 data->common.treeview.path = NULL;
21997
08bc3d1daa99 Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21994
diff changeset
231 }
08bc3d1daa99 Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21994
diff changeset
232
08bc3d1daa99 Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21994
diff changeset
233 static void
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
234 pidgin_tooltip_draw(PidginTooltipData *data)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
235 {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
236 GtkWidget *tipwindow;
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
237 int w, h;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
238
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
239 pidgin_tooltip_destroy();
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
240
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
241 pidgin_tooltip.widget = gtk_widget_get_toplevel(data->widget);
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
242 pidgin_tooltip.tipwindow = tipwindow = setup_tooltip_window();
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
243 pidgin_tooltip.paint_tooltip = data->paint_tooltip;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
244
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
245 if (!data->common.widget.create_tooltip(tipwindow, data->userdata, &w, &h)) {
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
246 if (tipwindow == pidgin_tooltip.tipwindow)
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
247 pidgin_tooltip_destroy();
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
248 return;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
249 }
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
250
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
251 setup_tooltip_window_position(data->userdata, w, h);
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
252 }
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
253
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
254 static void
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
255 pidgin_tooltip_draw_tree(PidginTooltipData *data)
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
256 {
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
257 GtkWidget *tipwindow;
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
258 GtkTreePath *path = NULL;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
259 int w, h;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
260
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
261 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(data->widget),
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
262 pidgin_tooltip.tip_rect.x,
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
263 pidgin_tooltip.tip_rect.y + (pidgin_tooltip.tip_rect.height/2),
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
264 &path, NULL, NULL, NULL)) {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
265 pidgin_tooltip_destroy();
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
266 return;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
267 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
268
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
269 if (data->common.treeview.path) {
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
270 if (gtk_tree_path_compare(data->common.treeview.path, path) == 0) {
21994
6ff974b162c0 Plug a leak. And a patch from 'js' to fix tooltips in compiz fusion. References #4323.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21993
diff changeset
271 gtk_tree_path_free(path);
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
272 return;
21994
6ff974b162c0 Plug a leak. And a patch from 'js' to fix tooltips in compiz fusion. References #4323.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21993
diff changeset
273 }
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
274 gtk_tree_path_free(data->common.treeview.path);
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
275 data->common.treeview.path = NULL;
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
276 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
277
21993
3fdb200f15bb Make sure an old tooltip is destroyed before creating a new one.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21903
diff changeset
278 pidgin_tooltip_destroy();
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
279
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
280 pidgin_tooltip.widget = gtk_widget_get_toplevel(data->widget);
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
281 pidgin_tooltip.tipwindow = tipwindow = setup_tooltip_window();
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
282 pidgin_tooltip.paint_tooltip = data->paint_tooltip;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
283
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
284 if (!data->common.treeview.create_tooltip(tipwindow, path, data->userdata, &w, &h)) {
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
285 if (tipwindow == pidgin_tooltip.tipwindow)
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
286 pidgin_tooltip_destroy();
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
287 gtk_tree_path_free(path);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
288 return;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
289 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
290
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
291 setup_tooltip_window_position(data->userdata, w, h);
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
292
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
293 data->common.treeview.path = path;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
294 g_signal_connect_swapped(G_OBJECT(pidgin_tooltip.tipwindow), "destroy",
21997
08bc3d1daa99 Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21994
diff changeset
295 G_CALLBACK(reset_data_treepath), data);
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
296 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
297
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
298 static gboolean
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
299 pidgin_tooltip_timeout(gpointer data)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
300 {
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
301 PidginTooltipData *tdata = data;
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
302 pidgin_tooltip.timeout = 0;
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
303 if (GTK_IS_TREE_VIEW(tdata->widget))
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
304 pidgin_tooltip_draw_tree(data);
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
305 else
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
306 pidgin_tooltip_draw(data);
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
307 return FALSE;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
308 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
309
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
310 static gboolean
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
311 row_motion_cb(GtkWidget *tv, GdkEventMotion *event, gpointer userdata)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
312 {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
313 GtkTreePath *path;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
314
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
315 if (event->window != gtk_tree_view_get_bin_window(GTK_TREE_VIEW(tv)))
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
316 return FALSE; /* The cursor is probably on the TreeView's header. */
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
317
24558
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
318 initialize_tooltip_delay();
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
319 if (!enable_tooltips)
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
320 return FALSE;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
321
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
322 if (pidgin_tooltip.timeout) {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
323 if ((event->y >= pidgin_tooltip.tip_rect.y) && ((event->y - pidgin_tooltip.tip_rect.height) <= pidgin_tooltip.tip_rect.y))
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
324 return FALSE;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
325 /* We've left the cell. Remove the timeout and create a new one below */
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
326 pidgin_tooltip_destroy();
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
327 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
328
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
329 gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
330
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
331 if (path == NULL) {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
332 pidgin_tooltip_destroy();
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
333 return FALSE;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
334 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
335
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
336 gtk_tree_view_get_cell_area(GTK_TREE_VIEW(tv), path, NULL, &pidgin_tooltip.tip_rect);
21998
3dbae318c88d Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21997
diff changeset
337 gtk_tree_path_free(path);
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
338
24558
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
339 pidgin_tooltip.timeout = g_timeout_add(tooltip_delay, (GSourceFunc)pidgin_tooltip_timeout, userdata);
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
340
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
341 return FALSE;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
342 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
343
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
344 static gboolean
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
345 widget_leave_cb(GtkWidget *tv, GdkEvent *event, gpointer userdata)
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
346 {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
347 pidgin_tooltip_destroy();
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
348 return FALSE;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
349 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
350
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
351 gboolean pidgin_tooltip_setup_for_treeview(GtkWidget *tree, gpointer userdata,
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
352 PidginTooltipCreateForTree create_tooltip, PidginTooltipPaint paint_tooltip)
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
353 {
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
354 PidginTooltipData *tdata = g_new0(PidginTooltipData, 1);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
355 tdata->widget = tree;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
356 tdata->userdata = userdata;
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
357 tdata->common.treeview.create_tooltip = create_tooltip;
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
358 tdata->paint_tooltip = paint_tooltip;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
359
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
360 g_signal_connect(G_OBJECT(tree), "motion-notify-event", G_CALLBACK(row_motion_cb), tdata);
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
361 g_signal_connect(G_OBJECT(tree), "leave-notify-event", G_CALLBACK(widget_leave_cb), NULL);
25607
ce654025996e Prevent tooltips from lingering while scrolling in the buddy list window.
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25605
diff changeset
362 g_signal_connect(G_OBJECT(tree), "scroll-event", G_CALLBACK(widget_leave_cb), NULL);
21903
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
363 g_signal_connect_swapped(G_OBJECT(tree), "destroy", G_CALLBACK(destroy_tooltip_data), tdata);
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
364 return TRUE;
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
365 }
5b5ad54ae1da Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
366
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
367 static gboolean
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
368 widget_motion_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
369 {
24558
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
370 initialize_tooltip_delay();
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
371
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
372 pidgin_tooltip_destroy();
24558
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
373 if (!enable_tooltips)
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
374 return FALSE;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
375
24558
7d4379a9536e Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents: 23901
diff changeset
376 pidgin_tooltip.timeout = g_timeout_add(tooltip_delay, (GSourceFunc)pidgin_tooltip_timeout, data);
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
377 return FALSE;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
378 }
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
379
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
380 gboolean pidgin_tooltip_setup_for_widget(GtkWidget *widget, gpointer userdata,
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
381 PidginTooltipCreate create_tooltip, PidginTooltipPaint paint_tooltip)
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
382 {
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
383 PidginTooltipData *wdata = g_new0(PidginTooltipData, 1);
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
384 wdata->widget = widget;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
385 wdata->userdata = userdata;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
386 wdata->common.widget.create_tooltip = create_tooltip;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
387 wdata->paint_tooltip = paint_tooltip;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
388
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
389 g_signal_connect(G_OBJECT(widget), "motion-notify-event", G_CALLBACK(widget_motion_cb), wdata);
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
390 g_signal_connect(G_OBJECT(widget), "leave-notify-event", G_CALLBACK(widget_leave_cb), NULL);
25607
ce654025996e Prevent tooltips from lingering while scrolling in the buddy list window.
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 25605
diff changeset
391 g_signal_connect(G_OBJECT(widget), "scroll-event", G_CALLBACK(widget_leave_cb), NULL);
25435
812799377532 Jan Kratochvil found another race condition in the treeview tooltip code, this fixes it. Fixes #8069.
Daniel Atallah <datallah@pidgin.im>
parents: 24566
diff changeset
392 g_signal_connect_swapped(G_OBJECT(widget), "destroy", G_CALLBACK(destroy_tooltip_data), wdata);
22064
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
393 return TRUE;
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
394 }
8b35fd51087d Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22022
diff changeset
395

mercurial