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.
| 14623 | 1 | /* |
| 2 | * @file gtkcellrendererexpander.c GTK+ Cell Renderer Expander | |
|
16254
eeb2bba4dc94
Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents:
15931
diff
changeset
|
3 | * @ingroup pidgin |
|
20330
650a7af9c238
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents:
20327
diff
changeset
|
4 | */ |
|
650a7af9c238
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents:
20327
diff
changeset
|
5 | |
|
650a7af9c238
remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents:
20327
diff
changeset
|
6 | /* pidgin |
| 14623 | 7 | * |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
8 | * Pidgin is the legal property of its developers, whose names are too numerous |
| 14623 | 9 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 10 | * source distribution. | |
| 11 | * | |
| 12 | * This program is free software; you can redistribute it and/or modify | |
| 13 | * it under the terms of the GNU General Public License as published by | |
| 14 | * the Free Software Foundation; either version 2 of the License, or | |
| 15 | * (at your option) any later version. | |
| 16 | * | |
| 17 | * This program is distributed in the hope that it will be useful, | |
| 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 20 | * GNU General Public License for more details. | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
21 | * |
| 14623 | 22 | * You should have received a copy of the GNU General Public License |
| 23 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
16254
diff
changeset
|
24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 14623 | 25 | * |
| 26 | */ | |
| 27 | ||
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
28 | /* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by |
| 14623 | 29 | * Jonathon Blandford <jrb@redhat.com> for RedHat, Inc. |
| 30 | */ | |
| 31 | ||
| 32 | #include "gtkcellrendererexpander.h" | |
| 33 | ||
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
34 | #include "gtk3compat.h" |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
35 | |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
36 | #if GTK_CHECK_VERSION(3,0,0) |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
37 | #define GTK3_CONST const |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
38 | #else |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
39 | #define GTK3_CONST |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
40 | #endif |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
41 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
42 | static void pidgin_cell_renderer_expander_get_property (GObject *object, |
| 14623 | 43 | guint param_id, |
| 44 | GValue *value, | |
| 45 | GParamSpec *pspec); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
46 | static void pidgin_cell_renderer_expander_set_property (GObject *object, |
| 14623 | 47 | guint param_id, |
| 48 | const GValue *value, | |
| 49 | GParamSpec *pspec); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
50 | static void pidgin_cell_renderer_expander_init (PidginCellRendererExpander *cellexpander); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
51 | static void pidgin_cell_renderer_expander_class_init (PidginCellRendererExpanderClass *class); |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
52 | static void pidgin_cell_renderer_expander_get_size (GtkCellRenderer *cell, |
| 14623 | 53 | GtkWidget *widget, |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
54 | GTK3_CONST GdkRectangle *cell_area, |
| 14623 | 55 | gint *x_offset, |
| 56 | gint *y_offset, | |
| 57 | gint *width, | |
| 58 | gint *height); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
59 | static void pidgin_cell_renderer_expander_render (GtkCellRenderer *cell, |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
60 | #if GTK_CHECK_VERSION(3,0,0) |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
61 | cairo_t *cr, |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
62 | #else |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
63 | GdkWindow *window, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
64 | #endif |
| 14623 | 65 | GtkWidget *widget, |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
66 | GTK3_CONST GdkRectangle *background_area, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
67 | GTK3_CONST GdkRectangle *cell_area, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
68 | #if !GTK_CHECK_VERSION(3,0,0) |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
69 | GdkRectangle *export_area, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
70 | #endif |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
71 | GtkCellRendererState flags); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
72 | static gboolean pidgin_cell_renderer_expander_activate (GtkCellRenderer *r, |
| 14623 | 73 | GdkEvent *event, |
| 74 | GtkWidget *widget, | |
| 14953 | 75 | const gchar *p, |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
76 | GTK3_CONST GdkRectangle *bg, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
77 | GTK3_CONST GdkRectangle *cell, |
| 14860 | 78 | GtkCellRendererState flags); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
79 | static void pidgin_cell_renderer_expander_finalize (GObject *gobject); |
| 14623 | 80 | |
| 81 | enum { | |
| 82 | LAST_SIGNAL | |
| 83 | }; | |
| 84 | ||
| 85 | enum { | |
| 86 | PROP_0, | |
| 87 | PROP_IS_EXPANDER | |
| 88 | }; | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
89 | |
| 14623 | 90 | static gpointer parent_class; |
| 91 | /* static guint expander_cell_renderer_signals [LAST_SIGNAL]; */ | |
| 92 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
93 | GType pidgin_cell_renderer_expander_get_type (void) |
| 14623 | 94 | { |
| 95 | static GType cell_expander_type = 0; | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
96 | |
| 14623 | 97 | if (!cell_expander_type) |
| 98 | { | |
| 99 | static const GTypeInfo cell_expander_info = | |
| 100 | { | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
101 | sizeof (PidginCellRendererExpanderClass), |
| 14623 | 102 | NULL, /* base_init */ |
| 103 | NULL, /* base_finalize */ | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
104 | (GClassInitFunc) pidgin_cell_renderer_expander_class_init, |
| 14623 | 105 | NULL, /* class_finalize */ |
| 106 | NULL, /* class_data */ | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
107 | sizeof (PidginCellRendererExpander), |
| 14623 | 108 | 0, /* n_preallocs */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
109 | (GInstanceInitFunc) pidgin_cell_renderer_expander_init, |
| 14623 | 110 | NULL /* value_table */ |
| 111 | }; | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
112 | |
| 14623 | 113 | cell_expander_type = |
| 114 | g_type_register_static (GTK_TYPE_CELL_RENDERER, | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
115 | "PidginCellRendererExpander", |
| 14623 | 116 | &cell_expander_info, 0); |
| 117 | } | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
118 | |
| 14623 | 119 | return cell_expander_type; |
| 120 | } | |
| 121 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
122 | static void pidgin_cell_renderer_expander_init (PidginCellRendererExpander *cellexpander) |
| 14623 | 123 | { |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
124 | g_object_set(G_OBJECT(cellexpander), "mode", |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
125 | GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL); |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
126 | gtk_cell_renderer_set_padding(GTK_CELL_RENDERER(cellexpander), 0, 2); |
| 14623 | 127 | } |
| 128 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
129 | static void pidgin_cell_renderer_expander_class_init (PidginCellRendererExpanderClass *class) |
| 14623 | 130 | { |
| 131 | GObjectClass *object_class = G_OBJECT_CLASS(class); | |
| 132 | GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(class); | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
133 | |
| 14623 | 134 | parent_class = g_type_class_peek_parent (class); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
135 | object_class->finalize = pidgin_cell_renderer_expander_finalize; |
| 14623 | 136 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
137 | object_class->get_property = pidgin_cell_renderer_expander_get_property; |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
138 | object_class->set_property = pidgin_cell_renderer_expander_set_property; |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
139 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
140 | cell_class->get_size = pidgin_cell_renderer_expander_get_size; |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
141 | cell_class->render = pidgin_cell_renderer_expander_render; |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
142 | cell_class->activate = pidgin_cell_renderer_expander_activate; |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
143 | |
| 14623 | 144 | g_object_class_install_property (object_class, |
| 145 | PROP_IS_EXPANDER, | |
| 146 | g_param_spec_boolean ("expander-visible", | |
| 147 | "Is Expander", | |
| 148 | "True if the renderer should draw an expander", | |
| 149 | FALSE, | |
| 150 | G_PARAM_READWRITE)); | |
| 151 | } | |
| 152 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
153 | static void pidgin_cell_renderer_expander_finalize (GObject *object) |
| 14623 | 154 | { |
| 155 | /* | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
156 | PidginCellRendererExpander *cellexpander = PIDGIN_CELL_RENDERER_EXPANDER(object); |
| 14623 | 157 | */ |
| 158 | ||
| 159 | (* G_OBJECT_CLASS (parent_class)->finalize) (object); | |
| 160 | } | |
| 161 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
162 | static void pidgin_cell_renderer_expander_get_property (GObject *object, |
| 14623 | 163 | guint param_id, |
| 164 | GValue *value, | |
| 165 | GParamSpec *psec) | |
| 166 | { | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
167 | PidginCellRendererExpander *cellexpander = PIDGIN_CELL_RENDERER_EXPANDER(object); |
| 14623 | 168 | |
| 169 | switch (param_id) | |
| 170 | { | |
| 171 | case PROP_IS_EXPANDER: | |
| 172 | g_value_set_boolean(value, cellexpander->is_expander); | |
| 173 | break; | |
| 174 | default: | |
| 175 | G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, psec); | |
| 176 | break; | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
177 | |
| 14623 | 178 | } |
| 179 | } | |
| 180 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
181 | static void pidgin_cell_renderer_expander_set_property (GObject *object, |
| 14623 | 182 | guint param_id, |
| 183 | const GValue *value, | |
| 184 | GParamSpec *pspec) | |
| 185 | { | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
186 | PidginCellRendererExpander *cellexpander = PIDGIN_CELL_RENDERER_EXPANDER (object); |
| 14623 | 187 | |
| 188 | switch (param_id) | |
| 189 | { | |
| 190 | case PROP_IS_EXPANDER: | |
| 191 | cellexpander->is_expander = g_value_get_boolean(value); | |
| 192 | break; | |
| 193 | default: | |
| 194 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, param_id, pspec); | |
| 195 | break; | |
| 196 | } | |
| 197 | } | |
| 198 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
199 | GtkCellRenderer *pidgin_cell_renderer_expander_new(void) |
| 14623 | 200 | { |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15562
diff
changeset
|
201 | return g_object_new(PIDGIN_TYPE_GTK_CELL_RENDERER_EXPANDER, NULL); |
| 14623 | 202 | } |
| 203 | ||
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
204 | static void |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
205 | pidgin_cell_renderer_expander_get_size (GtkCellRenderer *cell, |
| 14623 | 206 | GtkWidget *widget, |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
207 | GTK3_CONST GdkRectangle *cell_area, |
| 14623 | 208 | gint *x_offset, |
| 209 | gint *y_offset, | |
| 210 | gint *width, | |
| 211 | gint *height) | |
| 212 | { | |
| 213 | gint calc_width; | |
| 214 | gint calc_height; | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
215 | gint expander_size; |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
216 | gint xpad; |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
217 | gint ypad; |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
218 | gfloat xalign; |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
219 | gfloat yalign; |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
220 | |
| 14623 | 221 | gtk_widget_style_get(widget, "expander-size", &expander_size, NULL); |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
222 | |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
223 | gtk_cell_renderer_get_padding(cell, &xpad, &ypad); |
|
33158
ad941796372e
Remove some added trailing spaces.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33134
diff
changeset
|
224 | gtk_cell_renderer_get_alignment(cell, &xalign, &yalign); |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
225 | calc_width = (gint) xpad * 2 + expander_size; |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
226 | calc_height = (gint) ypad * 2 + expander_size; |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
227 | |
| 14623 | 228 | if (width) |
| 229 | *width = calc_width; | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
230 | |
| 14623 | 231 | if (height) |
| 232 | *height = calc_height; | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
233 | |
| 14623 | 234 | if (cell_area) |
| 235 | { | |
| 236 | if (x_offset) | |
| 237 | { | |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
238 | *x_offset = xalign * (cell_area->width - calc_width); |
| 14623 | 239 | *x_offset = MAX (*x_offset, 0); |
| 240 | } | |
| 241 | if (y_offset) | |
| 242 | { | |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
243 | *y_offset = yalign * (cell_area->height - calc_height); |
| 14623 | 244 | *y_offset = MAX (*y_offset, 0); |
| 245 | } | |
| 246 | } | |
| 247 | } | |
| 248 | ||
| 249 | ||
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
250 | static void |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
251 | pidgin_cell_renderer_expander_render(GtkCellRenderer *cell, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
252 | #if GTK_CHECK_VERSION(3,0,0) |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
253 | cairo_t *cr, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
254 | #else |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
255 | GdkWindow *window, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
256 | #endif |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
257 | GtkWidget *widget, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
258 | GTK3_CONST GdkRectangle *background_area, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
259 | GTK3_CONST GdkRectangle *cell_area, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
260 | #if !GTK_CHECK_VERSION(3,0,0) |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
261 | GdkRectangle *expose_area, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
262 | #endif |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
263 | GtkCellRendererState flags) |
| 14623 | 264 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15435
diff
changeset
|
265 | PidginCellRendererExpander *cellexpander = (PidginCellRendererExpander *) cell; |
|
24379
02a9ca3f4a34
Fixes a bug in the blist theme where a line appears only under the expander
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
20404
diff
changeset
|
266 | gboolean set; |
| 14623 | 267 | gint width, height; |
| 268 | GtkStateType state; | |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
269 | gint xpad; |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
270 | gint ypad; |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
271 | gboolean is_expanded; |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
272 | GtkAllocation allocation; |
|
33271
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
273 | #if GTK_CHECK_VERSION(3,0,0) |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
274 | GtkStyleContext *context; |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
275 | #endif |
| 14623 | 276 | |
| 277 | if (!cellexpander->is_expander) | |
| 278 | return; | |
| 279 | ||
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
280 | gtk_cell_renderer_get_padding(cell, &xpad, &ypad); |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
281 | g_object_get(G_OBJECT(cell), "is-expanded", &is_expanded, NULL); |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
282 | |
| 14623 | 283 | width = cell_area->width; |
| 284 | height = cell_area->height; | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
285 | |
|
33134
92dd446608e4
Fix a small typo.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33133
diff
changeset
|
286 | if (!gtk_widget_get_sensitive(widget)) |
| 14623 | 287 | state = GTK_STATE_INSENSITIVE; |
| 288 | else if (flags & GTK_CELL_RENDERER_PRELIT) | |
| 289 | state = GTK_STATE_PRELIGHT; | |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
290 | else if (gtk_widget_has_focus(widget) && flags & GTK_CELL_RENDERER_SELECTED) |
|
32913
af2c726febce
Fix all deprecated GTK_WIDGET_* macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29500
diff
changeset
|
291 | state = GTK_STATE_ACTIVE; |
| 14623 | 292 | else |
| 293 | state = GTK_STATE_NORMAL; | |
| 294 | ||
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
295 | width -= xpad*2; |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
296 | height -= ypad*2; |
| 14623 | 297 | |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
298 | #if GTK_CHECK_VERSION(3,0,0) |
|
33271
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
299 | if (is_expanded) |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
300 | state |= GTK_STATE_ACTIVE; |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
301 | else |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
302 | state &= ~GTK_STATE_ACTIVE; |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
303 | |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
304 | 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
|
305 | gtk_style_context_add_class(context, GTK_STYLE_CLASS_VIEW); |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
306 | gtk_style_context_add_class(context, GTK_STYLE_CLASS_EXPANDER); |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
307 | gtk_style_context_set_state(context, state); |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
308 | gtk_render_expander(context, cr, |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
309 | cell_area->x + xpad, cell_area->y + ypad, |
|
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
310 | width, height); |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
311 | #else |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
312 | gtk_paint_expander(gtk_widget_get_style(widget), |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
313 | window, state, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
314 | NULL, widget, "treeview", |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
315 | cell_area->x + cell->xpad + (width / 2), |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
316 | cell_area->y + cell->ypad + (height / 2), |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
317 | is_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED); |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
318 | #endif |
|
24379
02a9ca3f4a34
Fixes a bug in the blist theme where a line appears only under the expander
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
20404
diff
changeset
|
319 | |
|
02a9ca3f4a34
Fixes a bug in the blist theme where a line appears only under the expander
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
20404
diff
changeset
|
320 | /* only draw the line if the color isn't set - this prevents a bug where the hline appears only under the expander */ |
|
02a9ca3f4a34
Fixes a bug in the blist theme where a line appears only under the expander
Justin Rodriguez <ffdragon@soc.pidgin.im>
parents:
20404
diff
changeset
|
321 | g_object_get(cellexpander, "cell-background-set", &set, NULL); |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
322 | gtk_widget_get_allocation(widget, &allocation); |
|
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
323 | |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
324 | #if GTK_CHECK_VERSION(3,0,0) |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
325 | if (is_expanded && !set) |
|
33271
53bf180b9eb1
Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33170
diff
changeset
|
326 | gtk_render_line(context, cr, 0, cell_area->y + cell_area->height, |
|
33133
9a31f084f259
Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33132
diff
changeset
|
327 | allocation.width, cell_area->y + cell_area->height); |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
328 | #else |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
329 | if (is_expanded && !set) |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
330 | gtk_paint_hline(gtk_widget_get_style(widget), window, state, NULL, widget, NULL, 0, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
331 | allocation.width, cell_area->y + cell_area->height); |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
332 | #endif |
| 14623 | 333 | } |
| 334 | ||
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
335 | static gboolean |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
336 | pidgin_cell_renderer_expander_activate(GtkCellRenderer *r, |
| 14623 | 337 | GdkEvent *event, |
| 338 | GtkWidget *widget, | |
| 339 | const gchar *p, | |
|
33170
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
340 | GTK3_CONST GdkRectangle *bg, |
|
ce4447562d64
Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
33158
diff
changeset
|
341 | GTK3_CONST GdkRectangle *cell, |
| 14623 | 342 | GtkCellRendererState flags) |
| 343 | { | |
| 344 | GtkTreePath *path = gtk_tree_path_new_from_string(p); | |
| 345 | if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(widget), path)) | |
| 346 | gtk_tree_view_collapse_row(GTK_TREE_VIEW(widget), path); | |
| 347 | else | |
| 348 | gtk_tree_view_expand_row(GTK_TREE_VIEW(widget),path,FALSE); | |
| 349 | gtk_tree_path_free(path); | |
|
14626
964677efbddf
[gaim-migrate @ 17287]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14623
diff
changeset
|
350 | return FALSE; |
| 14623 | 351 | } |