pidgin/pidgincellrendererexpander.c

Thu, 02 Sep 2021 20:18:36 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 02 Sep 2021 20:18:36 -0500
changeset 41036
c2a9da21b8c0
parent 40580
fdf04534e7d1
permissions
-rw-r--r--

Replace the deprecated API in gtkaccount.c

Testing Done:
Verified that all of the dialog buttons still function as intended.

Reviewed at https://reviews.imfreedom.org/r/906/

40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
1 /*
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
2 * Pidgin - Internet Messenger
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
4 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
7 * source distribution.
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
8 *
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 * (at your option) any later version.
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 *
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 * GNU General Public License for more details.
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24379
diff changeset
18 *
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
23 #include "pidgin/pidgincellrendererexpander.h"
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
24
39553
5f6c287230d1 Use GObject macros for PidginCellRendererExpander.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38009
diff changeset
25 struct _PidginCellRendererExpander {
5f6c287230d1 Use GObject macros for PidginCellRendererExpander.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38009
diff changeset
26 GtkCellRenderer parent;
5f6c287230d1 Use GObject macros for PidginCellRendererExpander.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38009
diff changeset
27 };
5f6c287230d1 Use GObject macros for PidginCellRendererExpander.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38009
diff changeset
28
5f6c287230d1 Use GObject macros for PidginCellRendererExpander.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38009
diff changeset
29 G_DEFINE_TYPE(PidginCellRendererExpander, pidgin_cell_renderer_expander,
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
30 GTK_TYPE_CELL_RENDERER)
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24379
diff changeset
31
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
32 /******************************************************************************
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
33 * GtkCellRenderer Implementation
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
34 *****************************************************************************/
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
35 static void
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
36 pidgin_cell_renderer_expander_get_size(GtkCellRenderer *renderer,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
37 GtkWidget *widget,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
38 const GdkRectangle *cell_area,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
39 gint *x_offset, gint *y_offset,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
40 gint *width, gint *height)
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
41 {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
42 gint calc_width = 0, calc_height = 0;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
43 gint xpad = 0, ypad = 0;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
44 gint expander_size = 0;
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24379
diff changeset
45
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
46 gtk_widget_style_get(widget, "expander-size", &expander_size, NULL);
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
47
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
48 gtk_cell_renderer_get_padding(renderer, &xpad, &ypad);
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
49 calc_width = (xpad * 2) + expander_size;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
50 calc_height = (ypad * 2) + expander_size;
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
51
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
52 if(width) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
53 *width = calc_width;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
54 }
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
55
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
56 if(height) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
57 *height = calc_height;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
58 }
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24379
diff changeset
59
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
60 if(cell_area) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
61 gfloat xalign = 0.0f, yalign = 0.0f;
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
62
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
63 gtk_cell_renderer_get_alignment(renderer, &xalign, &yalign);
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
64
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
65 if(x_offset) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
66 *x_offset = (gint)(xalign * (cell_area->width - calc_width));
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
67 *x_offset = MAX (*x_offset, 0);
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
68 }
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
69
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
70 if(y_offset) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
71 *y_offset = (gint)(yalign * (cell_area->height - calc_height));
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
72 *y_offset = MAX (*y_offset, 0);
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
73 }
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
74 }
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
75 }
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
76
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
77 static void
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
78 pidgin_cell_renderer_expander_render(GtkCellRenderer *renderer, cairo_t *cr,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
79 GtkWidget *widget,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
80 const GdkRectangle *background_area,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
81 const GdkRectangle *cell_area,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
82 GtkCellRendererState flags)
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
83 {
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
84 GtkStateFlags state;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
85 GtkStyleContext *context = NULL;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
86 gboolean is_expanded = FALSE, is_expander = FALSE;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
87 gint xpad = 0, ypad = 0;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
88 gint width = cell_area->width, height = cell_area->height;
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24379
diff changeset
89
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
90 /* if the row doesn't have children, bail out. */
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
91 g_object_get(G_OBJECT(renderer), "is-expander", &is_expander, NULL);
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
92 if(!is_expander) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
93 return;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
94 }
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
95
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
96 /* Figure out the state of the renderer. */
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
97 if(!gtk_widget_get_sensitive(widget)) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
98 state = GTK_STATE_FLAG_INSENSITIVE;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
99 } else if(flags & GTK_CELL_RENDERER_PRELIT) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
100 state = GTK_STATE_FLAG_PRELIGHT;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
101 } else if(gtk_widget_has_focus(widget) && flags & GTK_CELL_RENDERER_SELECTED) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
102 state = GTK_STATE_FLAG_ACTIVE;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
103 } else {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
104 state = GTK_STATE_FLAG_NORMAL;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
105 }
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
106
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
107 g_object_get(G_OBJECT(renderer), "is-expanded", &is_expanded, NULL);
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
108 if(is_expanded) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
109 state |= GTK_STATE_FLAG_CHECKED;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
110 } else {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
111 state &= ~GTK_STATE_FLAG_CHECKED;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
112 }
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24379
diff changeset
113
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
114 /* Build our style context */
33271
53bf180b9eb1 Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
115 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
116 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
117 gtk_style_context_add_class(context, GTK_STYLE_CLASS_EXPANDER);
38005
1fe9aba16440 Fix state flags used to draw GtkCellRendererExpander.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37989
diff changeset
118 gtk_style_context_set_state(context, state);
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
119
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
120 /* Adjust the width and height according to the padding. */
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
121 gtk_cell_renderer_get_padding(renderer, &xpad, &ypad);
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
122 width -= xpad * 2;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
123 height -= ypad * 2;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
124
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
125 /* Render the arrow. */
33271
53bf180b9eb1 Use GtkStyleContext instead of GtkStyle on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
126 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
127 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
128 width, height);
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
129 }
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
130
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
131 static gboolean
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
132 pidgin_cell_renderer_expander_activate(GtkCellRenderer *r, GdkEvent *event,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
133 GtkWidget *widget, const gchar *p,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
134 const GdkRectangle *bg,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
135 const GdkRectangle *cell,
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
136 GtkCellRendererState flags)
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
137 {
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
138 GtkTreePath *path = gtk_tree_path_new_from_string(p);
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
139
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
140 if(gtk_tree_view_row_expanded(GTK_TREE_VIEW(widget), path)) {
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
141 gtk_tree_view_collapse_row(GTK_TREE_VIEW(widget), path);
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
142 } else {
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
143 gtk_tree_view_expand_row(GTK_TREE_VIEW(widget),path,FALSE);
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
144 }
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
145
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
146 gtk_tree_path_free(path);
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
147
14626
964677efbddf [gaim-migrate @ 17287]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14623
diff changeset
148 return FALSE;
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
149 }
40580
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
150
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
151 /******************************************************************************
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
152 * GObject Implementation
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
153 *****************************************************************************/
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
154 static void
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
155 pidgin_cell_renderer_expander_init (PidginCellRendererExpander *renderer) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
156 /* there's no accessor for setting the mode, so we have to set the property
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
157 * explicitly.
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
158 */
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
159 g_object_set(G_OBJECT(renderer), "mode",
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
160 GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL);
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
161
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
162 gtk_cell_renderer_set_padding(GTK_CELL_RENDERER(renderer), 0, 2);
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
163 }
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
164
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
165 static void
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
166 pidgin_cell_renderer_expander_class_init(PidginCellRendererExpanderClass *klass)
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
167 {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
168 GtkCellRendererClass *renderer_class = GTK_CELL_RENDERER_CLASS(klass);
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
169
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
170 renderer_class->get_size = pidgin_cell_renderer_expander_get_size;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
171 renderer_class->render = pidgin_cell_renderer_expander_render;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
172 renderer_class->activate = pidgin_cell_renderer_expander_activate;
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
173 }
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
174
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
175 /******************************************************************************
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
176 * Public API
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
177 *****************************************************************************/
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
178 GtkCellRenderer *
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
179 pidgin_cell_renderer_expander_new(void) {
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
180 return g_object_new(PIDGIN_TYPE_CELL_RENDERER_EXPANDER, NULL);
fdf04534e7d1 clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents: 40197
diff changeset
181 }

mercurial