Wed, 13 May 2009 20:29:03 +0000
Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.
|
17586
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
1 | /** |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
2 | * GNT - The GLib Ncurses Toolkit |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
3 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
4 | * GNT is the legal property of its developers, whose names are too numerous |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
6 | * source distribution. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
7 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
8 | * This library is free software; you can redistribute it and/or modify |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
9 | * it under the terms of the GNU General Public License as published by |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
10 | * the Free Software Foundation; either version 2 of the License, or |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
11 | * (at your option) any later version. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
12 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
13 | * This program is distributed in the hope that it will be useful, |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
16 | * GNU General Public License for more details. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
17 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
18 | * You should have received a copy of the GNU General Public License |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
19 | * 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:
19551
diff
changeset
|
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
17586
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
21 | */ |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16646
diff
changeset
|
22 | |
|
14898
107b971b39f2
[gaim-migrate @ 17605]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
23 | #include "gntmarshal.h" |
|
107b971b39f2
[gaim-migrate @ 17605]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14886
diff
changeset
|
24 | #include "gntstyle.h" |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
25 | #include "gnttree.h" |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
26 | #include "gntutils.h" |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
27 | |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
28 | #include <string.h> |
| 14277 | 29 | #include <ctype.h> |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
30 | |
|
26651
d9f1eeefb89c
Save the world.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26650
diff
changeset
|
31 | #define SEARCH_TIMEOUT_S 4 /* 4 secs */ |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
32 | #define SEARCHING(tree) (tree->priv->search && tree->priv->search->len > 0) |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
33 | |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
34 | #define COLUMN_INVISIBLE(tree, index) (tree->columns[index].flags & GNT_TREE_COLUMN_INVISIBLE) |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
35 | #define BINARY_DATA(tree, index) (tree->columns[index].flags & GNT_TREE_COLUMN_BINARY_DATA) |
|
18632
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
36 | #define RIGHT_ALIGNED(tree, index) (tree->columns[index].flags & GNT_TREE_COLUMN_RIGHT_ALIGNED) |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
37 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
38 | enum |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
39 | { |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
40 | PROP_0, |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
41 | PROP_COLUMNS, |
|
22311
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
42 | PROP_EXPANDER, |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
43 | }; |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
44 | |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
45 | enum |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
46 | { |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
47 | SIG_SELECTION_CHANGED, |
|
13927
c2f57a00bc1f
[gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13926
diff
changeset
|
48 | SIG_SCROLLED, |
|
13969
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
49 | SIG_TOGGLED, |
|
16165
24ec117bc52c
Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents:
16032
diff
changeset
|
50 | SIG_COLLAPSED, |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
51 | SIGS, |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
52 | }; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
53 | |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
54 | struct _GntTreePriv |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
55 | { |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
56 | GString *search; |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
57 | int search_timeout; |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
58 | int search_column; |
|
18829
35138e0fbf77
Patch from Javeed Shaikh to make the search function non-braindamaged.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18827
diff
changeset
|
59 | gboolean (*search_func)(GntTree *tree, gpointer key, const char *search, const char *current); |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
60 | |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
61 | GCompareFunc compare; |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
62 | int lastvisible; |
|
22311
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
63 | int expander_level; |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
64 | }; |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
65 | |
|
13920
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
66 | #define TAB_SIZE 3 |
|
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
67 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
68 | /* XXX: Make this one into a GObject? |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
69 | * ... Probably not */ |
|
15991
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
70 | struct _GntTreeRow |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
71 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
72 | void *key; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
73 | void *data; /* XXX: unused */ |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
74 | |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
75 | gboolean collapsed; |
|
13969
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
76 | gboolean choice; /* Is this a choice-box? |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
77 | If choice is true, then child will be NULL */ |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
78 | gboolean isselected; |
|
13993
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
79 | GntTextFormatFlags flags; |
|
21804
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
80 | int color; |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
81 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
82 | GntTreeRow *parent; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
83 | GntTreeRow *child; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
84 | GntTreeRow *next; |
|
13919
94caf5dc02b4
[gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13918
diff
changeset
|
85 | GntTreeRow *prev; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
86 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
87 | GList *columns; |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
88 | GntTree *tree; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
89 | }; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
90 | |
|
15991
1efb6bd8ba3f
Some define changes. This helps in generating the python bindings.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
91 | struct _GntTreeCol |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
92 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
93 | char *text; |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
94 | gboolean isbinary; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
95 | int span; /* How many columns does it span? */ |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
96 | }; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
97 | |
|
16264
03aaf9aae68b
emit/handle gnttree signals appropriately
Richard Nelson <wabz@pidgin.im>
parents:
16185
diff
changeset
|
98 | static void tree_selection_changed(GntTree *, GntTreeRow *, GntTreeRow *); |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
99 | static void _gnt_tree_init_internals(GntTree *tree, int col); |
|
16264
03aaf9aae68b
emit/handle gnttree signals appropriately
Richard Nelson <wabz@pidgin.im>
parents:
16185
diff
changeset
|
100 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
101 | static GntWidgetClass *parent_class = NULL; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
102 | static guint signals[SIGS] = { 0 }; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
103 | |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
104 | static void |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
105 | readjust_columns(GntTree *tree) |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
106 | { |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
107 | int i, col, total; |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
108 | int width; |
|
18559
d39d742f54bd
Parentheses helps.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
109 | #define WIDTH(i) (tree->columns[i].width_ratio ? tree->columns[i].width_ratio : tree->columns[i].width) |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
110 | gnt_widget_get_size(GNT_WIDGET(tree), &width, NULL); |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
111 | if (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER)) |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
112 | width -= 2; |
|
23485
8733da333c8f
Fix an off-by-one bug in calculating column widths in trees.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23221
diff
changeset
|
113 | width -= 1; /* Exclude the scrollbar from the calculation */ |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
114 | for (i = 0, total = 0; i < tree->ncol ; i++) { |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
115 | if (tree->columns[i].flags & GNT_TREE_COLUMN_INVISIBLE) |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
116 | continue; |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
117 | if (tree->columns[i].flags & GNT_TREE_COLUMN_FIXED_SIZE) |
|
23485
8733da333c8f
Fix an off-by-one bug in calculating column widths in trees.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23221
diff
changeset
|
118 | width -= WIDTH(i) + (tree->priv->lastvisible != i); |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
119 | else |
|
23485
8733da333c8f
Fix an off-by-one bug in calculating column widths in trees.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23221
diff
changeset
|
120 | total += WIDTH(i) + (tree->priv->lastvisible != i); |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
121 | } |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
122 | |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
123 | if (total == 0) |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
124 | return; |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
125 | |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
126 | for (i = 0; i < tree->ncol; i++) { |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
127 | if (tree->columns[i].flags & GNT_TREE_COLUMN_INVISIBLE) |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
128 | continue; |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
129 | if (tree->columns[i].flags & GNT_TREE_COLUMN_FIXED_SIZE) |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
130 | col = WIDTH(i); |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
131 | else |
|
18559
d39d742f54bd
Parentheses helps.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18558
diff
changeset
|
132 | col = (WIDTH(i) * width) / total; |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
133 | gnt_tree_set_col_width(GNT_TREE(tree), i, col); |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
134 | } |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
135 | } |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
136 | |
| 14774 | 137 | /* Move the item at position old to position new */ |
| 138 | static GList * | |
| 139 | g_list_reposition_child(GList *list, int old, int new) | |
| 140 | { | |
| 141 | gpointer item = g_list_nth_data(list, old); | |
| 142 | list = g_list_remove(list, item); | |
| 143 | if (old < new) | |
| 144 | new--; /* because the positions would have shifted after removing the item */ | |
| 145 | list = g_list_insert(list, item, new); | |
| 146 | return list; | |
| 147 | } | |
| 148 | ||
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
149 | static GntTreeRow * |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
150 | _get_next(GntTreeRow *row, gboolean godeep) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
151 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
152 | if (row == NULL) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
153 | return NULL; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
154 | if (godeep && row->child) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
155 | return row->child; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
156 | if (row->next) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
157 | return row->next; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
158 | return _get_next(row->parent, FALSE); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
159 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
160 | |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
161 | static gboolean |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
162 | row_matches_search(GntTreeRow *row) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
163 | { |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
164 | GntTree *t = row->tree; |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
165 | if (t->priv->search && t->priv->search->len > 0) { |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
166 | GntTreeCol *col = (col = g_list_nth_data(row->columns, t->priv->search_column)) ? col : row->columns->data; |
|
18827
822e004cae0c
Allow using custom search functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18826
diff
changeset
|
167 | char *one, *two, *z; |
|
822e004cae0c
Allow using custom search functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18826
diff
changeset
|
168 | if (t->priv->search_func) |
|
18829
35138e0fbf77
Patch from Javeed Shaikh to make the search function non-braindamaged.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18827
diff
changeset
|
169 | return t->priv->search_func(t, row->key, t->priv->search->str, col->text); |
|
18827
822e004cae0c
Allow using custom search functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18826
diff
changeset
|
170 | one = g_utf8_casefold(col->text, -1); |
|
822e004cae0c
Allow using custom search functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18826
diff
changeset
|
171 | two = g_utf8_casefold(t->priv->search->str, -1); |
|
822e004cae0c
Allow using custom search functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18826
diff
changeset
|
172 | z = strstr(one, two); |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
173 | g_free(one); |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
174 | g_free(two); |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
175 | if (z == NULL) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
176 | return FALSE; |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
177 | } |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
178 | return TRUE; |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
179 | } |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
180 | |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
181 | static GntTreeRow * |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
182 | get_next(GntTreeRow *row) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
183 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
184 | if (row == NULL) |
|
13950
bd8d39b3a9e2
[gaim-migrate @ 16369]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13944
diff
changeset
|
185 | return NULL; |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
186 | while ((row = _get_next(row, !row->collapsed)) != NULL) { |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
187 | if (row_matches_search(row)) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
188 | break; |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
189 | } |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
190 | return row; |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
191 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
192 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
193 | /* Returns the n-th next row. If it doesn't exist, returns NULL */ |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
194 | static GntTreeRow * |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
195 | get_next_n(GntTreeRow *row, int n) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
196 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
197 | while (row && n--) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
198 | row = get_next(row); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
199 | return row; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
200 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
201 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
202 | /* Returns the n-th next row. If it doesn't exist, then the last non-NULL node */ |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
203 | static GntTreeRow * |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
204 | get_next_n_opt(GntTreeRow *row, int n, int *pos) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
205 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
206 | GntTreeRow *next = row; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
207 | int r = 0; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
208 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
209 | if (row == NULL) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
210 | return NULL; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
211 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
212 | while (row && n--) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
213 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
214 | row = get_next(row); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
215 | if (row) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
216 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
217 | next = row; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
218 | r++; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
219 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
220 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
221 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
222 | if (pos) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
223 | *pos = r; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
224 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
225 | return next; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
226 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
227 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
228 | static GntTreeRow * |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
229 | get_last_child(GntTreeRow *row) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
230 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
231 | if (row == NULL) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
232 | return NULL; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
233 | if (!row->collapsed && row->child) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
234 | row = row->child; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
235 | else |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
236 | return row; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
237 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
238 | while(row->next) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
239 | row = row->next; |
|
16646
fd3c9b8de3e2
Fix an odd selection issue when moving up.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16362
diff
changeset
|
240 | return get_last_child(row); |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
241 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
242 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
243 | static GntTreeRow * |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
244 | get_prev(GntTreeRow *row) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
245 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
246 | if (row == NULL) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
247 | return NULL; |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
248 | while (row) { |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
249 | if (row->prev) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
250 | row = get_last_child(row->prev); |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
251 | else |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
252 | row = row->parent; |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
253 | if (!row || row_matches_search(row)) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
254 | break; |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
255 | } |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
256 | return row; |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
257 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
258 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
259 | static GntTreeRow * |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
260 | get_prev_n(GntTreeRow *row, int n) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
261 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
262 | while (row && n--) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
263 | row = get_prev(row); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
264 | return row; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
265 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
266 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
267 | /* Distance of row from the root */ |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
268 | /* XXX: This is uber-inefficient */ |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
269 | static int |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
270 | get_root_distance(GntTreeRow *row) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
271 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
272 | if (row == NULL) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
273 | return -1; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
274 | return get_root_distance(get_prev(row)) + 1; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
275 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
276 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
277 | /* Returns the distance between a and b. |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
278 | * If a is 'above' b, then the distance is positive */ |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
279 | static int |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
280 | get_distance(GntTreeRow *a, GntTreeRow *b) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
281 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
282 | /* First get the distance from a to the root. |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
283 | * Then the distance from b to the root. |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
284 | * Subtract. |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
285 | * It's not that good, but it works. */ |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
286 | int ha = get_root_distance(a); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
287 | int hb = get_root_distance(b); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
288 | |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
289 | return (hb - ha); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
290 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
291 | |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
292 | static int |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
293 | find_depth(GntTreeRow *row) |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
294 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
295 | int dep = -1; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
296 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
297 | while (row) |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
298 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
299 | dep++; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
300 | row = row->parent; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
301 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
302 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
303 | return dep; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
304 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
305 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
306 | static char * |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
307 | update_row_text(GntTree *tree, GntTreeRow *row) |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
308 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
309 | GString *string = g_string_new(NULL); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
310 | GList *iter; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
311 | int i; |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
312 | gboolean notfirst = FALSE; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
313 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
314 | for (i = 0, iter = row->columns; i < tree->ncol && iter; i++, iter = iter->next) |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
315 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
316 | GntTreeCol *col = iter->data; |
|
14886
9f76d3a61aa7
[gaim-migrate @ 17591]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14885
diff
changeset
|
317 | const char *text; |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
318 | int len; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
319 | int fl = 0; |
| 14908 | 320 | gboolean cut = FALSE; |
|
16031
7ca3d73eab52
Fine tune column hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16030
diff
changeset
|
321 | int width; |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
322 | const char *display; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
323 | |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
324 | if (COLUMN_INVISIBLE(tree, i)) |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
325 | continue; |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
326 | |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
327 | if (BINARY_DATA(tree, i)) |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
328 | display = ""; |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
329 | else |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
330 | display = col->text; |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
331 | |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
332 | len = gnt_util_onscreen_width(display, NULL); |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
333 | |
|
18632
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
334 | width = tree->columns[i].width; |
|
16031
7ca3d73eab52
Fine tune column hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16030
diff
changeset
|
335 | |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
336 | if (i == 0) |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
337 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
338 | if (row->choice) |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
339 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
340 | g_string_append_printf(string, "[%c] ", |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
341 | row->isselected ? 'X' : ' '); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
342 | fl = 4; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
343 | } |
|
22311
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
344 | else if (find_depth(row) < tree->priv->expander_level && row->child) |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
345 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
346 | if (row->collapsed) |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
347 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
348 | string = g_string_append(string, "+ "); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
349 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
350 | else |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
351 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
352 | string = g_string_append(string, "- "); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
353 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
354 | fl = 2; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
355 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
356 | else |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
357 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
358 | fl = TAB_SIZE * find_depth(row); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
359 | g_string_append_printf(string, "%*s", fl, ""); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
360 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
361 | len += fl; |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
362 | } else if (notfirst && tree->show_separator) |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
363 | g_string_append_c(string, '|'); |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
364 | else |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
365 | g_string_append_c(string, ' '); |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
366 | |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
367 | notfirst = TRUE; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
368 | |
|
18255
f29124ab560e
I think this fixes the ellipsization in the trees.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18190
diff
changeset
|
369 | if (len > width) { |
|
21263
0919212f5a8c
Do not ellipsize in a column of size 1.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21262
diff
changeset
|
370 | len = MAX(1, width - 1); |
| 14908 | 371 | cut = TRUE; |
| 372 | } | |
|
18632
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
373 | |
|
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
374 | if (RIGHT_ALIGNED(tree, i) && len < tree->columns[i].width) { |
|
21262
b1635191fe14
Patch from Josh Davis to correct ellipsization for right-aligned columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21261
diff
changeset
|
375 | g_string_append_printf(string, "%*s", width - len - cut, ""); |
|
18632
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
376 | } |
|
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
377 | |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
378 | text = gnt_util_onscreen_width_to_pointer(display, len - fl, NULL); |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
379 | string = g_string_append_len(string, display, text - display); |
|
21263
0919212f5a8c
Do not ellipsize in a column of size 1.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21262
diff
changeset
|
380 | if (cut && width > 1) { /* ellipsis */ |
| 14908 | 381 | if (gnt_ascii_only()) |
| 382 | g_string_append_c(string, '~'); | |
| 383 | else | |
| 384 | string = g_string_append(string, "\342\200\246"); | |
| 385 | len++; | |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
386 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
387 | |
|
18632
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
388 | if (!RIGHT_ALIGNED(tree, i) && len < tree->columns[i].width && iter->next) |
|
16031
7ca3d73eab52
Fine tune column hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16030
diff
changeset
|
389 | g_string_append_printf(string, "%*s", width - len, ""); |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
390 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
391 | return g_string_free(string, FALSE); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
392 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
393 | |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
394 | #define NEXT_X x += tree->columns[i].width + (i > 0 ? 1 : 0) |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
395 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
396 | static void |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
397 | tree_mark_columns(GntTree *tree, int pos, int y, chtype type) |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
398 | { |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
399 | GntWidget *widget = GNT_WIDGET(tree); |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
400 | int i; |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
401 | int x = pos; |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
402 | gboolean notfirst = FALSE; |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
403 | |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
404 | for (i = 0; i < tree->ncol - 1; i++) |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
405 | { |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
406 | if (!COLUMN_INVISIBLE(tree, i)) { |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
407 | notfirst = TRUE; |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
408 | NEXT_X; |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
409 | } |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
410 | if (!COLUMN_INVISIBLE(tree, i+1) && notfirst) |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
411 | mvwaddch(widget->window, y, x, type); |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
412 | } |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
413 | } |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
414 | |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
415 | static void |
|
13915
15a38b312abe
[gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13913
diff
changeset
|
416 | redraw_tree(GntTree *tree) |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
417 | { |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
418 | int start, i; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
419 | GntWidget *widget = GNT_WIDGET(tree); |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
420 | GntTreeRow *row; |
|
18793
30a5e011f4b3
Fix compile warnings that only shows up with -O3. This may have caused
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18787
diff
changeset
|
421 | int pos, up, down = 0; |
|
14193
fcfd3eea2160
[gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14188
diff
changeset
|
422 | int rows, scrcol; |
|
26650
cfa29f8cf9b7
Update hardware cursor correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
25351
diff
changeset
|
423 | int current = 0; |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
424 | |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
425 | if (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_MAPPED)) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
426 | return; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
427 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
428 | if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER)) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
429 | pos = 0; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
430 | else |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
431 | pos = 1; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
432 | |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
433 | if (tree->top == NULL) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
434 | tree->top = tree->root; |
|
26734
509686762673
- Don't bother changing/signalling the selected row from NULL to NULL
Richard Nelson <wabz@pidgin.im>
parents:
26651
diff
changeset
|
435 | if (tree->current == NULL && tree->root != NULL) { |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
436 | tree->current = tree->root; |
|
16264
03aaf9aae68b
emit/handle gnttree signals appropriately
Richard Nelson <wabz@pidgin.im>
parents:
16185
diff
changeset
|
437 | tree_selection_changed(tree, NULL, tree->current); |
|
03aaf9aae68b
emit/handle gnttree signals appropriately
Richard Nelson <wabz@pidgin.im>
parents:
16185
diff
changeset
|
438 | } |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
439 | |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
440 | wbkgd(widget->window, gnt_color_pair(GNT_COLOR_NORMAL)); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
441 | |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
442 | start = 0; |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
443 | if (tree->show_title) |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
444 | { |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
445 | int i; |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
446 | int x = pos; |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
447 | |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
448 | mvwhline(widget->window, pos + 1, pos, ACS_HLINE | gnt_color_pair(GNT_COLOR_NORMAL), |
|
14188
cff503f91616
[gaim-migrate @ 16764]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14185
diff
changeset
|
449 | widget->priv.width - pos - 1); |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
450 | mvwhline(widget->window, pos, pos, ' ' | gnt_color_pair(GNT_COLOR_NORMAL), |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
451 | widget->priv.width - pos - 1); |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
452 | |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
453 | for (i = 0; i < tree->ncol; i++) |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
454 | { |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
455 | if (COLUMN_INVISIBLE(tree, i)) { |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
456 | continue; |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
457 | } |
|
19190
d0b7bf1b250a
Make sure long titles remain within their own cell.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19184
diff
changeset
|
458 | mvwaddnstr(widget->window, pos, x + (x != pos), tree->columns[i].title, tree->columns[i].width); |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
459 | NEXT_X; |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
460 | } |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
461 | if (pos) |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
462 | { |
|
21254
ab6e08037b7c
Draw the 'header' correctly when not showing borders.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21244
diff
changeset
|
463 | tree_mark_columns(tree, pos, 0, |
|
ab6e08037b7c
Draw the 'header' correctly when not showing borders.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21244
diff
changeset
|
464 | (tree->show_separator ? ACS_TTEE : ACS_HLINE) | gnt_color_pair(GNT_COLOR_NORMAL)); |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
465 | tree_mark_columns(tree, pos, widget->priv.height - pos, |
|
21254
ab6e08037b7c
Draw the 'header' correctly when not showing borders.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21244
diff
changeset
|
466 | (tree->show_separator ? ACS_BTEE : ACS_HLINE) | gnt_color_pair(GNT_COLOR_NORMAL)); |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
467 | } |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
468 | tree_mark_columns(tree, pos, pos + 1, |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
469 | (tree->show_separator ? ACS_PLUS : ACS_HLINE) | gnt_color_pair(GNT_COLOR_NORMAL)); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
470 | tree_mark_columns(tree, pos, pos, |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
471 | (tree->show_separator ? ACS_VLINE : ' ') | gnt_color_pair(GNT_COLOR_NORMAL)); |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
472 | start = 2; |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
473 | } |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
474 | |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
475 | rows = widget->priv.height - pos * 2 - start - 1; |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
476 | tree->bottom = get_next_n_opt(tree->top, rows, &down); |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
477 | if (down < rows) |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
478 | { |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
479 | tree->top = get_prev_n(tree->bottom, rows); |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
480 | if (tree->top == NULL) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
481 | tree->top = tree->root; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
482 | } |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
483 | |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
484 | up = get_distance(tree->top, tree->current); |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
485 | if (up < 0) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
486 | tree->top = tree->current; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
487 | else if (up >= widget->priv.height - pos) |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
488 | tree->top = get_prev_n(tree->current, rows); |
|
14169
90d1d4697e23
[gaim-migrate @ 16741]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
489 | |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
490 | if (tree->top && !row_matches_search(tree->top)) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
491 | tree->top = get_next(tree->top); |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
492 | row = tree->top; |
|
14886
9f76d3a61aa7
[gaim-migrate @ 17591]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14885
diff
changeset
|
493 | scrcol = widget->priv.width - 1 - 2 * pos; /* exclude the borders and the scrollbar */ |
|
26734
509686762673
- Don't bother changing/signalling the selected row from NULL to NULL
Richard Nelson <wabz@pidgin.im>
parents:
26651
diff
changeset
|
494 | |
|
509686762673
- Don't bother changing/signalling the selected row from NULL to NULL
Richard Nelson <wabz@pidgin.im>
parents:
26651
diff
changeset
|
495 | if (tree->current && !row_matches_search(tree->current)) { |
|
509686762673
- Don't bother changing/signalling the selected row from NULL to NULL
Richard Nelson <wabz@pidgin.im>
parents:
26651
diff
changeset
|
496 | GntTreeRow *old = tree->current; |
|
509686762673
- Don't bother changing/signalling the selected row from NULL to NULL
Richard Nelson <wabz@pidgin.im>
parents:
26651
diff
changeset
|
497 | tree->current = tree->top; |
|
509686762673
- Don't bother changing/signalling the selected row from NULL to NULL
Richard Nelson <wabz@pidgin.im>
parents:
26651
diff
changeset
|
498 | tree_selection_changed(tree, old, tree->current); |
|
509686762673
- Don't bother changing/signalling the selected row from NULL to NULL
Richard Nelson <wabz@pidgin.im>
parents:
26651
diff
changeset
|
499 | } |
|
509686762673
- Don't bother changing/signalling the selected row from NULL to NULL
Richard Nelson <wabz@pidgin.im>
parents:
26651
diff
changeset
|
500 | |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
501 | for (i = start + pos; row && i < widget->priv.height - pos; |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
502 | i++, row = get_next(row)) |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
503 | { |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
504 | char *str; |
|
13915
15a38b312abe
[gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13913
diff
changeset
|
505 | int wr; |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
506 | |
|
13993
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
507 | GntTextFormatFlags flags = row->flags; |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
508 | int attr = 0; |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
509 | |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
510 | if (!row_matches_search(row)) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
511 | continue; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
512 | str = update_row_text(tree, row); |
|
13998
680eb6d0ed40
[gaim-migrate @ 16467]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13997
diff
changeset
|
513 | |
|
14886
9f76d3a61aa7
[gaim-migrate @ 17591]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14885
diff
changeset
|
514 | if ((wr = gnt_util_onscreen_width(str, NULL)) > scrcol) |
|
13913
14dc0af2b33f
[gaim-migrate @ 16310]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13852
diff
changeset
|
515 | { |
|
14886
9f76d3a61aa7
[gaim-migrate @ 17591]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14885
diff
changeset
|
516 | char *s = (char*)gnt_util_onscreen_width_to_pointer(str, scrcol, &wr); |
|
13998
680eb6d0ed40
[gaim-migrate @ 16467]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13997
diff
changeset
|
517 | *s = '\0'; |
|
13913
14dc0af2b33f
[gaim-migrate @ 16310]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13852
diff
changeset
|
518 | } |
|
13993
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
519 | |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
520 | if (flags & GNT_TEXT_FLAG_BOLD) |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
521 | attr |= A_BOLD; |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
522 | if (flags & GNT_TEXT_FLAG_UNDERLINE) |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
523 | attr |= A_UNDERLINE; |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
524 | if (flags & GNT_TEXT_FLAG_BLINK) |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
525 | attr |= A_BLINK; |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
526 | |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
527 | if (row == tree->current) |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
528 | { |
|
26650
cfa29f8cf9b7
Update hardware cursor correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
25351
diff
changeset
|
529 | current = i; |
|
25351
6a90d6dd2963
Boldify the selected row in the tree. This is helpful when, for example,
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23485
diff
changeset
|
530 | attr |= A_BOLD; |
|
13958
bd1c3bb3f33d
[gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13950
diff
changeset
|
531 | if (gnt_widget_has_focus(widget)) |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
532 | attr |= gnt_color_pair(GNT_COLOR_HIGHLIGHT); |
|
13944
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
533 | else |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
534 | attr |= gnt_color_pair(GNT_COLOR_HIGHLIGHT_D); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
535 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
536 | else |
|
13989
9a647311c9ac
[gaim-migrate @ 16447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13969
diff
changeset
|
537 | { |
|
13993
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
538 | if (flags & GNT_TEXT_FLAG_DIM) |
|
21804
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
539 | if (row->color) |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
540 | attr |= (A_DIM | gnt_color_pair(row->color)); |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
541 | else |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
542 | attr |= (A_DIM | gnt_color_pair(GNT_COLOR_DISABLED)); |
|
13993
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
543 | else if (flags & GNT_TEXT_FLAG_HIGHLIGHT) |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
544 | attr |= (A_DIM | gnt_color_pair(GNT_COLOR_HIGHLIGHT)); |
|
21804
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
545 | else if (row->color) |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
546 | attr |= gnt_color_pair(row->color); |
|
13993
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
547 | else |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
548 | attr |= gnt_color_pair(GNT_COLOR_NORMAL); |
|
13989
9a647311c9ac
[gaim-migrate @ 16447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13969
diff
changeset
|
549 | } |
|
13993
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
550 | |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
551 | wbkgdset(widget->window, '\0' | attr); |
|
15647
60181abae898
Patch from Richard 'wabz' Nelson. This fixes some possible crashes/exploits.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15617
diff
changeset
|
552 | mvwaddstr(widget->window, i, pos, str); |
|
14886
9f76d3a61aa7
[gaim-migrate @ 17591]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14885
diff
changeset
|
553 | whline(widget->window, ' ', scrcol - wr); |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
554 | tree->bottom = row; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
555 | g_free(str); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
556 | tree_mark_columns(tree, pos, i, |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
557 | (tree->show_separator ? ACS_VLINE : ' ') | attr); |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
558 | } |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
559 | |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
560 | wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_NORMAL)); |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
561 | while (i < widget->priv.height - pos) |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
562 | { |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
563 | mvwhline(widget->window, i, pos, ' ', |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
564 | widget->priv.width - pos * 2 - 1); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
565 | tree_mark_columns(tree, pos, i, |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
566 | (tree->show_separator ? ACS_VLINE : ' ')); |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
567 | i++; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
568 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
569 | |
|
14886
9f76d3a61aa7
[gaim-migrate @ 17591]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14885
diff
changeset
|
570 | scrcol = widget->priv.width - pos - 1; /* position of the scrollbar */ |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
571 | rows--; |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
572 | if (rows > 0) |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
573 | { |
|
18793
30a5e011f4b3
Fix compile warnings that only shows up with -O3. This may have caused
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18787
diff
changeset
|
574 | int total = 0; |
|
14193
fcfd3eea2160
[gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14188
diff
changeset
|
575 | int showing, position; |
|
fcfd3eea2160
[gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14188
diff
changeset
|
576 | |
|
fcfd3eea2160
[gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14188
diff
changeset
|
577 | get_next_n_opt(tree->root, g_list_length(tree->list), &total); |
|
fcfd3eea2160
[gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14188
diff
changeset
|
578 | showing = rows * rows / MAX(total, 1) + 1; |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
579 | showing = MIN(rows, showing); |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
580 | |
|
14193
fcfd3eea2160
[gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14188
diff
changeset
|
581 | total -= rows; |
|
fcfd3eea2160
[gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14188
diff
changeset
|
582 | up = get_distance(tree->root, tree->top); |
|
fcfd3eea2160
[gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14188
diff
changeset
|
583 | down = total - up; |
|
fcfd3eea2160
[gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14188
diff
changeset
|
584 | |
|
fcfd3eea2160
[gaim-migrate @ 16773]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14188
diff
changeset
|
585 | position = (rows - showing) * up / MAX(1, up + down); |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
586 | position = MAX((tree->top != tree->root), position); |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
587 | |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
588 | if (showing + position > rows) |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
589 | position = rows - showing; |
|
14169
90d1d4697e23
[gaim-migrate @ 16741]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
590 | |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
591 | if (showing + position == rows && row) |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
592 | position = MAX(0, rows - 1 - showing); |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
593 | else if (showing + position < rows && !row) |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
594 | position = rows - showing; |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
595 | |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
596 | position += pos + start + 1; |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
597 | |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
598 | mvwvline(widget->window, pos + start + 1, scrcol, |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
599 | ' ' | gnt_color_pair(GNT_COLOR_NORMAL), rows); |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
600 | mvwvline(widget->window, position, scrcol, |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
601 | ACS_CKBOARD | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D), showing); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
602 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
603 | |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
604 | mvwaddch(widget->window, start + pos, scrcol, |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
605 | ((tree->top != tree->root) ? ACS_UARROW : ' ') | |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
606 | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D)); |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
607 | |
|
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
608 | mvwaddch(widget->window, widget->priv.height - pos - 1, scrcol, |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
609 | (row ? ACS_DARROW : ' ') | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D)); |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
610 | |
|
16310
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
611 | /* If there's a search-text, show it in the bottom of the tree */ |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
612 | if (tree->priv->search && tree->priv->search->len > 0) { |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
613 | const char *str = gnt_util_onscreen_width_to_pointer(tree->priv->search->str, scrcol - 1, NULL); |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20198
diff
changeset
|
614 | wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D)); |
|
16310
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
615 | mvwaddnstr(widget->window, widget->priv.height - pos - 1, pos, |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
616 | tree->priv->search->str, str - tree->priv->search->str); |
|
16310
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
617 | } |
|
26650
cfa29f8cf9b7
Update hardware cursor correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
25351
diff
changeset
|
618 | wmove(widget->window, current, pos); |
|
16310
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
619 | |
|
13940
26ed45b11483
[gaim-migrate @ 16355]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13927
diff
changeset
|
620 | gnt_widget_queue_update(widget); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
621 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
622 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
623 | static void |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
624 | gnt_tree_draw(GntWidget *widget) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
625 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
626 | GntTree *tree = GNT_TREE(widget); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
627 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
628 | redraw_tree(tree); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
629 | |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14446
diff
changeset
|
630 | GNTDEBUG; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
631 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
632 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
633 | static void |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
634 | gnt_tree_size_request(GntWidget *widget) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
635 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
636 | if (widget->priv.height == 0) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
637 | widget->priv.height = 10; /* XXX: Why?! */ |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
638 | if (widget->priv.width == 0) |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
639 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
640 | GntTree *tree = GNT_TREE(widget); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
641 | int i, width = 0; |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
642 | width = 1 + 2 * (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER)); |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
643 | for (i = 0; i < tree->ncol; i++) |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
644 | if (!COLUMN_INVISIBLE(tree, i)) { |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
645 | width = width + tree->columns[i].width; |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
646 | if (tree->priv->lastvisible != i) |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
647 | width++; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
648 | } |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
649 | widget->priv.width = width; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
650 | } |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
651 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
652 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
653 | static void |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
654 | gnt_tree_map(GntWidget *widget) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
655 | { |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
656 | GntTree *tree = GNT_TREE(widget); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
657 | if (widget->priv.width == 0 || widget->priv.height == 0) |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
658 | { |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
659 | gnt_widget_size_request(widget); |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
660 | } |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
661 | tree->top = tree->root; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
662 | tree->current = tree->root; |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14446
diff
changeset
|
663 | GNTDEBUG; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
664 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
665 | |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
666 | static void |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
667 | tree_selection_changed(GntTree *tree, GntTreeRow *old, GntTreeRow *current) |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
668 | { |
|
15702
111fdd9108cc
Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15647
diff
changeset
|
669 | g_signal_emit(tree, signals[SIG_SELECTION_CHANGED], 0, old ? old->key : NULL, |
|
111fdd9108cc
Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15647
diff
changeset
|
670 | current ? current->key : NULL); |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
671 | } |
|
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
672 | |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
673 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
674 | action_down(GntBindable *bind, GList *null) |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
675 | { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
676 | int dist; |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
677 | GntTree *tree = GNT_TREE(bind); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
678 | GntTreeRow *old = tree->current; |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
679 | GntTreeRow *row = get_next(tree->current); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
680 | if (row == NULL) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
681 | return FALSE; |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
682 | tree->current = row; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
683 | if ((dist = get_distance(tree->current, tree->bottom)) < 0) |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
684 | gnt_tree_scroll(tree, -dist); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
685 | else |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
686 | redraw_tree(tree); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
687 | if (old != tree->current) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
688 | tree_selection_changed(tree, old, tree->current); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
689 | return TRUE; |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
690 | } |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
691 | |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
692 | static gboolean |
|
16032
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
693 | action_move_parent(GntBindable *bind, GList *null) |
|
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
694 | { |
|
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
695 | GntTree *tree = GNT_TREE(bind); |
|
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
696 | GntTreeRow *row = tree->current; |
|
16310
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
697 | int dist; |
|
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
698 | |
|
22361
1ae443e7fe45
Fix a crash when pressing backspace at a menu
Richard Nelson <wabz@pidgin.im>
parents:
22311
diff
changeset
|
699 | if (!row || !row->parent || SEARCHING(tree)) |
|
16310
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
700 | return FALSE; |
|
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
701 | |
|
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
702 | tree->current = row->parent; |
|
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
703 | if ((dist = get_distance(tree->current, tree->top)) > 0) |
|
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
704 | gnt_tree_scroll(tree, -dist); |
|
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
705 | else |
|
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
706 | redraw_tree(tree); |
|
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
707 | tree_selection_changed(tree, row, tree->current); |
|
16032
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
708 | return TRUE; |
|
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
709 | } |
|
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
710 | |
|
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
711 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
712 | action_up(GntBindable *bind, GList *list) |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
713 | { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
714 | int dist; |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
715 | GntTree *tree = GNT_TREE(bind); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
716 | GntTreeRow *old = tree->current; |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
717 | GntTreeRow *row = get_prev(tree->current); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
718 | if (!row) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
719 | return FALSE; |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
720 | tree->current = row; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
721 | if ((dist = get_distance(tree->current, tree->top)) > 0) |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
722 | gnt_tree_scroll(tree, -dist); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
723 | else |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
724 | redraw_tree(tree); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
725 | if (old != tree->current) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
726 | tree_selection_changed(tree, old, tree->current); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
727 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
728 | return TRUE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
729 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
730 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
731 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
732 | action_page_down(GntBindable *bind, GList *null) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
733 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
734 | GntTree *tree = GNT_TREE(bind); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
735 | GntTreeRow *old = tree->current; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
736 | GntTreeRow *row = get_next(tree->bottom); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
737 | if (row) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
738 | { |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
739 | int dist = get_distance(tree->top, tree->current); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
740 | tree->top = tree->bottom; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
741 | tree->current = get_next_n_opt(tree->top, dist, NULL); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
742 | redraw_tree(tree); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
743 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
744 | else if (tree->current != tree->bottom) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
745 | { |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
746 | tree->current = tree->bottom; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
747 | redraw_tree(tree); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
748 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
749 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
750 | if (old != tree->current) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
751 | tree_selection_changed(tree, old, tree->current); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
752 | return TRUE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
753 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
754 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
755 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
756 | action_page_up(GntBindable *bind, GList *null) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
757 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
758 | GntWidget *widget = GNT_WIDGET(bind); |
|
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
759 | GntTree *tree = GNT_TREE(bind); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
760 | GntTreeRow *row; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
761 | GntTreeRow *old = tree->current; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
762 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
763 | if (tree->top != tree->root) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
764 | { |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
765 | int dist = get_distance(tree->top, tree->current); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
766 | row = get_prev_n(tree->top, widget->priv.height - 1 - |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
767 | tree->show_title * 2 - 2 * (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER) == 0)); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
768 | if (row == NULL) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
769 | row = tree->root; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
770 | tree->top = row; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
771 | tree->current = get_next_n_opt(tree->top, dist, NULL); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
772 | redraw_tree(tree); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
773 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
774 | else if (tree->current != tree->top) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
775 | { |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
776 | tree->current = tree->top; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
777 | redraw_tree(tree); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
778 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
779 | if (old != tree->current) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
780 | tree_selection_changed(tree, old, tree->current); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
781 | return TRUE; |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
782 | } |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
783 | |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
784 | static void |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
785 | end_search(GntTree *tree) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
786 | { |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
787 | if (tree->priv->search) { |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
788 | g_source_remove(tree->priv->search_timeout); |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
789 | g_string_free(tree->priv->search, TRUE); |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
790 | tree->priv->search = NULL; |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
791 | tree->priv->search_timeout = 0; |
|
19184
72003b472bdc
Fix a /-search bug.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18832
diff
changeset
|
792 | GNT_WIDGET_UNSET_FLAGS(GNT_WIDGET(tree), GNT_WIDGET_DISABLE_ACTIONS); |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
793 | } |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
794 | } |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
795 | |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
796 | static gboolean |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
797 | search_timeout(gpointer data) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
798 | { |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
799 | GntTree *tree = data; |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
800 | |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
801 | end_search(tree); |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
802 | redraw_tree(tree); |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
803 | |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
804 | return FALSE; |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
805 | } |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
806 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
807 | static gboolean |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
808 | gnt_tree_key_pressed(GntWidget *widget, const char *text) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
809 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
810 | GntTree *tree = GNT_TREE(widget); |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
811 | GntTreeRow *old = tree->current; |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
812 | |
|
22421
ccddf3ffaf41
'\n' (ctrl-j) should behave similar to '\r' (ctrl-m). Fixes #4833.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22361
diff
changeset
|
813 | if (text[0] == '\r' || text[0] == '\n') { |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
814 | end_search(tree); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
815 | gnt_widget_activate(widget); |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
816 | } else if (tree->priv->search) { |
|
16310
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
817 | gboolean changed = TRUE; |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
818 | if (isalnum(*text)) { |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
819 | tree->priv->search = g_string_append_c(tree->priv->search, *text); |
|
16310
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
820 | } else if (g_utf8_collate(text, GNT_KEY_BACKSPACE) == 0) { |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
821 | if (tree->priv->search->len) |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
822 | tree->priv->search->str[--tree->priv->search->len] = '\0'; |
|
16310
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
823 | } else |
|
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
824 | changed = FALSE; |
|
9883dbf9bab6
Show the search string in the tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16264
diff
changeset
|
825 | if (changed) { |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
826 | redraw_tree(tree); |
|
18832
177a16b4b9f3
Allow disabling the widget actions on specific widgets. This allows, for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18830
diff
changeset
|
827 | } else { |
|
177a16b4b9f3
Allow disabling the widget actions on specific widgets. This allows, for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18830
diff
changeset
|
828 | gnt_bindable_perform_action_key(GNT_BINDABLE(tree), text); |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
829 | } |
|
23221
b63527bd6e1c
Pressing arrow keys should reset the search timer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22421
diff
changeset
|
830 | g_source_remove(tree->priv->search_timeout); |
|
26651
d9f1eeefb89c
Save the world.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26650
diff
changeset
|
831 | tree->priv->search_timeout = g_timeout_add_seconds(SEARCH_TIMEOUT_S, search_timeout, tree); |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
832 | return TRUE; |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
833 | } else if (text[0] == ' ' && text[1] == 0) { |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
834 | /* Space pressed */ |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
835 | GntTreeRow *row = tree->current; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
836 | if (row && row->child) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
837 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
838 | row->collapsed = !row->collapsed; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
839 | redraw_tree(tree); |
|
16165
24ec117bc52c
Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents:
16032
diff
changeset
|
840 | g_signal_emit(tree, signals[SIG_COLLAPSED], 0, row->key, row->collapsed); |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
841 | } |
|
13969
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
842 | else if (row && row->choice) |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
843 | { |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
844 | row->isselected = !row->isselected; |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
845 | g_signal_emit(tree, signals[SIG_TOGGLED], 0, row->key); |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
846 | redraw_tree(tree); |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
847 | } |
|
18171
dd5c73b7a3b8
I am not sure why I made this change. But it looks good.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18132
diff
changeset
|
848 | } else { |
|
dd5c73b7a3b8
I am not sure why I made this change. But it looks good.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18132
diff
changeset
|
849 | return FALSE; |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
850 | } |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
851 | |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
852 | if (old != tree->current) |
|
13969
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
853 | { |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
854 | tree_selection_changed(tree, old, tree->current); |
|
13969
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
855 | } |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
856 | |
|
18171
dd5c73b7a3b8
I am not sure why I made this change. But it looks good.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18132
diff
changeset
|
857 | return TRUE; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
858 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
859 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
860 | static void |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
861 | gnt_tree_free_columns(GntTree *tree) |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
862 | { |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
863 | int i; |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
864 | for (i = 0; i < tree->ncol; i++) { |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
865 | g_free(tree->columns[i].title); |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
866 | } |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
867 | g_free(tree->columns); |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
868 | } |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
869 | |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
870 | static void |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
871 | gnt_tree_destroy(GntWidget *widget) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
872 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
873 | GntTree *tree = GNT_TREE(widget); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
874 | |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
875 | end_search(tree); |
|
15702
111fdd9108cc
Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15647
diff
changeset
|
876 | if (tree->hash) |
|
111fdd9108cc
Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15647
diff
changeset
|
877 | g_hash_table_destroy(tree->hash); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
878 | g_list_free(tree->list); |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
879 | gnt_tree_free_columns(tree); |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
880 | g_free(tree->priv); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
881 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
882 | |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
883 | static gboolean |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
884 | gnt_tree_clicked(GntWidget *widget, GntMouseEvent event, int x, int y) |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
885 | { |
| 14441 | 886 | GntTree *tree = GNT_TREE(widget); |
| 887 | GntTreeRow *old = tree->current; | |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
888 | if (event == GNT_MOUSE_SCROLL_UP) { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
889 | action_up(GNT_BINDABLE(widget), NULL); |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
890 | } else if (event == GNT_MOUSE_SCROLL_DOWN) { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
891 | action_down(GNT_BINDABLE(widget), NULL); |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
892 | } else if (event == GNT_LEFT_MOUSE_DOWN) { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
893 | GntTreeRow *row; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
894 | GntTree *tree = GNT_TREE(widget); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
895 | int pos = 1; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
896 | if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER)) |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
897 | pos = 0; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
898 | if (tree->show_title) |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
899 | pos += 2; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
900 | pos = y - widget->priv.y - pos; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
901 | row = get_next_n(tree->top, pos); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
902 | if (row && tree->current != row) { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
903 | GntTreeRow *old = tree->current; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
904 | tree->current = row; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
905 | redraw_tree(tree); |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
906 | tree_selection_changed(tree, old, tree->current); |
|
14413
bd998fe17d82
[gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
907 | } else if (row && row == tree->current) { |
|
bd998fe17d82
[gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
908 | if (row->choice) { |
|
bd998fe17d82
[gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
909 | row->isselected = !row->isselected; |
|
bd998fe17d82
[gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
910 | g_signal_emit(tree, signals[SIG_TOGGLED], 0, row->key); |
|
bd998fe17d82
[gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
911 | redraw_tree(tree); |
|
bd998fe17d82
[gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
912 | } else { |
|
bd998fe17d82
[gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
913 | gnt_widget_activate(widget); |
|
bd998fe17d82
[gaim-migrate @ 17054]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14405
diff
changeset
|
914 | } |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
915 | } |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
916 | } else { |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
917 | return FALSE; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
918 | } |
| 14441 | 919 | if (old != tree->current) { |
| 920 | tree_selection_changed(tree, old, tree->current); | |
| 921 | } | |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
922 | return TRUE; |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
923 | } |
|
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
924 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
925 | static void |
|
15113
956d8ac87bf6
[gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15039
diff
changeset
|
926 | gnt_tree_size_changed(GntWidget *widget, int w, int h) |
|
956d8ac87bf6
[gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15039
diff
changeset
|
927 | { |
|
956d8ac87bf6
[gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15039
diff
changeset
|
928 | GntTree *tree = GNT_TREE(widget); |
|
956d8ac87bf6
[gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15039
diff
changeset
|
929 | if (widget->priv.width <= 0) |
|
956d8ac87bf6
[gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15039
diff
changeset
|
930 | return; |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
931 | |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
932 | readjust_columns(tree); |
|
15113
956d8ac87bf6
[gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15039
diff
changeset
|
933 | } |
|
956d8ac87bf6
[gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15039
diff
changeset
|
934 | |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
935 | static gboolean |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
936 | start_search(GntBindable *bindable, GList *list) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
937 | { |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
938 | GntTree *tree = GNT_TREE(bindable); |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
939 | if (tree->priv->search) |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
940 | return FALSE; |
|
18832
177a16b4b9f3
Allow disabling the widget actions on specific widgets. This allows, for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18830
diff
changeset
|
941 | GNT_WIDGET_SET_FLAGS(GNT_WIDGET(tree), GNT_WIDGET_DISABLE_ACTIONS); |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
942 | tree->priv->search = g_string_new(NULL); |
|
26651
d9f1eeefb89c
Save the world.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
26650
diff
changeset
|
943 | tree->priv->search_timeout = g_timeout_add_seconds(SEARCH_TIMEOUT_S, search_timeout, tree); |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
944 | return TRUE; |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
945 | } |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
946 | |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
947 | static gboolean |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
948 | end_search_action(GntBindable *bindable, GList *list) |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
949 | { |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
950 | GntTree *tree = GNT_TREE(bindable); |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
951 | if (tree->priv->search == NULL) |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
952 | return FALSE; |
|
18832
177a16b4b9f3
Allow disabling the widget actions on specific widgets. This allows, for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18830
diff
changeset
|
953 | GNT_WIDGET_UNSET_FLAGS(GNT_WIDGET(tree), GNT_WIDGET_DISABLE_ACTIONS); |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
954 | end_search(tree); |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
955 | redraw_tree(tree); |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
956 | return TRUE; |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
957 | } |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
958 | |
|
15113
956d8ac87bf6
[gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15039
diff
changeset
|
959 | static void |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
960 | gnt_tree_set_property(GObject *obj, guint prop_id, const GValue *value, |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
961 | GParamSpec *spec) |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
962 | { |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
963 | GntTree *tree = GNT_TREE(obj); |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
964 | switch (prop_id) { |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
965 | case PROP_COLUMNS: |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
966 | _gnt_tree_init_internals(tree, g_value_get_int(value)); |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
967 | break; |
|
22311
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
968 | case PROP_EXPANDER: |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
969 | if (tree->priv->expander_level == g_value_get_int(value)) |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
970 | break; |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
971 | tree->priv->expander_level = g_value_get_int(value); |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
972 | g_object_notify(obj, "expander-level"); |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
973 | default: |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
974 | break; |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
975 | } |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
976 | } |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
977 | |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
978 | static void |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
979 | gnt_tree_get_property(GObject *obj, guint prop_id, GValue *value, |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
980 | GParamSpec *spec) |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
981 | { |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
982 | GntTree *tree = GNT_TREE(obj); |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
983 | switch (prop_id) { |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
984 | case PROP_COLUMNS: |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
985 | g_value_set_int(value, tree->ncol); |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
986 | break; |
|
22311
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
987 | case PROP_EXPANDER: |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
988 | g_value_set_int(value, tree->priv->expander_level); |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
989 | break; |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
990 | default: |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
991 | break; |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
992 | } |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
993 | } |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
994 | |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
995 | static void |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
996 | gnt_tree_class_init(GntTreeClass *klass) |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
997 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
998 | GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass); |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
999 | GObjectClass *gclass = G_OBJECT_CLASS(klass); |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1000 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1001 | parent_class = GNT_WIDGET_CLASS(klass); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1002 | parent_class->destroy = gnt_tree_destroy; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1003 | parent_class->draw = gnt_tree_draw; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1004 | parent_class->map = gnt_tree_map; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1005 | parent_class->size_request = gnt_tree_size_request; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1006 | parent_class->key_pressed = gnt_tree_key_pressed; |
|
14405
4398121ce889
[gaim-migrate @ 17044]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14398
diff
changeset
|
1007 | parent_class->clicked = gnt_tree_clicked; |
|
15113
956d8ac87bf6
[gaim-migrate @ 17835]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15039
diff
changeset
|
1008 | parent_class->size_changed = gnt_tree_size_changed; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1009 | |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1010 | gclass->set_property = gnt_tree_set_property; |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1011 | gclass->get_property = gnt_tree_get_property; |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1012 | g_object_class_install_property(gclass, |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1013 | PROP_COLUMNS, |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1014 | g_param_spec_int("columns", "Columns", |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1015 | "Number of columns in the tree.", |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1016 | 1, G_MAXINT, 1, |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1017 | G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1018 | ) |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1019 | ); |
|
22311
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
1020 | g_object_class_install_property(gclass, |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
1021 | PROP_EXPANDER, |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
1022 | g_param_spec_int("expander-level", "Expander level", |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
1023 | "Number of levels to show expander in the tree.", |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
1024 | 0, G_MAXINT, 1, |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
1025 | G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
1026 | ) |
|
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
1027 | ); |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1028 | |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1029 | signals[SIG_SELECTION_CHANGED] = |
|
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1030 | g_signal_new("selection-changed", |
|
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1031 | G_TYPE_FROM_CLASS(klass), |
|
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1032 | G_SIGNAL_RUN_LAST, |
|
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1033 | G_STRUCT_OFFSET(GntTreeClass, selection_changed), |
|
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1034 | NULL, NULL, |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1035 | gnt_closure_marshal_VOID__POINTER_POINTER, |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1036 | G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER); |
|
13927
c2f57a00bc1f
[gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13926
diff
changeset
|
1037 | signals[SIG_SCROLLED] = |
|
c2f57a00bc1f
[gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13926
diff
changeset
|
1038 | g_signal_new("scrolled", |
|
c2f57a00bc1f
[gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13926
diff
changeset
|
1039 | G_TYPE_FROM_CLASS(klass), |
|
c2f57a00bc1f
[gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13926
diff
changeset
|
1040 | G_SIGNAL_RUN_LAST, |
|
c2f57a00bc1f
[gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13926
diff
changeset
|
1041 | 0, |
|
c2f57a00bc1f
[gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13926
diff
changeset
|
1042 | NULL, NULL, |
|
c2f57a00bc1f
[gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13926
diff
changeset
|
1043 | g_cclosure_marshal_VOID__INT, |
|
c2f57a00bc1f
[gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13926
diff
changeset
|
1044 | G_TYPE_NONE, 1, G_TYPE_INT); |
|
13969
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1045 | signals[SIG_TOGGLED] = |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1046 | g_signal_new("toggled", |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1047 | G_TYPE_FROM_CLASS(klass), |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1048 | G_SIGNAL_RUN_LAST, |
|
14905
23f31a7acc73
[gaim-migrate @ 17612]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14898
diff
changeset
|
1049 | G_STRUCT_OFFSET(GntTreeClass, toggled), |
|
13969
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1050 | NULL, NULL, |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1051 | g_cclosure_marshal_VOID__POINTER, |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1052 | G_TYPE_NONE, 1, G_TYPE_POINTER); |
|
16165
24ec117bc52c
Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents:
16032
diff
changeset
|
1053 | signals[SIG_COLLAPSED] = |
|
24ec117bc52c
Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents:
16032
diff
changeset
|
1054 | g_signal_new("collapse-toggled", |
|
24ec117bc52c
Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents:
16032
diff
changeset
|
1055 | G_TYPE_FROM_CLASS(klass), |
|
24ec117bc52c
Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents:
16032
diff
changeset
|
1056 | G_SIGNAL_RUN_LAST, |
|
24ec117bc52c
Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents:
16032
diff
changeset
|
1057 | 0, |
|
24ec117bc52c
Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents:
16032
diff
changeset
|
1058 | NULL, NULL, |
|
24ec117bc52c
Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents:
16032
diff
changeset
|
1059 | gnt_closure_marshal_VOID__POINTER_BOOLEAN, |
|
24ec117bc52c
Remember the collapsed state of groups in the blist
Richard Nelson <wabz@pidgin.im>
parents:
16032
diff
changeset
|
1060 | G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_BOOLEAN); |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1061 | |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
1062 | gnt_bindable_class_register_action(bindable, "move-up", action_up, |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14928
diff
changeset
|
1063 | GNT_KEY_UP, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
1064 | gnt_bindable_register_binding(bindable, "move-up", GNT_KEY_CTRL_P, NULL); |
|
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
1065 | gnt_bindable_class_register_action(bindable, "move-down", action_down, |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14928
diff
changeset
|
1066 | GNT_KEY_DOWN, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
1067 | gnt_bindable_register_binding(bindable, "move-down", GNT_KEY_CTRL_N, NULL); |
|
16032
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
1068 | gnt_bindable_class_register_action(bindable, "move-parent", action_move_parent, |
|
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
1069 | GNT_KEY_BACKSPACE, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
1070 | gnt_bindable_class_register_action(bindable, "page-up", action_page_up, |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14928
diff
changeset
|
1071 | GNT_KEY_PGUP, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
1072 | gnt_bindable_class_register_action(bindable, "page-down", action_page_down, |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14928
diff
changeset
|
1073 | GNT_KEY_PGDOWN, NULL); |
|
15222
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
1074 | gnt_bindable_class_register_action(bindable, "start-search", start_search, |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
1075 | "/", NULL); |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
1076 | gnt_bindable_class_register_action(bindable, "end-search", end_search_action, |
|
7662507d2b35
[gaim-migrate @ 17946]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15220
diff
changeset
|
1077 | "\033", NULL); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14817
diff
changeset
|
1078 | |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
1079 | gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), bindable); |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14446
diff
changeset
|
1080 | GNTDEBUG; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1081 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1082 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1083 | static void |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1084 | gnt_tree_init(GTypeInstance *instance, gpointer class) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1085 | { |
|
14005
198d1658b390
[gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13999
diff
changeset
|
1086 | GntWidget *widget = GNT_WIDGET(instance); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1087 | GntTree *tree = GNT_TREE(widget); |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1088 | tree->show_separator = TRUE; |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1089 | tree->priv = g_new0(GntTreePriv, 1); |
|
19184
72003b472bdc
Fix a /-search bug.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18832
diff
changeset
|
1090 | GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_GROW_X | GNT_WIDGET_GROW_Y | |
|
72003b472bdc
Fix a /-search bug.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18832
diff
changeset
|
1091 | GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_NO_SHADOW); |
|
72003b472bdc
Fix a /-search bug.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18832
diff
changeset
|
1092 | gnt_widget_set_take_focus(widget, TRUE); |
|
14005
198d1658b390
[gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13999
diff
changeset
|
1093 | widget->priv.minw = 4; |
|
15822
3914c5c41521
gnttree can have a size of 1. This fixes <sadrul> meh. gntcombobox crashes if it has only one item in it
Richard Nelson <wabz@pidgin.im>
parents:
15806
diff
changeset
|
1094 | widget->priv.minh = 1; |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14446
diff
changeset
|
1095 | GNTDEBUG; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1096 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1097 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1098 | /****************************************************************************** |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1099 | * GntTree API |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1100 | *****************************************************************************/ |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1101 | GType |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1102 | gnt_tree_get_gtype(void) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1103 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1104 | static GType type = 0; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1105 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1106 | if(type == 0) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1107 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1108 | static const GTypeInfo info = { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1109 | sizeof(GntTreeClass), |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1110 | NULL, /* base_init */ |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1111 | NULL, /* base_finalize */ |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1112 | (GClassInitFunc)gnt_tree_class_init, |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1113 | NULL, /* class_finalize */ |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1114 | NULL, /* class_data */ |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1115 | sizeof(GntTree), |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1116 | 0, /* n_preallocs */ |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1117 | gnt_tree_init, /* instance_init */ |
|
15874
46df7421a1b5
Enable DEBUG_CFLAGS in libgnt and fix up a number of compile warnings and
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15822
diff
changeset
|
1118 | NULL /* value_table */ |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1119 | }; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1120 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1121 | type = g_type_register_static(GNT_TYPE_WIDGET, |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1122 | "GntTree", |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1123 | &info, 0); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1124 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1125 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1126 | return type; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1127 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1128 | |
|
13920
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
1129 | static void |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1130 | free_tree_col(gpointer data) |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1131 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1132 | GntTreeCol *col = data; |
| 19106 | 1133 | if (!col->isbinary) |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1134 | g_free(col->text); |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1135 | g_free(col); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1136 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1137 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1138 | static void |
|
13920
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
1139 | free_tree_row(gpointer data) |
|
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
1140 | { |
|
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
1141 | GntTreeRow *row = data; |
|
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
1142 | |
|
13923
5552f69232b8
[gaim-migrate @ 16322]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
1143 | if (!row) |
|
5552f69232b8
[gaim-migrate @ 16322]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
1144 | return; |
|
5552f69232b8
[gaim-migrate @ 16322]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13922
diff
changeset
|
1145 | |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1146 | g_list_foreach(row->columns, (GFunc)free_tree_col, NULL); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1147 | g_list_free(row->columns); |
|
13920
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
1148 | g_free(row); |
|
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
1149 | } |
|
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
1150 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1151 | GntWidget *gnt_tree_new() |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1152 | { |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1153 | return gnt_tree_new_with_columns(1); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1154 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1155 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1156 | void gnt_tree_set_visible_rows(GntTree *tree, int rows) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1157 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1158 | GntWidget *widget = GNT_WIDGET(tree); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1159 | widget->priv.height = rows; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1160 | if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER)) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1161 | widget->priv.height += 2; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1162 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1163 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1164 | int gnt_tree_get_visible_rows(GntTree *tree) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1165 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1166 | GntWidget *widget = GNT_WIDGET(tree); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1167 | int ret = widget->priv.height; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1168 | if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER)) |
|
13950
bd8d39b3a9e2
[gaim-migrate @ 16369]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13944
diff
changeset
|
1169 | ret -= 2; |
|
bd8d39b3a9e2
[gaim-migrate @ 16369]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13944
diff
changeset
|
1170 | return ret; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1171 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1172 | |
|
18190
bcf28ef7e8ff
Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents:
18171
diff
changeset
|
1173 | GList *gnt_tree_get_rows(GntTree *tree) |
| 14817 | 1174 | { |
| 1175 | return tree->list; | |
| 1176 | } | |
| 1177 | ||
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1178 | void gnt_tree_scroll(GntTree *tree, int count) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1179 | { |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1180 | GntTreeRow *row; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1181 | |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1182 | if (count < 0) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1183 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1184 | if (get_root_distance(tree->top) == 0) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1185 | return; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1186 | row = get_prev_n(tree->top, -count); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1187 | if (row == NULL) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1188 | row = tree->root; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1189 | tree->top = row; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1190 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1191 | else |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1192 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1193 | get_next_n_opt(tree->bottom, count, &count); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1194 | tree->top = get_next_n(tree->top, count); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1195 | } |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1196 | |
|
13915
15a38b312abe
[gaim-migrate @ 16312]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13913
diff
changeset
|
1197 | redraw_tree(tree); |
|
13927
c2f57a00bc1f
[gaim-migrate @ 16331]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13926
diff
changeset
|
1198 | g_signal_emit(tree, signals[SIG_SCROLLED], 0, count); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1199 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1200 | |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1201 | static gpointer |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1202 | find_position(GntTree *tree, gpointer key, gpointer parent) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1203 | { |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1204 | GntTreeRow *row; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1205 | |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1206 | if (tree->priv->compare == NULL) |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1207 | return NULL; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1208 | |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1209 | if (parent == NULL) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1210 | row = tree->root; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1211 | else |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1212 | row = g_hash_table_lookup(tree->hash, parent); |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1213 | |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1214 | if (!row) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1215 | return NULL; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1216 | |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1217 | if (parent) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1218 | row = row->child; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1219 | |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1220 | while (row) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1221 | { |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1222 | if (tree->priv->compare(key, row->key) < 0) |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1223 | return (row->prev ? row->prev->key : NULL); |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1224 | if (row->next) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1225 | row = row->next; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1226 | else |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1227 | return row->key; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1228 | } |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1229 | return NULL; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1230 | } |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1231 | |
| 14774 | 1232 | void gnt_tree_sort_row(GntTree *tree, gpointer key) |
| 1233 | { | |
| 1234 | GntTreeRow *row, *q, *s; | |
| 1235 | int current, newp; | |
| 1236 | ||
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1237 | if (!tree->priv->compare) |
| 14774 | 1238 | return; |
| 1239 | ||
| 1240 | row = g_hash_table_lookup(tree->hash, key); | |
| 1241 | g_return_if_fail(row != NULL); | |
| 1242 | ||
| 1243 | current = g_list_index(tree->list, key); | |
| 1244 | ||
| 1245 | if (row->parent) | |
| 1246 | s = row->parent->child; | |
| 1247 | else | |
| 1248 | s = tree->root; | |
| 1249 | ||
| 1250 | q = NULL; | |
| 1251 | while (s) { | |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1252 | if (tree->priv->compare(row->key, s->key) < 0) |
| 14774 | 1253 | break; |
| 1254 | q = s; | |
| 1255 | s = s->next; | |
| 1256 | } | |
| 1257 | ||
| 1258 | /* Move row between q and s */ | |
| 1259 | if (row == q || row == s) | |
| 1260 | return; | |
| 1261 | ||
| 1262 | if (q == NULL) { | |
| 1263 | /* row becomes the first child of its parent */ | |
| 1264 | row->prev->next = row->next; /* row->prev cannot be NULL at this point */ | |
| 1265 | if (row->next) | |
| 1266 | row->next->prev = row->prev; | |
| 1267 | if (row->parent) | |
| 1268 | row->parent->child = row; | |
| 1269 | else | |
| 1270 | tree->root = row; | |
| 1271 | row->next = s; | |
| 1272 | s->prev = row; /* s cannot be NULL */ | |
| 1273 | row->prev = NULL; | |
| 1274 | newp = g_list_index(tree->list, s) - 1; | |
| 1275 | } else { | |
| 1276 | if (row->prev) { | |
| 1277 | row->prev->next = row->next; | |
| 1278 | } else { | |
| 1279 | /* row was the first child of its parent */ | |
| 1280 | if (row->parent) | |
| 1281 | row->parent->child = row->next; | |
| 1282 | else | |
| 1283 | tree->top = row->next; | |
| 1284 | } | |
| 1285 | ||
| 1286 | if (row->next) | |
| 1287 | row->next->prev = row->prev; | |
| 1288 | ||
| 1289 | q->next = row; | |
| 1290 | row->prev = q; | |
| 1291 | if (s) | |
| 1292 | s->prev = row; | |
| 1293 | row->next = s; | |
| 1294 | newp = g_list_index(tree->list, q) + 1; | |
| 1295 | } | |
| 1296 | tree->list = g_list_reposition_child(tree->list, current, newp); | |
| 1297 | ||
| 1298 | redraw_tree(tree); | |
| 1299 | } | |
| 1300 | ||
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1301 | GntTreeRow *gnt_tree_add_row_after(GntTree *tree, void *key, GntTreeRow *row, void *parent, void *bigbro) |
|
13920
c51758bc563c
[gaim-migrate @ 16317]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13919
diff
changeset
|
1302 | { |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1303 | GntTreeRow *pr = NULL; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1304 | |
|
20198
90ae53934c28
applied changes from 88f296b3653b5a7578a7581c1582d37390c9d212
Luke Schierer <lschiere@pidgin.im>
parents:
19859
diff
changeset
|
1305 | row->tree = tree; |
|
90ae53934c28
applied changes from 88f296b3653b5a7578a7581c1582d37390c9d212
Luke Schierer <lschiere@pidgin.im>
parents:
19859
diff
changeset
|
1306 | row->key = key; |
|
90ae53934c28
applied changes from 88f296b3653b5a7578a7581c1582d37390c9d212
Luke Schierer <lschiere@pidgin.im>
parents:
19859
diff
changeset
|
1307 | row->data = NULL; |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1308 | g_hash_table_replace(tree->hash, key, row); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1309 | |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1310 | if (bigbro == NULL && tree->priv->compare) |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1311 | { |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1312 | bigbro = find_position(tree, key, parent); |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1313 | } |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1314 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1315 | if (tree->root == NULL) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1316 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1317 | tree->root = row; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1318 | tree->list = g_list_prepend(tree->list, key); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1319 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1320 | else |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1321 | { |
|
13989
9a647311c9ac
[gaim-migrate @ 16447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13969
diff
changeset
|
1322 | int position = 0; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1323 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1324 | if (bigbro) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1325 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1326 | pr = g_hash_table_lookup(tree->hash, bigbro); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1327 | if (pr) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1328 | { |
|
13919
94caf5dc02b4
[gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13918
diff
changeset
|
1329 | if (pr->next) pr->next->prev = row; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1330 | row->next = pr->next; |
|
13919
94caf5dc02b4
[gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13918
diff
changeset
|
1331 | row->prev = pr; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1332 | pr->next = row; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1333 | row->parent = pr->parent; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1334 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1335 | position = g_list_index(tree->list, bigbro); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1336 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1337 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1338 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1339 | if (pr == NULL && parent) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1340 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1341 | pr = g_hash_table_lookup(tree->hash, parent); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1342 | if (pr) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1343 | { |
|
13919
94caf5dc02b4
[gaim-migrate @ 16316]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13918
diff
changeset
|
1344 | if (pr->child) pr->child->prev = row; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1345 | row->next = pr->child; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1346 | pr->child = row; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1347 | row->parent = pr; |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1348 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1349 | position = g_list_index(tree->list, parent); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1350 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1351 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1352 | |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1353 | if (pr == NULL) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1354 | { |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1355 | GntTreeRow *r = tree->root; |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1356 | row->next = r; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1357 | if (r) r->prev = row; |
|
15220
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15113
diff
changeset
|
1358 | if (tree->current == tree->root) |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15113
diff
changeset
|
1359 | tree->current = row; |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1360 | tree->root = row; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1361 | tree->list = g_list_prepend(tree->list, key); |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1362 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1363 | else |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1364 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1365 | tree->list = g_list_insert(tree->list, key, position + 1); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1366 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1367 | } |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1368 | redraw_tree(tree); |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1369 | |
|
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1370 | return row; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1371 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1372 | |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1373 | GntTreeRow *gnt_tree_add_row_last(GntTree *tree, void *key, GntTreeRow *row, void *parent) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1374 | { |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1375 | GntTreeRow *pr = NULL, *br = NULL; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1376 | |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1377 | if (parent) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1378 | pr = g_hash_table_lookup(tree->hash, parent); |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1379 | |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1380 | if (pr) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1381 | br = pr->child; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1382 | else |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1383 | br = tree->root; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1384 | |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1385 | if (br) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1386 | { |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1387 | while (br->next) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1388 | br = br->next; |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1389 | } |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1390 | |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1391 | return gnt_tree_add_row_after(tree, key, row, parent, br ? br->key : NULL); |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1392 | } |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1393 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1394 | gpointer gnt_tree_get_selection_data(GntTree *tree) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1395 | { |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1396 | if (tree->current) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1397 | return tree->current->key; /* XXX: perhaps we should just get rid of 'data' */ |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1398 | return NULL; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1399 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1400 | |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1401 | char *gnt_tree_get_selection_text(GntTree *tree) |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13996
diff
changeset
|
1402 | { |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13996
diff
changeset
|
1403 | if (tree->current) |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1404 | return update_row_text(tree, tree->current); |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13996
diff
changeset
|
1405 | return NULL; |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13996
diff
changeset
|
1406 | } |
|
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13996
diff
changeset
|
1407 | |
|
18830
7e9784f65d5d
Anoter patch from Javeed Shaikh to introduce a utility function for a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18829
diff
changeset
|
1408 | GList *gnt_tree_get_row_text_list(GntTree *tree, gpointer key) |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1409 | { |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1410 | GList *list = NULL, *iter; |
|
18830
7e9784f65d5d
Anoter patch from Javeed Shaikh to introduce a utility function for a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18829
diff
changeset
|
1411 | GntTreeRow *row = key ? g_hash_table_lookup(tree->hash, key) : tree->current; |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1412 | int i; |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1413 | |
|
18830
7e9784f65d5d
Anoter patch from Javeed Shaikh to introduce a utility function for a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18829
diff
changeset
|
1414 | if (!row) |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1415 | return NULL; |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1416 | |
|
18830
7e9784f65d5d
Anoter patch from Javeed Shaikh to introduce a utility function for a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18829
diff
changeset
|
1417 | for (i = 0, iter = row->columns; i < tree->ncol && iter; |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1418 | i++, iter = iter->next) |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1419 | { |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1420 | GntTreeCol *col = iter->data; |
|
18830
7e9784f65d5d
Anoter patch from Javeed Shaikh to introduce a utility function for a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18829
diff
changeset
|
1421 | list = g_list_append(list, BINARY_DATA(tree, i) ? col->text : g_strdup(col->text)); |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1422 | } |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1423 | |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1424 | return list; |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1425 | } |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1426 | |
|
18830
7e9784f65d5d
Anoter patch from Javeed Shaikh to introduce a utility function for a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18829
diff
changeset
|
1427 | GList *gnt_tree_get_selection_text_list(GntTree *tree) |
|
7e9784f65d5d
Anoter patch from Javeed Shaikh to introduce a utility function for a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18829
diff
changeset
|
1428 | { |
|
7e9784f65d5d
Anoter patch from Javeed Shaikh to introduce a utility function for a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18829
diff
changeset
|
1429 | return gnt_tree_get_row_text_list(tree, NULL); |
|
7e9784f65d5d
Anoter patch from Javeed Shaikh to introduce a utility function for a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18829
diff
changeset
|
1430 | } |
|
7e9784f65d5d
Anoter patch from Javeed Shaikh to introduce a utility function for a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18829
diff
changeset
|
1431 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1432 | void gnt_tree_remove(GntTree *tree, gpointer key) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1433 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1434 | GntTreeRow *row = g_hash_table_lookup(tree->hash, key); |
|
15761
3e83050bff0a
recursively remove child nodes. This fixes a crash (often caused by going offline)
Richard Nelson <wabz@pidgin.im>
parents:
15702
diff
changeset
|
1435 | static int depth = 0; /* Only redraw after all child nodes are removed */ |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1436 | if (row) |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1437 | { |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1438 | gboolean redraw = FALSE; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1439 | |
|
15039
20a0d0117a47
[gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14962
diff
changeset
|
1440 | if (row->child) { |
|
15761
3e83050bff0a
recursively remove child nodes. This fixes a crash (often caused by going offline)
Richard Nelson <wabz@pidgin.im>
parents:
15702
diff
changeset
|
1441 | depth++; |
|
3e83050bff0a
recursively remove child nodes. This fixes a crash (often caused by going offline)
Richard Nelson <wabz@pidgin.im>
parents:
15702
diff
changeset
|
1442 | while (row->child) { |
|
3e83050bff0a
recursively remove child nodes. This fixes a crash (often caused by going offline)
Richard Nelson <wabz@pidgin.im>
parents:
15702
diff
changeset
|
1443 | gnt_tree_remove(tree, row->child->key); |
|
15039
20a0d0117a47
[gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14962
diff
changeset
|
1444 | } |
|
15761
3e83050bff0a
recursively remove child nodes. This fixes a crash (often caused by going offline)
Richard Nelson <wabz@pidgin.im>
parents:
15702
diff
changeset
|
1445 | depth--; |
|
15039
20a0d0117a47
[gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14962
diff
changeset
|
1446 | } |
|
20a0d0117a47
[gaim-migrate @ 17756]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14962
diff
changeset
|
1447 | |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1448 | if (get_distance(tree->top, row) >= 0 && get_distance(row, tree->bottom) >= 0) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1449 | redraw = TRUE; |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1450 | |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1451 | /* Update root/top/current/bottom if necessary */ |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1452 | if (tree->root == row) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1453 | tree->root = get_next(row); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1454 | if (tree->top == row) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1455 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1456 | if (tree->top != tree->root) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1457 | tree->top = get_prev(row); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1458 | else |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1459 | tree->top = get_next(row); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1460 | } |
|
15617
f4813fc9b095
Patch from Richard 'wabz' Nelson: Make sure selection-changed signal is emitted if selected item is removed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15480
diff
changeset
|
1461 | if (tree->current == row) |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1462 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1463 | if (tree->current != tree->root) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1464 | tree->current = get_prev(row); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1465 | else |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1466 | tree->current = get_next(row); |
|
15617
f4813fc9b095
Patch from Richard 'wabz' Nelson: Make sure selection-changed signal is emitted if selected item is removed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15480
diff
changeset
|
1467 | tree_selection_changed(tree, row, tree->current); |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1468 | } |
|
15617
f4813fc9b095
Patch from Richard 'wabz' Nelson: Make sure selection-changed signal is emitted if selected item is removed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15480
diff
changeset
|
1469 | if (tree->bottom == row) |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1470 | { |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1471 | tree->bottom = get_prev(row); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1472 | } |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1473 | |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1474 | /* Fix the links */ |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1475 | if (row->next) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1476 | row->next->prev = row->prev; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1477 | if (row->parent && row->parent->child == row) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1478 | row->parent->child = row->next; |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1479 | if (row->prev) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1480 | row->prev->next = row->next; |
|
15761
3e83050bff0a
recursively remove child nodes. This fixes a crash (often caused by going offline)
Richard Nelson <wabz@pidgin.im>
parents:
15702
diff
changeset
|
1481 | |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1482 | g_hash_table_remove(tree->hash, key); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1483 | tree->list = g_list_remove(tree->list, key); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1484 | |
|
15761
3e83050bff0a
recursively remove child nodes. This fixes a crash (often caused by going offline)
Richard Nelson <wabz@pidgin.im>
parents:
15702
diff
changeset
|
1485 | if (redraw && depth == 0) |
|
13852
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1486 | { |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1487 | redraw_tree(tree); |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1488 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1489 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1490 | } |
|
1d3ae9f34d42
[gaim-migrate @ 16308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1491 | |
|
14270
710ef4096bac
[gaim-migrate @ 16883]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14193
diff
changeset
|
1492 | static gboolean |
|
710ef4096bac
[gaim-migrate @ 16883]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14193
diff
changeset
|
1493 | return_true(gpointer key, gpointer data, gpointer null) |
|
710ef4096bac
[gaim-migrate @ 16883]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14193
diff
changeset
|
1494 | { |
|
710ef4096bac
[gaim-migrate @ 16883]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14193
diff
changeset
|
1495 | return TRUE; |
|
710ef4096bac
[gaim-migrate @ 16883]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14193
diff
changeset
|
1496 | } |
|
710ef4096bac
[gaim-migrate @ 16883]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14193
diff
changeset
|
1497 | |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14072
diff
changeset
|
1498 | void gnt_tree_remove_all(GntTree *tree) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14072
diff
changeset
|
1499 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14072
diff
changeset
|
1500 | tree->root = NULL; |
|
15220
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15113
diff
changeset
|
1501 | g_hash_table_foreach_remove(tree->hash, (GHRFunc)return_true, tree); |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14072
diff
changeset
|
1502 | g_list_free(tree->list); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14072
diff
changeset
|
1503 | tree->list = NULL; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14072
diff
changeset
|
1504 | tree->current = tree->top = tree->bottom = NULL; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14072
diff
changeset
|
1505 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14072
diff
changeset
|
1506 | |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1507 | int gnt_tree_get_selection_visible_line(GntTree *tree) |
|
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1508 | { |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1509 | return get_distance(tree->top, tree->current) + |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1510 | !!(GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER)); |
|
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1511 | } |
|
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13920
diff
changeset
|
1512 | |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1513 | void gnt_tree_change_text(GntTree *tree, gpointer key, int colno, const char *text) |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1514 | { |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1515 | GntTreeRow *row; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1516 | GntTreeCol *col; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1517 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1518 | g_return_if_fail(colno < tree->ncol); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1519 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1520 | row = g_hash_table_lookup(tree->hash, key); |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1521 | if (row) |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1522 | { |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1523 | col = g_list_nth_data(row->columns, colno); |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1524 | if (BINARY_DATA(tree, colno)) { |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1525 | col->text = (gpointer)text; |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1526 | } else { |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1527 | g_free(col->text); |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1528 | col->text = g_strdup(text ? text : ""); |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1529 | } |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1530 | |
|
21261
eaf551849532
Do not do unnecessary processing when updating text in a column.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21254
diff
changeset
|
1531 | if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_MAPPED) && |
|
eaf551849532
Do not do unnecessary processing when updating text in a column.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21254
diff
changeset
|
1532 | get_distance(tree->top, row) >= 0 && get_distance(row, tree->bottom) >= 0) |
|
13926
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1533 | redraw_tree(tree); |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1534 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1535 | } |
|
d2c1522276b3
[gaim-migrate @ 16328]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13923
diff
changeset
|
1536 | |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1537 | GntTreeRow *gnt_tree_add_choice(GntTree *tree, void *key, GntTreeRow *row, void *parent, void *bigbro) |
|
13969
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1538 | { |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1539 | GntTreeRow *r; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1540 | r = g_hash_table_lookup(tree->hash, key); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1541 | g_return_val_if_fail(!r || !r->choice, NULL); |
|
14398
351f2af228f1
[gaim-migrate @ 17032]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14278
diff
changeset
|
1542 | |
|
351f2af228f1
[gaim-migrate @ 17032]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14278
diff
changeset
|
1543 | if (bigbro == NULL) { |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1544 | if (tree->priv->compare) |
|
15806
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1545 | bigbro = find_position(tree, key, parent); |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1546 | else { |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1547 | r = g_hash_table_lookup(tree->hash, parent); |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1548 | if (!r) |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1549 | r = tree->root; |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1550 | else |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1551 | r = r->child; |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1552 | if (r) { |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1553 | while (r->next) |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1554 | r = r->next; |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1555 | bigbro = r->key; |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1556 | } |
|
1972a83ada1f
Sort the plugin list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15761
diff
changeset
|
1557 | } |
|
14398
351f2af228f1
[gaim-migrate @ 17032]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14278
diff
changeset
|
1558 | } |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1559 | row = gnt_tree_add_row_after(tree, key, row, parent, bigbro); |
|
13969
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1560 | row->choice = TRUE; |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1561 | |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1562 | return row; |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1563 | } |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1564 | |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1565 | void gnt_tree_set_choice(GntTree *tree, void *key, gboolean set) |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1566 | { |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1567 | GntTreeRow *row = g_hash_table_lookup(tree->hash, key); |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1568 | |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1569 | if (!row) |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1570 | return; |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1571 | g_return_if_fail(row->choice); |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1572 | |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1573 | row->isselected = set; |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1574 | redraw_tree(tree); |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1575 | } |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1576 | |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1577 | gboolean gnt_tree_get_choice(GntTree *tree, void *key) |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1578 | { |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1579 | GntTreeRow *row = g_hash_table_lookup(tree->hash, key); |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1580 | |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1581 | if (!row) |
|
13989
9a647311c9ac
[gaim-migrate @ 16447]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13969
diff
changeset
|
1582 | return FALSE; |
|
13969
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1583 | g_return_val_if_fail(row->choice, FALSE); |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1584 | |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1585 | return row->isselected; |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1586 | } |
|
0541f389442e
[gaim-migrate @ 16402]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
1587 | |
|
13993
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
1588 | void gnt_tree_set_row_flags(GntTree *tree, void *key, GntTextFormatFlags flags) |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
1589 | { |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
1590 | GntTreeRow *row = g_hash_table_lookup(tree->hash, key); |
|
13996
fa46d71780ff
[gaim-migrate @ 16462]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13993
diff
changeset
|
1591 | if (!row || row->flags == flags) |
|
13993
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
1592 | return; |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
1593 | |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
1594 | row->flags = flags; |
|
13997
546ca912cb25
[gaim-migrate @ 16466]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13996
diff
changeset
|
1595 | redraw_tree(tree); /* XXX: It shouldn't be necessary to redraw the whole darned tree */ |
|
13993
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
1596 | } |
|
8c12e7d15b40
[gaim-migrate @ 16458]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
1597 | |
|
21804
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
1598 | void gnt_tree_set_row_color(GntTree *tree, void *key, int color) |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
1599 | { |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
1600 | GntTreeRow *row = g_hash_table_lookup(tree->hash, key); |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
1601 | if (!row || row->color == color) |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
1602 | return; |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
1603 | |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
1604 | row->color = color; |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
1605 | redraw_tree(tree); |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
1606 | } |
|
931ef2cc7cfb
Add support for colour in gnttreerows, and colourise the blist. Fixes #1490
Richard Nelson <wabz@pidgin.im>
parents:
21273
diff
changeset
|
1607 | |
|
14014
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1608 | void gnt_tree_set_selected(GntTree *tree , void *key) |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1609 | { |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1610 | int dist; |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1611 | GntTreeRow *row = g_hash_table_lookup(tree->hash, key); |
|
16264
03aaf9aae68b
emit/handle gnttree signals appropriately
Richard Nelson <wabz@pidgin.im>
parents:
16185
diff
changeset
|
1612 | if (!row || row == tree->current) |
|
14014
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1613 | return; |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1614 | |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1615 | if (tree->top == NULL) |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1616 | tree->top = row; |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1617 | if (tree->bottom == NULL) |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1618 | tree->bottom = row; |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1619 | |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1620 | tree->current = row; |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1621 | if ((dist = get_distance(tree->current, tree->bottom)) < 0) |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1622 | gnt_tree_scroll(tree, -dist); |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1623 | else if ((dist = get_distance(tree->current, tree->top)) > 0) |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1624 | gnt_tree_scroll(tree, -dist); |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1625 | else |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1626 | redraw_tree(tree); |
|
16264
03aaf9aae68b
emit/handle gnttree signals appropriately
Richard Nelson <wabz@pidgin.im>
parents:
16185
diff
changeset
|
1627 | tree_selection_changed(tree, row, tree->current); |
|
14014
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1628 | } |
|
223d99ce2f06
[gaim-migrate @ 16500]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1629 | |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1630 | static void _gnt_tree_init_internals(GntTree *tree, int col) |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1631 | { |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1632 | gnt_tree_free_columns(tree); |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1633 | |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1634 | tree->ncol = col; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1635 | tree->hash = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, free_tree_row); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1636 | tree->columns = g_new0(struct _GntTreeColInfo, col); |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1637 | tree->priv->lastvisible = col - 1; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1638 | while (col--) |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1639 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1640 | tree->columns[col].width = 15; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1641 | } |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1642 | tree->list = NULL; |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1643 | tree->show_title = FALSE; |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1644 | g_object_notify(G_OBJECT(tree), "columns"); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1645 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1646 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1647 | GntWidget *gnt_tree_new_with_columns(int col) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1648 | { |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1649 | GntWidget *widget = g_object_new(GNT_TYPE_TREE, |
|
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1650 | "columns", col, |
|
22311
f3b63d7c4601
Allow customizing the expander in the tree. This is mostly a hack ;)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22301
diff
changeset
|
1651 | "expander-level", 1, |
|
18783
ca193fb6d9a2
Use gobject properties instead of hacks when creating columns in a tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18632
diff
changeset
|
1652 | NULL); |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1653 | |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1654 | return widget; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1655 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1656 | |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1657 | GntTreeRow *gnt_tree_create_row_from_list(GntTree *tree, GList *list) |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1658 | { |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1659 | GList *iter; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1660 | int i; |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1661 | GntTreeRow *row = g_new0(GntTreeRow, 1); |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1662 | |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1663 | for (i = 0, iter = list; i < tree->ncol && iter; iter = iter->next, i++) |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1664 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1665 | GntTreeCol *col = g_new0(GntTreeCol, 1); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1666 | col->span = 1; |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1667 | if (BINARY_DATA(tree, i)) { |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1668 | col->text = iter->data; |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1669 | col->isbinary = TRUE; |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1670 | } else { |
|
19235
a6b00192295b
disapproval of revision '8d049f26f06abbea924dc65289b6edaf4f4adcd0'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19234
diff
changeset
|
1671 | col->text = g_strdup(iter->data ? iter->data : ""); |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1672 | col->isbinary = FALSE; |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1673 | } |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1674 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1675 | row->columns = g_list_append(row->columns, col); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1676 | } |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1677 | |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1678 | return row; |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1679 | } |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1680 | |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1681 | GntTreeRow *gnt_tree_create_row(GntTree *tree, ...) |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1682 | { |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1683 | int i; |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1684 | va_list args; |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1685 | GList *list = NULL; |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1686 | GntTreeRow *row; |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1687 | |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1688 | va_start(args, tree); |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1689 | for (i = 0; i < tree->ncol; i++) |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1690 | { |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
1691 | list = g_list_append(list, va_arg(args, char *)); |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1692 | } |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1693 | va_end(args); |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1694 | |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1695 | row = gnt_tree_create_row_from_list(tree, list); |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1696 | g_list_free(list); |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14033
diff
changeset
|
1697 | |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1698 | return row; |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1699 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1700 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1701 | void gnt_tree_set_col_width(GntTree *tree, int col, int width) |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1702 | { |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1703 | g_return_if_fail(col < tree->ncol); |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1704 | |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1705 | tree->columns[col].width = width; |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1706 | if (tree->columns[col].width_ratio == 0) |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1707 | tree->columns[col].width_ratio = width; |
|
14026
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1708 | } |
|
ad91ce0effe2
[gaim-migrate @ 16520]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14014
diff
changeset
|
1709 | |
|
18403
218a6f247a1c
Oops. I missed this. This allows setting tree-column titles one by one.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18255
diff
changeset
|
1710 | void gnt_tree_set_column_title(GntTree *tree, int index, const char *title) |
|
218a6f247a1c
Oops. I missed this. This allows setting tree-column titles one by one.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18255
diff
changeset
|
1711 | { |
|
218a6f247a1c
Oops. I missed this. This allows setting tree-column titles one by one.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18255
diff
changeset
|
1712 | g_free(tree->columns[index].title); |
|
218a6f247a1c
Oops. I missed this. This allows setting tree-column titles one by one.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18255
diff
changeset
|
1713 | tree->columns[index].title = g_strdup(title); |
|
218a6f247a1c
Oops. I missed this. This allows setting tree-column titles one by one.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18255
diff
changeset
|
1714 | } |
|
218a6f247a1c
Oops. I missed this. This allows setting tree-column titles one by one.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18255
diff
changeset
|
1715 | |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1716 | void gnt_tree_set_column_titles(GntTree *tree, ...) |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1717 | { |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1718 | int i; |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1719 | va_list args; |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1720 | |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1721 | va_start(args, tree); |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1722 | for (i = 0; i < tree->ncol; i++) |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1723 | { |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1724 | const char *title = va_arg(args, const char *); |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1725 | tree->columns[i].title = g_strdup(title); |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1726 | } |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1727 | va_end(args); |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1728 | } |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1729 | |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1730 | void gnt_tree_set_show_title(GntTree *tree, gboolean set) |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1731 | { |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1732 | tree->show_title = set; |
|
14185
394aa8aa00a3
[gaim-migrate @ 16761]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14169
diff
changeset
|
1733 | GNT_WIDGET(tree)->priv.minh = (set ? 6 : 4); |
|
14033
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1734 | } |
|
127990de806d
[gaim-migrate @ 16529]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14026
diff
changeset
|
1735 | |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1736 | void gnt_tree_set_compare_func(GntTree *tree, GCompareFunc func) |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1737 | { |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1738 | tree->priv->compare = func; |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1739 | } |
|
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
1740 | |
|
14446
5f36f08183e8
[gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14441
diff
changeset
|
1741 | void gnt_tree_set_expanded(GntTree *tree, void *key, gboolean expanded) |
|
5f36f08183e8
[gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14441
diff
changeset
|
1742 | { |
|
5f36f08183e8
[gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14441
diff
changeset
|
1743 | GntTreeRow *row = g_hash_table_lookup(tree->hash, key); |
|
5f36f08183e8
[gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14441
diff
changeset
|
1744 | if (row) { |
|
5f36f08183e8
[gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14441
diff
changeset
|
1745 | row->collapsed = !expanded; |
|
5f36f08183e8
[gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14441
diff
changeset
|
1746 | if (GNT_WIDGET(tree)->window) |
|
5f36f08183e8
[gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14441
diff
changeset
|
1747 | gnt_widget_draw(GNT_WIDGET(tree)); |
|
16264
03aaf9aae68b
emit/handle gnttree signals appropriately
Richard Nelson <wabz@pidgin.im>
parents:
16185
diff
changeset
|
1748 | g_signal_emit(tree, signals[SIG_COLLAPSED], 0, key, row->collapsed); |
|
14446
5f36f08183e8
[gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14441
diff
changeset
|
1749 | } |
|
5f36f08183e8
[gaim-migrate @ 17090]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14441
diff
changeset
|
1750 | } |
|
14675
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1751 | |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1752 | void gnt_tree_set_show_separator(GntTree *tree, gboolean set) |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1753 | { |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1754 | tree->show_separator = set; |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1755 | } |
|
be8af28d1980
[gaim-migrate @ 17341]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14494
diff
changeset
|
1756 | |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1757 | void gnt_tree_adjust_columns(GntTree *tree) |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1758 | { |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1759 | GntTreeRow *row = tree->root; |
|
16185
b19597267ec1
We don't need to do anything about the heights here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16165
diff
changeset
|
1760 | int *widths, i, twidth; |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1761 | |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1762 | widths = g_new0(int, tree->ncol); |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1763 | while (row) { |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1764 | GList *iter; |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1765 | for (i = 0, iter = row->columns; iter; iter = iter->next, i++) { |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1766 | GntTreeCol *col = iter->data; |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1767 | int w = gnt_util_onscreen_width(col->text, NULL); |
|
16027
931890920563
check-items are wider.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15991
diff
changeset
|
1768 | if (i == 0 && row->choice) |
|
931890920563
check-items are wider.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15991
diff
changeset
|
1769 | w += 4; |
|
16032
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
1770 | if (i == 0) { |
|
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
1771 | w += find_depth(row) * TAB_SIZE; |
|
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
1772 | } |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1773 | if (widths[i] < w) |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1774 | widths[i] = w; |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1775 | } |
|
16032
55ba12884571
Backspace to jump to parent.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16031
diff
changeset
|
1776 | row = get_next(row); |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1777 | } |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1778 | |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1779 | twidth = 1 + 2 * (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER)); |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1780 | for (i = 0; i < tree->ncol; i++) { |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1781 | if (tree->columns[i].flags & GNT_TREE_COLUMN_FIXED_SIZE) |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1782 | widths[i] = tree->columns[i].width; |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1783 | gnt_tree_set_col_width(tree, i, widths[i]); |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1784 | if (!COLUMN_INVISIBLE(tree, i)) { |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1785 | twidth = twidth + widths[i]; |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1786 | if (tree->priv->lastvisible != i) |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1787 | twidth += 1; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1788 | } |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1789 | } |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1790 | g_free(widths); |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1791 | |
|
16185
b19597267ec1
We don't need to do anything about the heights here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16165
diff
changeset
|
1792 | gnt_widget_set_size(GNT_WIDGET(tree), twidth, -1); |
|
14678
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1793 | } |
|
97f57691faab
[gaim-migrate @ 17344]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14675
diff
changeset
|
1794 | |
|
15220
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15113
diff
changeset
|
1795 | void gnt_tree_set_hash_fns(GntTree *tree, gpointer hash, gpointer eq, gpointer kd) |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15113
diff
changeset
|
1796 | { |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15113
diff
changeset
|
1797 | g_hash_table_foreach_remove(tree->hash, return_true, NULL); |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15113
diff
changeset
|
1798 | g_hash_table_destroy(tree->hash); |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15113
diff
changeset
|
1799 | tree->hash = g_hash_table_new_full(hash, eq, kd, free_tree_row); |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15113
diff
changeset
|
1800 | } |
|
fc8b223f4b75
[gaim-migrate @ 17944]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15113
diff
changeset
|
1801 | |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1802 | static void |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1803 | set_column_flag(GntTree *tree, int col, GntTreeColumnFlag flag, gboolean set) |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1804 | { |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1805 | if (set) |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1806 | tree->columns[col].flags |= flag; |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1807 | else |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1808 | tree->columns[col].flags &= ~flag; |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1809 | } |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1810 | |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
1811 | void gnt_tree_set_column_visible(GntTree *tree, int col, gboolean vis) |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
1812 | { |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
1813 | g_return_if_fail(col < tree->ncol); |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1814 | set_column_flag(tree, col, GNT_TREE_COLUMN_INVISIBLE, !vis); |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1815 | if (vis) { |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1816 | /* the column is visible */ |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1817 | if (tree->priv->lastvisible < col) |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1818 | tree->priv->lastvisible = col; |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1819 | } else { |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1820 | if (tree->priv->lastvisible == col) |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1821 | while (tree->priv->lastvisible) { |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1822 | tree->priv->lastvisible--; |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1823 | if (!COLUMN_INVISIBLE(tree, tree->priv->lastvisible)) |
|
18624
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1824 | break; |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1825 | } |
|
03d4eb6b6684
Allow trigger keys for menuitems.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18598
diff
changeset
|
1826 | } |
|
21273
2f91b326b3f0
Minor adjustments to prevent a crash, correct a data type and fix drawing.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21263
diff
changeset
|
1827 | if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_MAPPED)) |
|
2f91b326b3f0
Minor adjustments to prevent a crash, correct a data type and fix drawing.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21263
diff
changeset
|
1828 | readjust_columns(tree); |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1829 | } |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1830 | |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1831 | void gnt_tree_set_column_resizable(GntTree *tree, int col, gboolean res) |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1832 | { |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1833 | g_return_if_fail(col < tree->ncol); |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1834 | set_column_flag(tree, col, GNT_TREE_COLUMN_FIXED_SIZE, !res); |
|
16030
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
1835 | } |
|
fb61f4100934
Allow making some columns invisible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16027
diff
changeset
|
1836 | |
|
18598
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1837 | void gnt_tree_set_column_is_binary(GntTree *tree, int col, gboolean bin) |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1838 | { |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1839 | g_return_if_fail(col < tree->ncol); |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1840 | set_column_flag(tree, col, GNT_TREE_COLUMN_FIXED_SIZE, bin); |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1841 | } |
|
946f9240fe5c
Allow storing non-string binary data in tree columns.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18559
diff
changeset
|
1842 | |
|
18632
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
1843 | void gnt_tree_set_column_is_right_aligned(GntTree *tree, int col, gboolean right) |
|
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
1844 | { |
|
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
1845 | g_return_if_fail(col < tree->ncol); |
|
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
1846 | set_column_flag(tree, col, GNT_TREE_COLUMN_RIGHT_ALIGNED, right); |
|
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
1847 | } |
|
c7a3b70f0ae7
Allow showing right-aligned text trees. Right-align the size in the file
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18624
diff
changeset
|
1848 | |
|
18558
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1849 | void gnt_tree_set_column_width_ratio(GntTree *tree, int cols[]) |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1850 | { |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1851 | int i; |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1852 | for (i = 0; i < tree->ncol && cols[i]; i++) { |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1853 | tree->columns[i].width_ratio = cols[i]; |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1854 | } |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1855 | } |
|
1a90a2b56443
Resize tree-columns nicely when the tree is resized. We can tell it to
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18403
diff
changeset
|
1856 | |
|
18786
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1857 | void gnt_tree_set_search_column(GntTree *tree, int col) |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1858 | { |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1859 | g_return_if_fail(col < tree->ncol); |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1860 | g_return_if_fail(!BINARY_DATA(tree, col)); |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1861 | tree->priv->search_column = col; |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1862 | } |
|
87d4f1e609cb
Allow setting the search column in a tree to use for typeahead searching.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18783
diff
changeset
|
1863 | |
|
18787
a96af97dc501
New feature: successful compilation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18786
diff
changeset
|
1864 | gboolean gnt_tree_is_searching(GntTree *tree) |
|
a96af97dc501
New feature: successful compilation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18786
diff
changeset
|
1865 | { |
|
a96af97dc501
New feature: successful compilation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18786
diff
changeset
|
1866 | return (tree->priv->search != NULL); |
|
a96af97dc501
New feature: successful compilation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18786
diff
changeset
|
1867 | } |
|
a96af97dc501
New feature: successful compilation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18786
diff
changeset
|
1868 | |
|
18827
822e004cae0c
Allow using custom search functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18826
diff
changeset
|
1869 | void gnt_tree_set_search_function(GntTree *tree, |
|
18829
35138e0fbf77
Patch from Javeed Shaikh to make the search function non-braindamaged.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18827
diff
changeset
|
1870 | gboolean (*func)(GntTree *tree, gpointer key, const char *search, const char *current)) |
|
18827
822e004cae0c
Allow using custom search functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18826
diff
changeset
|
1871 | { |
|
822e004cae0c
Allow using custom search functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18826
diff
changeset
|
1872 | tree->priv->search_func = func; |
|
822e004cae0c
Allow using custom search functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18826
diff
changeset
|
1873 | } |
|
822e004cae0c
Allow using custom search functions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18826
diff
changeset
|
1874 | |
|
22284
1eaf3526de19
Function to get the parent key.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21804
diff
changeset
|
1875 | gpointer gnt_tree_get_parent_key(GntTree *tree, gpointer key) |
|
1eaf3526de19
Function to get the parent key.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21804
diff
changeset
|
1876 | { |
|
1eaf3526de19
Function to get the parent key.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21804
diff
changeset
|
1877 | GntTreeRow *row = g_hash_table_lookup(tree->hash, key); |
|
22301
75467c2623a0
This is supposed to return the key, not the row itself.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22284
diff
changeset
|
1878 | return (row && row->parent) ? row->parent->key : NULL; |
|
22284
1eaf3526de19
Function to get the parent key.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21804
diff
changeset
|
1879 | } |
|
1eaf3526de19
Function to get the parent key.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21804
diff
changeset
|
1880 |