Tue, 07 May 2013 05:04:46 -0400
Rewrite debug window filter in JS.
Note, this does cause a couple regressions, but they are probably not
that big a deal. First, the JS regular expression syntax is slightly
different. Second, the JS regex API lacks a way to reliably determine
the location of matched groups, so we can't highlight just the groups
and must highlight the entire expression.
I suspect that none of our users ever had to use any fancy regex in the
debug window, and that most of our developers didn't even know it could
be done. So I doubt these regressions will cause much pain.
|
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 | { |
|
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
64 | GtkSettings *settings; |
|
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
65 | |
|
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
66 | 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
|
67 | return; |
|
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
68 | |
|
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
69 | 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
|
70 | |
|
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
71 | 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
|
72 | 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
|
73 | } |
|
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
74 | |
|
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
75 | 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
|
76 | 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
|
77 | { |
|
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
|
78 | 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
|
79 | 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
|
80 | 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
|
81 | 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
|
82 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
83 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
84 | 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
|
85 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
86 | 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
|
87 | 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
|
88 | 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
|
89 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
90 | 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
|
91 | 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
|
92 | 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
|
93 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
94 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
95 | |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
96 | #if GTK_CHECK_VERSION(3,0,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
|
97 | static gboolean |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32438
diff
changeset
|
98 | pidgin_tooltip_draw_cb(GtkWidget *widget, cairo_t *cr, gpointer data) |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
99 | { |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32438
diff
changeset
|
100 | GtkAllocation allocation; |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32438
diff
changeset
|
101 | |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32438
diff
changeset
|
102 | gtk_widget_get_allocation(widget, &allocation); |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32438
diff
changeset
|
103 | |
|
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
|
104 | if (pidgin_tooltip.paint_tooltip) { |
|
33271
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
105 | GtkStyleContext *context = gtk_widget_get_style_context(widget); |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
106 | gtk_style_context_add_class(context, GTK_STYLE_CLASS_TOOLTIP); |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
107 | gtk_render_background(context, cr, |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
108 | 0, 0, allocation.width, allocation.height); |
|
33161
c248c062f272
Pass the cairo context to the tooltip paint function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33133
diff
changeset
|
109 | pidgin_tooltip.paint_tooltip(widget, cr, 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 | } |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
113 | #else |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
114 | static gboolean |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
115 | pidgin_tooltip_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
116 | { |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
117 | if (pidgin_tooltip.paint_tooltip) { |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
118 | cairo_t *cr = gdk_cairo_create(GDK_DRAWABLE(gtk_widget_get_window(widget))); |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
119 | gtk_paint_flat_box(widget->style, widget->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
120 | NULL, widget, "tooltip", 0, 0, -1, -1); |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
121 | pidgin_tooltip.paint_tooltip(widget, cr, data); |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
122 | cairo_destroy(cr); |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
123 | } |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
124 | return FALSE; |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
125 | } |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
126 | #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
|
127 | |
|
3dbae318c88d
Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21997
diff
changeset
|
128 | 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
|
129 | 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
|
130 | { |
|
3dbae318c88d
Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21997
diff
changeset
|
131 | 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
|
132 | 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
|
133 | |
|
3dbae318c88d
Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21997
diff
changeset
|
134 | 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
|
135 | 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
|
136 | 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
|
137 | 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
|
138 | 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
|
139 | 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
|
140 | 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
|
141 | 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
|
142 | 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
|
143 | 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
|
144 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
145 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
146 | 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
|
147 | 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
|
148 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
149 | 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
|
150 | 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
|
151 | 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
|
152 | 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
|
153 | 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
|
154 | 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
|
155 | GtkWidget *tipwindow = pidgin_tooltip.tipwindow; |
|
31294
73607ab89c6f
Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents:
29499
diff
changeset
|
156 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
157 | 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
|
158 | 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
|
159 | 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
|
160 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
161 | 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
|
162 | 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
|
163 | |
|
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 | 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
|
165 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
166 | 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
|
167 | 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
|
168 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
169 | 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
|
170 | 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
|
171 | |
|
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
|
172 | 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
|
173 | 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
|
174 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
175 | 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
|
176 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
177 | 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
|
178 | 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
|
179 | 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
|
180 | 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
|
181 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
182 | 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
|
183 | 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
|
184 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
185 | 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
|
186 | 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
|
187 | 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
|
188 | 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
|
189 | 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
|
190 | } else { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
191 | 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
|
192 | 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
|
193 | 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
|
194 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
195 | |
|
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
|
196 | /* 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
|
197 | * 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
|
198 | 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
|
199 | && (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
|
200 | 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
|
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 | 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
|
203 | 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
|
204 | 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
|
205 | |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
206 | #if GTK_CHECK_VERSION(3,0,0) |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32438
diff
changeset
|
207 | g_signal_connect(G_OBJECT(tipwindow), "draw", |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
32438
diff
changeset
|
208 | G_CALLBACK(pidgin_tooltip_draw_cb), data); |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
209 | #else |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
210 | g_signal_connect(G_OBJECT(tipwindow), "expose_event", |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
211 | G_CALLBACK(pidgin_tooltip_expose_event), data); |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33161
diff
changeset
|
212 | #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
|
213 | |
|
21903
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
214 | /* 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
|
215 | 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
|
216 | 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
|
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 | 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
|
220 | 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
|
221 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
222 | GtkWidget *tipwindow; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
223 | 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
|
224 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
225 | 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
|
226 | |
|
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.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
|
228 | 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
|
229 | 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
|
230 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
231 | 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
|
232 | 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
|
233 | return; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
234 | } |
|
21998
3dbae318c88d
Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21997
diff
changeset
|
235 | 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
|
236 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
237 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
238 | static void |
|
21997
08bc3d1daa99
Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21994
diff
changeset
|
239 | reset_data_treepath(PidginTooltipData *data) |
|
08bc3d1daa99
Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21994
diff
changeset
|
240 | { |
|
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
|
241 | 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
|
242 | 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
|
243 | } |
|
08bc3d1daa99
Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21994
diff
changeset
|
244 | |
|
08bc3d1daa99
Reset tree-path when a tooltip is destroyed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21994
diff
changeset
|
245 | 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
|
246 | 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
|
247 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
248 | 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
|
249 | 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
|
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 | 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
|
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 | 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
|
254 | 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
|
255 | 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
|
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 | 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
|
258 | 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
|
259 | 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
|
260 | 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
|
261 | } |
|
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 | |
|
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 | 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
|
264 | } |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
265 | |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
266 | 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
|
267 | 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
|
268 | { |
|
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 | 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
|
270 | 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
|
271 | 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
|
272 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
273 | 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
|
274 | 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
|
275 | 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
|
276 | &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
|
277 | 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
|
278 | return; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
279 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
280 | |
|
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
|
281 | 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
|
282 | 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
|
283 | 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
|
284 | 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
|
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 | 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
|
287 | 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
|
288 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
289 | |
|
21993
3fdb200f15bb
Make sure an old tooltip is destroyed before creating a new one.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21903
diff
changeset
|
290 | 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
|
291 | |
|
21903
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.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
|
293 | 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
|
294 | 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
|
295 | |
|
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 (!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
|
297 | 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
|
298 | 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
|
299 | 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
|
300 | return; |
|
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 | |
|
21998
3dbae318c88d
Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21997
diff
changeset
|
303 | 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
|
304 | |
|
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
|
305 | 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
|
306 | 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
|
307 | 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
|
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 | 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
|
312 | { |
|
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
|
313 | 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
|
314 | 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
|
315 | 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
|
316 | 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
|
317 | 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
|
318 | 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
|
319 | return FALSE; |
|
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 | static gboolean |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
323 | 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
|
324 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
325 | GtkTreePath *path; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
326 | |
|
21998
3dbae318c88d
Refactor some of the tooltip drawing functions. And add some pretend docs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21997
diff
changeset
|
327 | 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
|
328 | 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
|
329 | |
|
24558
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
330 | 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
|
331 | 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
|
332 | return FALSE; |
|
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 | 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
|
335 | 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
|
336 | return FALSE; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
337 | /* 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
|
338 | 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
|
339 | } |
|
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 | 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
|
342 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
343 | 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
|
344 | 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
|
345 | return FALSE; |
|
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 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
348 | 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
|
349 | 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
|
350 | |
|
24558
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
351 | 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
|
352 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
353 | return FALSE; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
354 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
355 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
356 | 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
|
357 | 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
|
358 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
359 | 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
|
360 | return FALSE; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
361 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
362 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
363 | 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
|
364 | 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
|
365 | { |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
366 | 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
|
367 | 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
|
368 | 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
|
369 | 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
|
370 | 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
|
371 | |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
372 | 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
|
373 | 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
|
374 | 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
|
375 | 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
|
376 | return TRUE; |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
377 | } |
|
5b5ad54ae1da
Some utility functions for showing tooltips. This is used by the buddylist,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
378 | |
|
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
|
379 | 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
|
380 | 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
|
381 | { |
|
24558
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
382 | 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
|
383 | |
|
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 | 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
|
385 | 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
|
386 | 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
|
387 | |
|
24558
7d4379a9536e
Use GtkSetting to obtain the tooltip preferences instead of our own hidden
Richard Laager <rlaager@pidgin.im>
parents:
23901
diff
changeset
|
388 | 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
|
389 | 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
|
390 | } |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
391 | |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
392 | 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
|
393 | 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
|
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 | 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
|
396 | 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
|
397 | 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
|
398 | 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
|
399 | 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
|
400 | |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
401 | 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
|
402 | 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
|
403 | 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
|
404 | 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
|
405 | 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
|
406 | } |
|
8b35fd51087d
Use the new tooltip functions to draw the tooltips in the conversation window.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22022
diff
changeset
|
407 |