Fri, 05 Mar 2021 03:31:29 -0600
Create a PidginAvatar widget.
This does everything the existing code does, but trying to integrate right now
is kind of difficult. The plan is to use this in a new PidginInfoPane I have
started, but that change got very large so I just packed it into the end of
the existing info pane.
The only things that are not implement right now, are making menu items
insensitive and that's because we need to figure out a better want to handle
custom avatars for users.
Testing Done:
Ran locally.
Reviewed at https://reviews.imfreedom.org/r/528/
|
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 | 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 | 6 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 7 | * source distribution. | |
| 8 | * | |
| 9 | * This program is free software; you can redistribute it and/or modify | |
| 10 | * it under the terms of the GNU General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This program is distributed in the hope that it will be useful, | |
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 17 | * GNU General Public License for more details. | |
|
25888
d0fdd378a635
Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
24379
diff
changeset
|
18 | * |
| 14623 | 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 | 21 | */ |
| 22 | ||
|
40580
fdf04534e7d1
clean up PidginCellRendererExpander
Gary Kramlich <grim@reaperworld.com>
parents:
40197
diff
changeset
|
23 | #include "pidgin/pidgincellrendererexpander.h" |
| 14623 | 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 | 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 | 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 | 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 | 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 | 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 | 68 | } |
| 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 | 75 | } |
| 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 | 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 | 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 | 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 | 129 | } |
| 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 | 137 | { |
| 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 | 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 | 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 | 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 | 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 | } |