Wed, 21 Sep 2011 06:45:26 +0000
Apply conversation theme when opening the GTK conversation. All the
parsing stuff was moved out of the theme code and into the conversation
code.
Someone (not me!) needs to check the code I commented out and see if
we really need that stuff (and then port it to WebKit/styling).
We also need to determine where to place Template.html and the rest
of our (not-yet-written) default theme.
|
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)); |
|
3dbae318c88d
Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21997
diff
changeset
|
122 | gtk_window_set_type_hint(GTK_WINDOW(tipwindow), GDK_WINDOW_TYPE_HINT_TOOLTIP); |
|
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_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
|
124 | 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
|
125 | 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
|
126 | 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
|
127 | 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
|
128 | 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
|
129 | 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
|
130 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
131 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
132 | 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
|
133 | 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
|
134 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
135 | 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
|
136 | int scr_w, scr_h, x, y, dy; |
|
31817
76d8052104d4
Fix a bug where the tooltip is destroyed when it have a lot of information. Fixes #10510
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31294
diff
changeset
|
137 | int preserved_x, preserved_y; |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
138 | 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
|
139 | 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
|
140 | 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
|
141 | GtkWidget *tipwindow = pidgin_tooltip.tipwindow; |
|
31294
73607ab89c6f
Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents:
29499
diff
changeset
|
142 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
143 | 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
|
144 | 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
|
145 | 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
|
146 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
147 | 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
|
148 | 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
|
149 | |
|
25605
85d2115907ac
Adjust tooltips to offset their position by half the cursor size. This will
Kosta Arvanitis <karvanitis@hotmail.com>
parents:
25435
diff
changeset
|
150 | 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
|
151 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
152 | 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
|
153 | 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
|
154 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
155 | 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
|
156 | h = mon_size.height - 10; |
|
29499
08832cbd946b
Kill off more GTK_CHECK_VERSION uses that we don't need anymore. Refs #10024.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
25607
diff
changeset
|
157 | |
|
31817
76d8052104d4
Fix a bug where the tooltip is destroyed when it have a lot of information. Fixes #10510
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31294
diff
changeset
|
158 | preserved_x = x; |
|
76d8052104d4
Fix a bug where the tooltip is destroyed when it have a lot of information. Fixes #10510
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31294
diff
changeset
|
159 | preserved_y = y; |
|
76d8052104d4
Fix a bug where the tooltip is destroyed when it have a lot of information. Fixes #10510
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31294
diff
changeset
|
160 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
161 | 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
|
162 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
163 | 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
|
164 | 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
|
165 | 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
|
166 | 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
|
167 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
168 | 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
|
169 | 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
|
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 (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
|
172 | 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
|
173 | 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
|
174 | 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
|
175 | 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
|
176 | } else { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
177 | 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
|
178 | 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
|
179 | 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
|
180 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
181 | |
|
31817
76d8052104d4
Fix a bug where the tooltip is destroyed when it have a lot of information. Fixes #10510
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31294
diff
changeset
|
182 | /* If the mouse covered by the tipwindow, move the tipwindow |
|
76d8052104d4
Fix a bug where the tooltip is destroyed when it have a lot of information. Fixes #10510
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31294
diff
changeset
|
183 | * to the righ side of the it */ |
|
76d8052104d4
Fix a bug where the tooltip is destroyed when it have a lot of information. Fixes #10510
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31294
diff
changeset
|
184 | if ((preserved_x >= x) && (preserved_x <= (x + w)) |
|
76d8052104d4
Fix a bug where the tooltip is destroyed when it have a lot of information. Fixes #10510
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31294
diff
changeset
|
185 | && (preserved_y >= y) && (preserved_y <= (y + h))) |
|
76d8052104d4
Fix a bug where the tooltip is destroyed when it have a lot of information. Fixes #10510
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31294
diff
changeset
|
186 | x = preserved_x + dy; |
|
76d8052104d4
Fix a bug where the tooltip is destroyed when it have a lot of information. Fixes #10510
Jorge Villaseñor <masca@cpw.pidgin.im>
parents:
31294
diff
changeset
|
187 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
188 | 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
|
189 | 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
|
190 | 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
|
191 | |
|
21998
3dbae318c88d
Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21997
diff
changeset
|
192 | 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
|
193 | 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
|
194 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
195 | /* 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
|
196 | 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
|
197 | 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
|
198 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
199 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
200 | 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
|
201 | 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
|
202 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
203 | GtkWidget *tipwindow; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
204 | 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
|
205 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
206 | 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
|
207 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
208 | 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
|
209 | 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
|
210 | 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
|
211 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
212 | 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
|
213 | 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
|
214 | return; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
215 | } |
|
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 | 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
|
217 | } |
|
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 | static void |
|
21997
08bc3d1daa99
Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21994
diff
changeset
|
220 | reset_data_treepath(PidginTooltipData *data) |
|
08bc3d1daa99
Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21994
diff
changeset
|
221 | { |
|
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
|
222 | 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
|
223 | 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
|
224 | } |
|
08bc3d1daa99
Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21994
diff
changeset
|
225 | |
|
08bc3d1daa99
Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21994
diff
changeset
|
226 | 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
|
227 | 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
|
228 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
229 | 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
|
230 | 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
|
231 | |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
232 | 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
|
233 | |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
234 | 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
|
235 | 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
|
236 | 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
|
237 | |
|
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 | 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
|
239 | 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
|
240 | 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
|
241 | 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
|
242 | } |
|
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 | |
|
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 | 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
|
245 | } |
|
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 | |
|
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 | 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
|
248 | 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
|
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 | 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
|
251 | 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
|
252 | 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
|
253 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
254 | 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
|
255 | 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
|
256 | 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
|
257 | &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
|
258 | 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
|
259 | return; |
|
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 | |
|
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
|
262 | 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
|
263 | 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
|
264 | 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
|
265 | 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
|
266 | } |
|
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
|
267 | 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
|
268 | 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
|
269 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
270 | |
|
21993
3fdb200f15bb
Make sure an old tooltip is destroyed before creating a new one.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21903
diff
changeset
|
271 | 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
|
272 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
273 | 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
|
274 | 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
|
275 | 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
|
276 | |
|
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
|
277 | 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
|
278 | 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
|
279 | 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
|
280 | 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
|
281 | return; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
282 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
283 | |
|
21998
3dbae318c88d
Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21997
diff
changeset
|
284 | 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
|
285 | |
|
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
|
286 | 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
|
287 | 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
|
288 | 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
|
289 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
290 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
291 | static gboolean |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
292 | 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
|
293 | { |
|
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
|
294 | 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
|
295 | 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
|
296 | 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
|
297 | 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
|
298 | 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
|
299 | 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
|
300 | return FALSE; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
301 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
302 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
303 | static gboolean |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
304 | 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
|
305 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
306 | GtkTreePath *path; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
307 | |
|
21998
3dbae318c88d
Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21997
diff
changeset
|
308 | 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
|
309 | 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
|
310 | |
|
24558
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
311 | 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
|
312 | 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
|
313 | return FALSE; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
314 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
315 | 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
|
316 | 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
|
317 | return FALSE; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
318 | /* 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
|
319 | 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
|
320 | } |
|
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 | 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
|
323 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
324 | 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
|
325 | 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
|
326 | return FALSE; |
|
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_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
|
330 | 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
|
331 | |
|
24558
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
332 | 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
|
333 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
334 | return FALSE; |
|
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 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
337 | 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
|
338 | 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
|
339 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
340 | 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
|
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 | 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
|
345 | 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
|
346 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
347 | 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
|
348 | 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
|
349 | 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
|
350 | 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
|
351 | 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
|
352 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
353 | 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
|
354 | 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
|
355 | 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
|
356 | 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
|
357 | return TRUE; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
358 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
359 | |
|
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
|
360 | 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
|
361 | 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
|
362 | { |
|
24558
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
363 | 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
|
364 | |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
365 | 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
|
366 | 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
|
367 | 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
|
368 | |
|
24558
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
369 | 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
|
370 | 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
|
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 | |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
373 | 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
|
374 | 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
|
375 | { |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
376 | 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
|
377 | 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
|
378 | 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
|
379 | 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
|
380 | 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
|
381 | |
|
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 | 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
|
383 | 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
|
384 | 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
|
385 | 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
|
386 | 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
|
387 | } |
|
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 |