Sat, 24 May 2008 22:49:44 +0000
Treat digits and alphabets as the same class of characters when looking
for the beginning of a words. Also treat the all punctuation characters
as being of the same class.
|
17586
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
diff
changeset
|
1 | /** |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
diff
changeset
|
2 | * GNT - The GLib Ncurses Toolkit |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
diff
changeset
|
3 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
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:
16954
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:
16954
diff
changeset
|
6 | * source distribution. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
diff
changeset
|
7 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
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:
16954
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:
16954
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:
16954
diff
changeset
|
11 | * (at your option) any later version. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
diff
changeset
|
12 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
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:
16954
diff
changeset
|
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
diff
changeset
|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
diff
changeset
|
16 | * GNU General Public License for more details. |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
diff
changeset
|
17 | * |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
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:
16954
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:
19235
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:
16954
diff
changeset
|
21 | */ |
|
5beb8d987e84
applied changes from 016401bd409e6229fae0ab1e80d9fef9365511b3
Eric Polino <aluink@pidgin.im>
parents:
16954
diff
changeset
|
22 | |
|
13950
bd8d39b3a9e2
[gaim-migrate @ 16369]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13944
diff
changeset
|
23 | #include <ctype.h> |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
24 | #include <string.h> |
|
13950
bd8d39b3a9e2
[gaim-migrate @ 16369]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13944
diff
changeset
|
25 | |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
26 | #include "gntbox.h" |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
27 | #include "gntentry.h" |
|
18422
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
28 | #include "gntmarshal.h" |
|
14898
107b971b39f2
[gaim-migrate @ 17605]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14890
diff
changeset
|
29 | #include "gntstyle.h" |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
30 | #include "gnttree.h" |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14371
diff
changeset
|
31 | #include "gntutils.h" |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
32 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
33 | enum |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
34 | { |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
35 | SIG_TEXT_CHANGED, |
|
18422
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
36 | SIG_COMPLETION, |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
37 | SIGS, |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
38 | }; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
39 | |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
40 | typedef enum |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
41 | { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
42 | ENTRY_JAIL = -1, /* Suspend the kill ring. */ |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
43 | ENTRY_DEL_BWD_WORD = 1, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
44 | ENTRY_DEL_BWD_CHAR, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
45 | ENTRY_DEL_FWD_WORD, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
46 | ENTRY_DEL_FWD_CHAR, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
47 | ENTRY_DEL_EOL, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
48 | ENTRY_DEL_BOL, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
49 | } GntEntryAction; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
50 | |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
51 | struct _GntEntryKillRing |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
52 | { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
53 | GString *buffer; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
54 | GntEntryAction last; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
55 | }; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
56 | |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
57 | static guint signals[SIGS] = { 0 }; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
58 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
59 | static GntWidgetClass *parent_class = NULL; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
60 | |
|
16020
dd8e83225ad5
Update the tab completion a little bit. The binding for suggest-show will perform suggest-next if the suggest-dropdown is already showing. If there's just one suggestion, then complete with that suggestion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
61 | static gboolean gnt_entry_key_pressed(GntWidget *widget, const char *text); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
62 | static void gnt_entry_set_text_internal(GntEntry *entry, const char *text); |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
63 | |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
64 | static gboolean |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
65 | update_kill_ring(GntEntry *entry, GntEntryAction action, const char *text, int len) |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
66 | { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
67 | if (action < 0) { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
68 | entry->killring->last = action; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
69 | return FALSE; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
70 | } |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
71 | |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
72 | if (len == 0) |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
73 | len = strlen(text); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
74 | else if (len < 0) { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
75 | text += len; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
76 | len = -len; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
77 | } |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
78 | |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
79 | if (action != entry->killring->last) { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
80 | struct { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
81 | GntEntryAction one; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
82 | GntEntryAction two; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
83 | } merges[] = { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
84 | {ENTRY_DEL_BWD_WORD, ENTRY_DEL_FWD_WORD}, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
85 | {ENTRY_DEL_BWD_CHAR, ENTRY_DEL_FWD_CHAR}, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
86 | {ENTRY_DEL_BOL, ENTRY_DEL_EOL}, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
87 | {ENTRY_JAIL, ENTRY_JAIL}, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
88 | }; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
89 | int i; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
90 | |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
91 | for (i = 0; merges[i].one != ENTRY_JAIL; i++) { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
92 | if (merges[i].one == entry->killring->last && |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
93 | merges[i].two == action) { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
94 | g_string_append_len(entry->killring->buffer, text, len); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
95 | break; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
96 | } else if (merges[i].one == action && |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
97 | merges[i].two == entry->killring->last) { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
98 | g_string_prepend_len(entry->killring->buffer, text, len); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
99 | break; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
100 | } |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
101 | } |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
102 | if (merges[i].one == ENTRY_JAIL) { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
103 | g_string_assign(entry->killring->buffer, text); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
104 | g_string_truncate(entry->killring->buffer, len); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
105 | } |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
106 | entry->killring->last = action; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
107 | } else { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
108 | if (action == ENTRY_DEL_BWD_CHAR || action == ENTRY_DEL_BWD_WORD) |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
109 | g_string_prepend_len(entry->killring->buffer, text, len); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
110 | else |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
111 | g_string_append_len(entry->killring->buffer, text, len); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
112 | } |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
113 | return TRUE; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
114 | } |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
115 | |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
116 | static void |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
117 | destroy_suggest(GntEntry *entry) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
118 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
119 | if (entry->ddown) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
120 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
121 | gnt_widget_destroy(entry->ddown->parent); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
122 | entry->ddown = NULL; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
123 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
124 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
125 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
126 | static char * |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
127 | get_beginning_of_word(GntEntry *entry) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
128 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
129 | char *s = entry->cursor; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
130 | while (s > entry->start) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
131 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
132 | char *t = g_utf8_find_prev_char(entry->start, s); |
|
14640
9f0f2bbbc4e2
[gaim-migrate @ 17302]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14539
diff
changeset
|
133 | if (isspace(*t)) |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
134 | break; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
135 | s = t; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
136 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
137 | return s; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
138 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
139 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
140 | static gboolean |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
141 | complete_suggest(GntEntry *entry, const char *text) |
|
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
142 | { |
|
18422
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
143 | int offstart = 0, offend = 0; |
|
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
144 | |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
145 | if (entry->word) { |
|
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
146 | char *s = get_beginning_of_word(entry); |
|
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
147 | const char *iter = text; |
|
18422
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
148 | offstart = g_utf8_pointer_to_offset(entry->start, s); |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
149 | while (*iter && toupper(*s) == toupper(*iter)) { |
|
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
150 | *s++ = *iter++; |
|
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
151 | } |
|
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
152 | if (*iter) { |
|
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
153 | gnt_entry_key_pressed(GNT_WIDGET(entry), iter); |
|
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
154 | } |
|
18422
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
155 | offend = g_utf8_pointer_to_offset(entry->start, entry->cursor); |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
156 | } else { |
|
18422
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
157 | offstart = 0; |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
158 | gnt_entry_set_text_internal(entry, text); |
|
18422
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
159 | offend = g_utf8_strlen(text, -1); |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
160 | } |
|
18422
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
161 | |
|
21812
7aaff7db5310
Emit the 'completion' signal when tab is pressed from a suggest word.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
162 | g_signal_emit(G_OBJECT(entry), signals[SIG_COMPLETION], 0, |
|
7aaff7db5310
Emit the 'completion' signal when tab is pressed from a suggest word.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
163 | entry->start + offstart, entry->start + offend); |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
164 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
21812
7aaff7db5310
Emit the 'completion' signal when tab is pressed from a suggest word.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21725
diff
changeset
|
165 | return TRUE; |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
166 | } |
|
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
167 | |
|
20351
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
168 | static int |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
169 | max_common_prefix(const char *s, const char *t) |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
170 | { |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
171 | const char *f = s; |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
172 | while (*f && *t && *f == *t++) |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
173 | f++; |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
174 | return f - s; |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
175 | } |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
176 | |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
177 | static gboolean |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
178 | show_suggest_dropdown(GntEntry *entry) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
179 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
180 | char *suggest = NULL; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
181 | int len; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
182 | int offset = 0, x, y; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
183 | int count = 0; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
184 | GList *iter; |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
185 | const char *text = NULL; |
|
16954
b6488f782355
Fix tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16945
diff
changeset
|
186 | const char *sgst = NULL; |
|
20351
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
187 | int max = -1; |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
188 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
189 | if (entry->word) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
190 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
191 | char *s = get_beginning_of_word(entry); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
192 | suggest = g_strndup(s, entry->cursor - s); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
193 | if (entry->scroll < s) |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14371
diff
changeset
|
194 | offset = gnt_util_onscreen_width(entry->scroll, s); |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
195 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
196 | else |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
197 | suggest = g_strdup(entry->start); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
198 | len = strlen(suggest); /* Don't need to use the utf8-function here */ |
|
20351
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
199 | |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
200 | if (entry->ddown == NULL) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
201 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
202 | GntWidget *box = gnt_vbox_new(FALSE); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
203 | entry->ddown = gnt_tree_new(); |
|
14167
ca6027c33d2c
[gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14156
diff
changeset
|
204 | gnt_tree_set_compare_func(GNT_TREE(entry->ddown), (GCompareFunc)g_utf8_collate); |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
205 | gnt_box_add_widget(GNT_BOX(box), entry->ddown); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
206 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
207 | GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_TRANSIENT); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
208 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
209 | gnt_widget_get_position(GNT_WIDGET(entry), &x, &y); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
210 | x += offset; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
211 | y++; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
212 | if (y + 10 >= getmaxy(stdscr)) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
213 | y -= 11; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
214 | gnt_widget_set_position(box, x, y); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
215 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
216 | else |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
217 | gnt_tree_remove_all(GNT_TREE(entry->ddown)); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
218 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
219 | for (count = 0, iter = entry->suggests; iter; iter = iter->next) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
220 | { |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
221 | text = iter->data; |
|
14156
aacb0581eaf6
[gaim-migrate @ 16723]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14153
diff
changeset
|
222 | if (g_ascii_strncasecmp(suggest, text, len) == 0 && strlen(text) >= len) |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
223 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
224 | gnt_tree_add_row_after(GNT_TREE(entry->ddown), (gpointer)text, |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
225 | gnt_tree_create_row(GNT_TREE(entry->ddown), text), |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
226 | NULL, NULL); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
227 | count++; |
|
20351
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
228 | if (max == -1) |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
229 | max = strlen(text) - len; |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
230 | else if (max) |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
231 | max = MIN(max, max_common_prefix(sgst + len, text + len)); |
|
16954
b6488f782355
Fix tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16945
diff
changeset
|
232 | sgst = text; |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
233 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
234 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
235 | g_free(suggest); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
236 | |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
237 | if (count == 0) { |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
238 | destroy_suggest(entry); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
239 | return FALSE; |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
240 | } else if (count == 1) { |
|
22841
1deb0300b15e
Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22571
diff
changeset
|
241 | char *store = g_strndup(entry->start, entry->end - entry->start); |
|
1deb0300b15e
Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22571
diff
changeset
|
242 | gboolean ret; |
|
1deb0300b15e
Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22571
diff
changeset
|
243 | |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
244 | destroy_suggest(entry); |
|
22841
1deb0300b15e
Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22571
diff
changeset
|
245 | complete_suggest(entry, sgst); |
|
1deb0300b15e
Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22571
diff
changeset
|
246 | |
|
1deb0300b15e
Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22571
diff
changeset
|
247 | ret = (strncmp(store, entry->start, entry->end - entry->start) != 0); |
|
1deb0300b15e
Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22571
diff
changeset
|
248 | g_free(store); |
|
1deb0300b15e
Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22571
diff
changeset
|
249 | return ret; |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
250 | } else { |
|
20351
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
251 | if (max > 0) { |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
252 | GntWidget *ddown = entry->ddown; |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
253 | char *match = g_strndup(sgst + len, max); |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
254 | entry->ddown = NULL; |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
255 | gnt_entry_key_pressed(GNT_WIDGET(entry), match); |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
256 | g_free(match); |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
257 | if (entry->ddown) |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
258 | gnt_widget_destroy(ddown); |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
259 | else |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
260 | entry->ddown = ddown; |
|
83f3c26afa02
Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
19859
diff
changeset
|
261 | } |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
262 | gnt_widget_draw(entry->ddown->parent); |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
263 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
264 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
265 | return TRUE; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
266 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
267 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
268 | static void |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
269 | gnt_entry_draw(GntWidget *widget) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
270 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
271 | GntEntry *entry = GNT_ENTRY(widget); |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
272 | int stop; |
|
14103
bcac61d40461
[gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14093
diff
changeset
|
273 | gboolean focus; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
274 | |
|
14103
bcac61d40461
[gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14093
diff
changeset
|
275 | if ((focus = 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:
20351
diff
changeset
|
276 | wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_TEXT_NORMAL)); |
|
13958
bd1c3bb3f33d
[gaim-migrate @ 16381]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13950
diff
changeset
|
277 | else |
|
21240
b78eaddaae02
Add gnt_color_pair, which will replace color codes with 'appropriate' text
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20351
diff
changeset
|
278 | wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_HIGHLIGHT_D)); |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
279 | |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
280 | if (entry->masked) |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
281 | { |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
282 | mvwhline(widget->window, 0, 0, gnt_ascii_only() ? '*' : ACS_BULLET, |
|
14090
a8552e906a76
[gaim-migrate @ 16630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14041
diff
changeset
|
283 | g_utf8_pointer_to_offset(entry->scroll, entry->end)); |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
284 | } |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
285 | else |
|
14369
e9a9ac6bd8de
[gaim-migrate @ 16997]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14318
diff
changeset
|
286 | mvwprintw(widget->window, 0, 0, "%s", entry->scroll); |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
287 | |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14371
diff
changeset
|
288 | stop = gnt_util_onscreen_width(entry->scroll, entry->end); |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
289 | if (stop < widget->priv.width) |
|
18401
416ff3a69f61
Draw the password entries correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
17586
diff
changeset
|
290 | mvwhline(widget->window, 0, stop, ENTRY_CHAR, widget->priv.width - stop); |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
291 | |
|
14103
bcac61d40461
[gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14093
diff
changeset
|
292 | if (focus) |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14371
diff
changeset
|
293 | mvwchgat(widget->window, 0, gnt_util_onscreen_width(entry->scroll, entry->cursor), |
|
14687
46437fa5eebe
[gaim-migrate @ 17357]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14640
diff
changeset
|
294 | 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL, NULL); |
|
14090
a8552e906a76
[gaim-migrate @ 16630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14041
diff
changeset
|
295 | |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14413
diff
changeset
|
296 | GNTDEBUG; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
297 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
298 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
299 | static void |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
300 | gnt_entry_size_request(GntWidget *widget) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
301 | { |
|
13944
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
302 | if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED)) |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
303 | { |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
304 | widget->priv.height = 1; |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
305 | widget->priv.width = 20; |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
306 | } |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
307 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
308 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
309 | static void |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
310 | gnt_entry_map(GntWidget *widget) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
311 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
312 | if (widget->priv.width == 0 || widget->priv.height == 0) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
313 | gnt_widget_size_request(widget); |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14413
diff
changeset
|
314 | GNTDEBUG; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
315 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
316 | |
|
13944
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
317 | static void |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
318 | entry_redraw(GntWidget *widget) |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
319 | { |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
320 | gnt_entry_draw(widget); |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
321 | gnt_widget_queue_update(widget); |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
322 | } |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
323 | |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
324 | static void |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
325 | entry_text_changed(GntEntry *entry) |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
326 | { |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
327 | g_signal_emit(entry, signals[SIG_TEXT_CHANGED], 0); |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
328 | } |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
329 | |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
330 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
331 | move_back(GntBindable *bind, GList *null) |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
332 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
333 | GntEntry *entry = GNT_ENTRY(bind); |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
334 | if (entry->cursor <= entry->start) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
335 | return FALSE; |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
336 | entry->cursor = g_utf8_find_prev_char(entry->start, entry->cursor); |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
337 | if (entry->cursor < entry->scroll) |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
338 | entry->scroll = entry->cursor; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
339 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
340 | entry_redraw(GNT_WIDGET(entry)); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
341 | return TRUE; |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
342 | } |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
343 | |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
344 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
345 | move_forward(GntBindable *bind, GList *list) |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
346 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
347 | GntEntry *entry = GNT_ENTRY(bind); |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
348 | if (entry->cursor >= entry->end) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
349 | return FALSE; |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
350 | entry->cursor = g_utf8_find_next_char(entry->cursor, NULL); |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14371
diff
changeset
|
351 | while (gnt_util_onscreen_width(entry->scroll, entry->cursor) >= GNT_WIDGET(entry)->priv.width) |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
352 | entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
353 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
354 | entry_redraw(GNT_WIDGET(entry)); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
355 | return TRUE; |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
356 | } |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
357 | |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
358 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
359 | backspace(GntBindable *bind, GList *null) |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
360 | { |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
361 | int len; |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
362 | GntEntry *entry = GNT_ENTRY(bind); |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
363 | |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
364 | if (entry->cursor <= entry->start) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
365 | return TRUE; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
366 | |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
367 | len = entry->cursor - g_utf8_find_prev_char(entry->start, entry->cursor); |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
368 | update_kill_ring(entry, ENTRY_DEL_BWD_CHAR, entry->cursor, -len); |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
369 | entry->cursor -= len; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
370 | |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
371 | memmove(entry->cursor, entry->cursor + len, entry->end - entry->cursor); |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
372 | entry->end -= len; |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
373 | |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
374 | if (entry->scroll > entry->start) |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
375 | entry->scroll = g_utf8_find_prev_char(entry->start, entry->scroll); |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
376 | |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
377 | entry_redraw(GNT_WIDGET(entry)); |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
378 | if (entry->ddown) |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
379 | show_suggest_dropdown(entry); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
380 | entry_text_changed(entry); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
381 | return TRUE; |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
382 | } |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
383 | |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
384 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
385 | delkey(GntBindable *bind, GList *null) |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
386 | { |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
387 | int len; |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
388 | GntEntry *entry = GNT_ENTRY(bind); |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
389 | |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
390 | if (entry->cursor >= entry->end) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
391 | return FALSE; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
392 | |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
393 | len = g_utf8_find_next_char(entry->cursor, NULL) - entry->cursor; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
394 | update_kill_ring(entry, ENTRY_DEL_FWD_CHAR, entry->cursor, len); |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
395 | memmove(entry->cursor, entry->cursor + len, entry->end - entry->cursor - len + 1); |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
396 | entry->end -= len; |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
397 | entry_redraw(GNT_WIDGET(entry)); |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
398 | |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
399 | if (entry->ddown) |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
400 | show_suggest_dropdown(entry); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
401 | entry_text_changed(entry); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
402 | return TRUE; |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
403 | } |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
404 | |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
405 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
406 | move_start(GntBindable *bind, GList *null) |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
407 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
408 | GntEntry *entry = GNT_ENTRY(bind); |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
409 | entry->scroll = entry->cursor = entry->start; |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
410 | entry_redraw(GNT_WIDGET(entry)); |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
411 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
412 | return TRUE; |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
413 | } |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
414 | |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
415 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
416 | move_end(GntBindable *bind, GList *null) |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
417 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
418 | GntEntry *entry = GNT_ENTRY(bind); |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
419 | entry->cursor = entry->end; |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
420 | /* This should be better than this */ |
|
14373
609c902d20f5
[gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14371
diff
changeset
|
421 | while (gnt_util_onscreen_width(entry->scroll, entry->cursor) >= GNT_WIDGET(entry)->priv.width) |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
422 | entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
423 | entry_redraw(GNT_WIDGET(entry)); |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
424 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
425 | return TRUE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
426 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
427 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
428 | static gboolean |
|
22571
d3380ab76d21
The names history-next and history-prev were backwards! Make them right, and add c-n/c-p bindings as the default bindings. Thanks to shofixti for reporting the bug. Fixes #4593.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22421
diff
changeset
|
429 | history_next(GntBindable *bind, GList *null) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
430 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
431 | GntEntry *entry = GNT_ENTRY(bind); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
432 | if (entry->histlength && entry->history->prev) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
433 | { |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
434 | entry->history = entry->history->prev; |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
435 | gnt_entry_set_text_internal(entry, entry->history->data); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
436 | destroy_suggest(entry); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
437 | entry_text_changed(entry); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
438 | |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
439 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
440 | return TRUE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
441 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
442 | return FALSE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
443 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
444 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
445 | static gboolean |
|
22571
d3380ab76d21
The names history-next and history-prev were backwards! Make them right, and add c-n/c-p bindings as the default bindings. Thanks to shofixti for reporting the bug. Fixes #4593.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22421
diff
changeset
|
446 | history_prev(GntBindable *bind, GList *null) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
447 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
448 | GntEntry *entry = GNT_ENTRY(bind); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
449 | if (entry->histlength && entry->history->next) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
450 | { |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
451 | if (entry->history->prev == NULL) |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
452 | { |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
453 | /* Save the current contents */ |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
454 | char *text = g_strdup(gnt_entry_get_text(entry)); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
455 | g_free(entry->history->data); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
456 | entry->history->data = text; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
457 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
458 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
459 | entry->history = entry->history->next; |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
460 | gnt_entry_set_text_internal(entry, entry->history->data); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
461 | destroy_suggest(entry); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
462 | entry_text_changed(entry); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
463 | |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
464 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
465 | return TRUE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
466 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
467 | return FALSE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
468 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
469 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
470 | static gboolean |
|
15814
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
471 | clipboard_paste(GntBindable *bind, GList *n) |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
472 | { |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
473 | GntEntry *entry = GNT_ENTRY(bind); |
|
15838
45289a1439b2
Get rid of some minor C99isms
Mark Doliner <markdoliner@pidgin.im>
parents:
15837
diff
changeset
|
474 | gchar *i, *text, *a, *all; |
|
45289a1439b2
Get rid of some minor C99isms
Mark Doliner <markdoliner@pidgin.im>
parents:
15837
diff
changeset
|
475 | text = i = gnt_get_clipboard_string(); |
|
15814
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
476 | while (*i != '\0') { |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
477 | i = g_utf8_next_char(i); |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
478 | if (*i == '\r' || *i == '\n') |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
479 | *i = ' '; |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
480 | } |
|
15838
45289a1439b2
Get rid of some minor C99isms
Mark Doliner <markdoliner@pidgin.im>
parents:
15837
diff
changeset
|
481 | a = g_strndup(entry->start, entry->cursor - entry->start); |
|
45289a1439b2
Get rid of some minor C99isms
Mark Doliner <markdoliner@pidgin.im>
parents:
15837
diff
changeset
|
482 | all = g_strconcat(a, text, entry->cursor, NULL); |
|
15814
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
483 | gnt_entry_set_text_internal(entry, all); |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
484 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
15814
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
485 | g_free(a); |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
486 | g_free(text); |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
487 | g_free(all); |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
488 | return TRUE; |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
489 | } |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
490 | |
|
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
491 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
492 | suggest_show(GntBindable *bind, GList *null) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
493 | { |
|
16020
dd8e83225ad5
Update the tab completion a little bit. The binding for suggest-show will perform suggest-next if the suggest-dropdown is already showing. If there's just one suggestion, then complete with that suggestion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
494 | GntEntry *entry = GNT_ENTRY(bind); |
|
dd8e83225ad5
Update the tab completion a little bit. The binding for suggest-show will perform suggest-next if the suggest-dropdown is already showing. If there's just one suggestion, then complete with that suggestion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
495 | if (entry->ddown) { |
|
16945
ac3a37a76525
Fix some ickyness in the tab-completion. Now, if there's only one suggest word, then the first tab will just complete the suggestion. If there's only one suggest word, and it's already completed, then tab will take focus to the next widget. If there is a dropdown, then you can select a suggest word by pressing tabs to move to it, then either space or enter to accept it.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
16020
diff
changeset
|
496 | gnt_bindable_perform_action_named(GNT_BINDABLE(entry->ddown), "move-down"); |
|
16020
dd8e83225ad5
Update the tab completion a little bit. The binding for suggest-show will perform suggest-next if the suggest-dropdown is already showing. If there's just one suggestion, then complete with that suggestion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
497 | return TRUE; |
|
dd8e83225ad5
Update the tab completion a little bit. The binding for suggest-show will perform suggest-next if the suggest-dropdown is already showing. If there's just one suggestion, then complete with that suggestion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
498 | } |
|
dd8e83225ad5
Update the tab completion a little bit. The binding for suggest-show will perform suggest-next if the suggest-dropdown is already showing. If there's just one suggestion, then complete with that suggestion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15886
diff
changeset
|
499 | return show_suggest_dropdown(entry); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
500 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
501 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
502 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
503 | suggest_next(GntBindable *bind, GList *null) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
504 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
505 | GntEntry *entry = GNT_ENTRY(bind); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
506 | if (entry->ddown) { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
507 | gnt_bindable_perform_action_named(GNT_BINDABLE(entry->ddown), "move-down", NULL); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
508 | return TRUE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
509 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
510 | return FALSE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
511 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
512 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
513 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
514 | suggest_prev(GntBindable *bind, GList *null) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
515 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
516 | GntEntry *entry = GNT_ENTRY(bind); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
517 | if (entry->ddown) { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
518 | gnt_bindable_perform_action_named(GNT_BINDABLE(entry->ddown), "move-up", NULL); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
519 | return TRUE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
520 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
521 | return FALSE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
522 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
523 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
524 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
525 | del_to_home(GntBindable *bind, GList *null) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
526 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
527 | GntEntry *entry = GNT_ENTRY(bind); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
528 | if (entry->cursor <= entry->start) |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
529 | return TRUE; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
530 | update_kill_ring(entry, ENTRY_DEL_BOL, entry->start, entry->cursor - entry->start); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
531 | memmove(entry->start, entry->cursor, entry->end - entry->cursor); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
532 | entry->end -= (entry->cursor - entry->start); |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
533 | entry->cursor = entry->scroll = entry->start; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
534 | memset(entry->end, '\0', entry->buffer - (entry->end - entry->start)); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
535 | entry_redraw(GNT_WIDGET(bind)); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
536 | entry_text_changed(entry); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
537 | return TRUE; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
538 | } |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
539 | |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
540 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
541 | del_to_end(GntBindable *bind, GList *null) |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
542 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
543 | GntEntry *entry = GNT_ENTRY(bind); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
544 | if (entry->end <= entry->cursor) |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
545 | return TRUE; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
546 | update_kill_ring(entry, ENTRY_DEL_EOL, entry->cursor, entry->end - entry->cursor); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
547 | entry->end = entry->cursor; |
|
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
548 | memset(entry->end, '\0', entry->buffer - (entry->end - entry->start)); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
549 | entry_redraw(GNT_WIDGET(bind)); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
550 | entry_text_changed(entry); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
551 | return TRUE; |
|
14275
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
552 | } |
|
ef418684623d
[gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14167
diff
changeset
|
553 | |
|
23317
dba466df7ed0
Treat digits and alphabets as the same class of characters when looking
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23065
diff
changeset
|
554 | #define SAME(a,b) ((g_unichar_isalnum(a) && g_unichar_isalnum(b)) || \ |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
555 | (g_unichar_isspace(a) && g_unichar_isspace(b)) || \ |
|
23317
dba466df7ed0
Treat digits and alphabets as the same class of characters when looking
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23065
diff
changeset
|
556 | (g_unichar_iswide(a) && g_unichar_iswide(b)) || \ |
|
dba466df7ed0
Treat digits and alphabets as the same class of characters when looking
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
23065
diff
changeset
|
557 | (g_unichar_ispunct(a) && g_unichar_ispunct(b))) |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
558 | |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
559 | static const char * |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
560 | begin_word(const char *text, const char *begin) |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
561 | { |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
562 | gunichar ch = 0; |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
563 | while (text > begin && (!*text || g_unichar_isspace(g_utf8_get_char(text)))) |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
564 | text = g_utf8_find_prev_char(begin, text); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
565 | ch = g_utf8_get_char(text); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
566 | while ((text = g_utf8_find_prev_char(begin, text)) >= begin) { |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
567 | gunichar cur = g_utf8_get_char(text); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
568 | if (!SAME(ch, cur)) |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
569 | break; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
570 | } |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
571 | |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
572 | return (text ? g_utf8_find_next_char(text, NULL) : begin); |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
573 | } |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
574 | |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
575 | static const char * |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
576 | next_begin_word(const char *text, const char *end) |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
577 | { |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
578 | gunichar ch = 0; |
|
21725
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21270
diff
changeset
|
579 | |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21270
diff
changeset
|
580 | while (text && text < end && g_unichar_isspace(g_utf8_get_char(text))) |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21270
diff
changeset
|
581 | text = g_utf8_find_next_char(text, end); |
|
68ec08d05ff4
Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21270
diff
changeset
|
582 | |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
583 | ch = g_utf8_get_char(text); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
584 | while ((text = g_utf8_find_next_char(text, end)) != NULL && text <= end) { |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
585 | gunichar cur = g_utf8_get_char(text); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
586 | if (!SAME(ch, cur)) |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
587 | break; |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
588 | } |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
589 | return (text ? text : end); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
590 | } |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
591 | |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
592 | #undef SAME |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
593 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
594 | move_back_word(GntBindable *bind, GList *null) |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
595 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
596 | GntEntry *entry = GNT_ENTRY(bind); |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
597 | const char *iter = g_utf8_find_prev_char(entry->start, entry->cursor); |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
598 | |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
599 | if (iter < entry->start) |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
600 | return TRUE; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
601 | iter = begin_word(iter, entry->start); |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
602 | entry->cursor = (char*)iter; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
603 | if (entry->cursor < entry->scroll) |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
604 | entry->scroll = entry->cursor; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
605 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
606 | entry_redraw(GNT_WIDGET(bind)); |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
607 | return TRUE; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
608 | } |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
609 | |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
610 | static gboolean |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
611 | del_prev_word(GntBindable *bind, GList *null) |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
612 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
613 | GntWidget *widget = GNT_WIDGET(bind); |
|
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
614 | GntEntry *entry = GNT_ENTRY(bind); |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
615 | char *iter = g_utf8_find_prev_char(entry->start, entry->cursor); |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
616 | int count; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
617 | |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
618 | if (iter < entry->start) |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
619 | return TRUE; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
620 | iter = (char*)begin_word(iter, entry->start); |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
621 | count = entry->cursor - iter; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
622 | update_kill_ring(entry, ENTRY_DEL_BWD_WORD, iter, count); |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
623 | memmove(iter, entry->cursor, entry->end - entry->cursor); |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
624 | entry->end -= count; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
625 | entry->cursor = iter; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
626 | if (entry->cursor <= entry->scroll) { |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
627 | entry->scroll = entry->cursor - widget->priv.width + 2; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
628 | if (entry->scroll < entry->start) |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
629 | entry->scroll = entry->start; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
630 | } |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
631 | memset(entry->end, '\0', entry->buffer - (entry->end - entry->start)); |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
632 | entry_redraw(widget); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
633 | entry_text_changed(entry); |
|
14890
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
634 | |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
635 | return TRUE; |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
636 | } |
|
78c01aad3cfa
[gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14889
diff
changeset
|
637 | |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
638 | static gboolean |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
639 | move_forward_word(GntBindable *bind, GList *list) |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
640 | { |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
641 | GntEntry *entry = GNT_ENTRY(bind); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
642 | GntWidget *widget = GNT_WIDGET(bind); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
643 | entry->cursor = (char *)next_begin_word(entry->cursor, entry->end); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
644 | while (gnt_util_onscreen_width(entry->scroll, entry->cursor) >= widget->priv.width) { |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
645 | entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
646 | } |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
647 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
648 | entry_redraw(widget); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
649 | return TRUE; |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
650 | } |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
651 | |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
652 | static gboolean |
|
15187
841272d50d22
[gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15186
diff
changeset
|
653 | delete_forward_word(GntBindable *bind, GList *list) |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
654 | { |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
655 | GntEntry *entry = GNT_ENTRY(bind); |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
656 | GntWidget *widget = GNT_WIDGET(bind); |
|
15187
841272d50d22
[gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15186
diff
changeset
|
657 | char *iter = (char *)next_begin_word(entry->cursor, entry->end); |
|
841272d50d22
[gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15186
diff
changeset
|
658 | int len = entry->end - iter + 1; |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
659 | if (len <= 0) |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
660 | return TRUE; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
661 | update_kill_ring(entry, ENTRY_DEL_FWD_WORD, entry->cursor, iter - entry->cursor); |
|
15187
841272d50d22
[gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15186
diff
changeset
|
662 | memmove(entry->cursor, iter, len); |
|
841272d50d22
[gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15186
diff
changeset
|
663 | len = iter - entry->cursor; |
|
841272d50d22
[gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15186
diff
changeset
|
664 | entry->end -= len; |
|
841272d50d22
[gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15186
diff
changeset
|
665 | memset(entry->end, '\0', len); |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
666 | entry_redraw(widget); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
667 | entry_text_changed(entry); |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
668 | return TRUE; |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
669 | } |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
670 | |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
671 | static gboolean |
|
21252
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
672 | transpose_chars(GntBindable *bind, GList *null) |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
673 | { |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
674 | GntEntry *entry = GNT_ENTRY(bind); |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
675 | char *current, *prev; |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
676 | char hold[8]; /* that's right */ |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
677 | |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
678 | if (entry->cursor <= entry->start) |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
679 | return FALSE; |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
680 | |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
681 | if (!*entry->cursor) |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
682 | entry->cursor = g_utf8_find_prev_char(entry->start, entry->cursor); |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
683 | |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
684 | current = entry->cursor; |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
685 | prev = g_utf8_find_prev_char(entry->start, entry->cursor); |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
686 | move_forward(bind, null); |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
687 | |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
688 | /* Let's do this dance! */ |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
689 | memcpy(hold, prev, current - prev); |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
690 | memmove(prev, current, entry->cursor - current); |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
691 | memcpy(prev + (entry->cursor - current), hold, current - prev); |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
692 | |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
693 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
21252
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
694 | entry_redraw(GNT_WIDGET(entry)); |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
695 | entry_text_changed(entry); |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
696 | return TRUE; |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
697 | } |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
698 | |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
699 | static gboolean |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
700 | entry_yank(GntBindable *bind, GList *null) |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
701 | { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
702 | GntEntry *entry = GNT_ENTRY(bind); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
703 | gnt_entry_key_pressed(GNT_WIDGET(entry), entry->killring->buffer->str); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
704 | return TRUE; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
705 | } |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
706 | |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
707 | static gboolean |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
708 | gnt_entry_key_pressed(GntWidget *widget, const char *text) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
709 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
710 | GntEntry *entry = GNT_ENTRY(widget); |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
711 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
712 | if (text[0] == 27) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
713 | { |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
714 | if (text[1] == 0) |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
715 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
716 | destroy_suggest(entry); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
717 | return TRUE; |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
718 | } |
|
14005
198d1658b390
[gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
719 | |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
720 | return FALSE; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
721 | } |
|
21270
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
722 | |
|
22421
ccddf3ffaf41
'\n' (ctrl-j) should behave similar to '\r' (ctrl-m). Fixes #4833.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22104
diff
changeset
|
723 | if ((text[0] == '\r' || text[0] == ' ' || text[0] == '\n') && entry->ddown) |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
724 | { |
|
21270
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
725 | char *text = g_strdup(gnt_tree_get_selection_data(GNT_TREE(entry->ddown))); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
726 | destroy_suggest(entry); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
727 | complete_suggest(entry, text); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
728 | g_free(text); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
729 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
730 | entry_text_changed(entry); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
731 | return TRUE; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
732 | } |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
733 | |
|
21270
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
734 | if (!iscntrl(text[0])) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
735 | { |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
736 | const char *str, *next; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
737 | |
|
21270
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
738 | for (str = text; *str; str = next) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
739 | { |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
740 | int len; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
741 | next = g_utf8_find_next_char(str, NULL); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
742 | len = next - str; |
|
14090
a8552e906a76
[gaim-migrate @ 16630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14041
diff
changeset
|
743 | |
|
21270
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
744 | /* Valid input? */ |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
745 | /* XXX: Is it necessary to use _unichar_ variants here? */ |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
746 | if (ispunct(*str) && (entry->flag & GNT_ENTRY_FLAG_NO_PUNCT)) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
747 | continue; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
748 | if (isspace(*str) && (entry->flag & GNT_ENTRY_FLAG_NO_SPACE)) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
749 | continue; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
750 | if (isalpha(*str) && !(entry->flag & GNT_ENTRY_FLAG_ALPHA)) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
751 | continue; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
752 | if (isdigit(*str) && !(entry->flag & GNT_ENTRY_FLAG_INT)) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
753 | continue; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
754 | |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
755 | /* Reached the max? */ |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
756 | if (entry->max && g_utf8_pointer_to_offset(entry->start, entry->end) >= entry->max) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
757 | continue; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
758 | |
|
21270
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
759 | if (entry->end + len - entry->start >= entry->buffer) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
760 | { |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
761 | /* This will cause the buffer to grow */ |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
762 | char *tmp = g_strdup(entry->start); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
763 | gnt_entry_set_text_internal(entry, tmp); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
764 | g_free(tmp); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
765 | } |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
766 | |
|
21270
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
767 | memmove(entry->cursor + len, entry->cursor, entry->end - entry->cursor + 1); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
768 | entry->end += len; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
769 | |
|
21270
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
770 | while (str < next) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
771 | { |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
772 | if (*str == '\r' || *str == '\n') |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
773 | *entry->cursor = ' '; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
774 | else |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
775 | *entry->cursor = *str; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
776 | entry->cursor++; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
777 | str++; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
778 | } |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
779 | |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
780 | while (gnt_util_onscreen_width(entry->scroll, entry->cursor) >= widget->priv.width) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
781 | entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); |
|
14090
a8552e906a76
[gaim-migrate @ 16630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14041
diff
changeset
|
782 | |
|
21270
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
783 | if (entry->ddown) |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
784 | show_suggest_dropdown(entry); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
785 | } |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
786 | update_kill_ring(entry, ENTRY_JAIL, NULL, 0); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
787 | entry_redraw(widget); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
788 | entry_text_changed(entry); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
789 | return TRUE; |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
790 | } |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
791 | |
|
22421
ccddf3ffaf41
'\n' (ctrl-j) should behave similar to '\r' (ctrl-m). Fixes #4833.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22104
diff
changeset
|
792 | if (text[0] == '\r' || text[0] == '\n') { |
|
21270
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
793 | gnt_widget_activate(widget); |
|
9393270c30f0
Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21256
diff
changeset
|
794 | return TRUE; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
795 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
796 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
797 | return FALSE; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
798 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
799 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
800 | static void |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
801 | jail_killring(GntEntryKillRing *kr) |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
802 | { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
803 | g_string_free(kr->buffer, TRUE); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
804 | g_free(kr); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
805 | } |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
806 | |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
807 | static void |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
808 | gnt_entry_destroy(GntWidget *widget) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
809 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
810 | GntEntry *entry = GNT_ENTRY(widget); |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
811 | g_free(entry->start); |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
812 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
813 | if (entry->history) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
814 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
815 | entry->history = g_list_first(entry->history); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
816 | g_list_foreach(entry->history, (GFunc)g_free, NULL); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
817 | g_list_free(entry->history); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
818 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
819 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
820 | if (entry->suggests) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
821 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
822 | g_list_foreach(entry->suggests, (GFunc)g_free, NULL); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
823 | g_list_free(entry->suggests); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
824 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
825 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
826 | if (entry->ddown) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
827 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
828 | gnt_widget_destroy(entry->ddown->parent); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
829 | } |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
830 | |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
831 | jail_killring(entry->killring); |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
832 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
833 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
834 | static void |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
835 | gnt_entry_lost_focus(GntWidget *widget) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
836 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
837 | GntEntry *entry = GNT_ENTRY(widget); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
838 | destroy_suggest(entry); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
839 | entry_redraw(widget); |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
840 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
841 | |
|
23065
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
842 | static gboolean |
|
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
843 | gnt_entry_clicked(GntWidget *widget, GntMouseEvent event, int x, int y) |
|
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
844 | { |
|
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
845 | if (event == GNT_MIDDLE_MOUSE_DOWN) { |
|
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
846 | clipboard_paste(GNT_BINDABLE(widget), NULL); |
|
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
847 | return TRUE; |
|
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
848 | } |
|
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
849 | return FALSE; |
|
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
850 | |
|
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
851 | } |
|
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
852 | |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
853 | static void |
|
13922
7195a6fe2416
[gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13917
diff
changeset
|
854 | gnt_entry_class_init(GntEntryClass *klass) |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
855 | { |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
856 | GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass); |
|
14963
1c783f0acfa9
[gaim-migrate @ 17673]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14962
diff
changeset
|
857 | char s[2] = {erasechar(), 0}; |
|
1c783f0acfa9
[gaim-migrate @ 17673]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14962
diff
changeset
|
858 | |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
859 | parent_class = GNT_WIDGET_CLASS(klass); |
|
23065
a8837cc467b8
Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents:
22841
diff
changeset
|
860 | parent_class->clicked = gnt_entry_clicked; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
861 | parent_class->destroy = gnt_entry_destroy; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
862 | parent_class->draw = gnt_entry_draw; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
863 | parent_class->map = gnt_entry_map; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
864 | parent_class->size_request = gnt_entry_size_request; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
865 | parent_class->key_pressed = gnt_entry_key_pressed; |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
866 | parent_class->lost_focus = gnt_entry_lost_focus; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
867 | |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
868 | signals[SIG_TEXT_CHANGED] = |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
869 | g_signal_new("text_changed", |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
870 | G_TYPE_FROM_CLASS(klass), |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
871 | G_SIGNAL_RUN_LAST, |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
872 | G_STRUCT_OFFSET(GntEntryClass, text_changed), |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
873 | NULL, NULL, |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
874 | g_cclosure_marshal_VOID__VOID, |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
875 | G_TYPE_NONE, 0); |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
876 | |
|
18422
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
877 | signals[SIG_COMPLETION] = |
|
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
878 | g_signal_new("completion", |
|
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
879 | G_TYPE_FROM_CLASS(klass), |
|
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
880 | G_SIGNAL_RUN_LAST, |
|
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
881 | 0, NULL, NULL, |
|
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
882 | gnt_closure_marshal_VOID__POINTER_POINTER, |
|
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
883 | G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER); |
|
c41881f99687
A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18401
diff
changeset
|
884 | |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
885 | gnt_bindable_class_register_action(bindable, "cursor-home", move_start, |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
886 | GNT_KEY_CTRL_A, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
887 | gnt_bindable_register_binding(bindable, "cursor-home", GNT_KEY_HOME, NULL); |
|
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
888 | gnt_bindable_class_register_action(bindable, "cursor-end", move_end, |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
889 | GNT_KEY_CTRL_E, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
890 | gnt_bindable_register_binding(bindable, "cursor-end", GNT_KEY_END, NULL); |
|
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
891 | gnt_bindable_class_register_action(bindable, "delete-prev", backspace, |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
892 | GNT_KEY_BACKSPACE, NULL); |
|
14963
1c783f0acfa9
[gaim-migrate @ 17673]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14962
diff
changeset
|
893 | gnt_bindable_register_binding(bindable, "delete-prev", s, NULL); |
|
15366
df6795069c0b
[gaim-migrate @ 18095]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15292
diff
changeset
|
894 | gnt_bindable_register_binding(bindable, "delete-prev", GNT_KEY_CTRL_H, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
895 | gnt_bindable_class_register_action(bindable, "delete-next", delkey, |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14934
diff
changeset
|
896 | GNT_KEY_DEL, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
897 | gnt_bindable_register_binding(bindable, "delete-next", GNT_KEY_CTRL_D, NULL); |
|
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
898 | gnt_bindable_class_register_action(bindable, "delete-start", del_to_home, |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
899 | GNT_KEY_CTRL_U, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
900 | gnt_bindable_class_register_action(bindable, "delete-end", del_to_end, |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
901 | GNT_KEY_CTRL_K, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
902 | gnt_bindable_class_register_action(bindable, "delete-prev-word", del_prev_word, |
|
15035
aa885309086e
[gaim-migrate @ 17752]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14963
diff
changeset
|
903 | GNT_KEY_CTRL_W, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
904 | gnt_bindable_class_register_action(bindable, "cursor-prev-word", move_back_word, |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
905 | "\033" "b", NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
906 | gnt_bindable_class_register_action(bindable, "cursor-prev", move_back, |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14934
diff
changeset
|
907 | GNT_KEY_LEFT, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
908 | gnt_bindable_register_binding(bindable, "cursor-prev", GNT_KEY_CTRL_B, NULL); |
|
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
909 | gnt_bindable_class_register_action(bindable, "cursor-next", move_forward, |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14934
diff
changeset
|
910 | GNT_KEY_RIGHT, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
911 | gnt_bindable_register_binding(bindable, "cursor-next", GNT_KEY_CTRL_F, NULL); |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
912 | gnt_bindable_class_register_action(bindable, "cursor-next-word", move_forward_word, |
|
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
913 | "\033" "f", NULL); |
|
15187
841272d50d22
[gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15186
diff
changeset
|
914 | gnt_bindable_class_register_action(bindable, "delete-next-word", delete_forward_word, |
|
15186
62aead088a8b
[gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15038
diff
changeset
|
915 | "\033" "d", NULL); |
|
21252
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
916 | gnt_bindable_class_register_action(bindable, "transpose-chars", transpose_chars, |
|
89901b90950c
transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21240
diff
changeset
|
917 | GNT_KEY_CTRL_T, NULL); |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
918 | gnt_bindable_class_register_action(bindable, "yank", entry_yank, |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
919 | GNT_KEY_CTRL_Y, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
920 | gnt_bindable_class_register_action(bindable, "suggest-show", suggest_show, |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
921 | "\t", NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
922 | gnt_bindable_class_register_action(bindable, "suggest-next", suggest_next, |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14934
diff
changeset
|
923 | GNT_KEY_DOWN, NULL); |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
924 | gnt_bindable_class_register_action(bindable, "suggest-prev", suggest_prev, |
|
14938
ee27e45919ef
[gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14934
diff
changeset
|
925 | GNT_KEY_UP, NULL); |
|
22571
d3380ab76d21
The names history-next and history-prev were backwards! Make them right, and add c-n/c-p bindings as the default bindings. Thanks to shofixti for reporting the bug. Fixes #4593.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22421
diff
changeset
|
926 | gnt_bindable_class_register_action(bindable, "history-next", history_next, |
|
15038
e57ca0ff0489
[gaim-migrate @ 17755]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15035
diff
changeset
|
927 | GNT_KEY_CTRL_DOWN, NULL); |
|
22571
d3380ab76d21
The names history-next and history-prev were backwards! Make them right, and add c-n/c-p bindings as the default bindings. Thanks to shofixti for reporting the bug. Fixes #4593.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22421
diff
changeset
|
928 | gnt_bindable_class_register_action(bindable, "history-prev", history_prev, |
|
15038
e57ca0ff0489
[gaim-migrate @ 17755]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15035
diff
changeset
|
929 | GNT_KEY_CTRL_UP, NULL); |
|
22571
d3380ab76d21
The names history-next and history-prev were backwards! Make them right, and add c-n/c-p bindings as the default bindings. Thanks to shofixti for reporting the bug. Fixes #4593.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22421
diff
changeset
|
930 | gnt_bindable_register_binding(bindable, "history-prev", GNT_KEY_CTRL_P, NULL); |
|
d3380ab76d21
The names history-next and history-prev were backwards! Make them right, and add c-n/c-p bindings as the default bindings. Thanks to shofixti for reporting the bug. Fixes #4593.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22421
diff
changeset
|
931 | gnt_bindable_register_binding(bindable, "history-next", GNT_KEY_CTRL_N, NULL); |
|
15837
7718f3b6f643
Display selected double-width cell chars properly and select the correct number of bytes when these characters are on a selection line.
Richard Nelson <wabz@pidgin.im>
parents:
15814
diff
changeset
|
932 | gnt_bindable_class_register_action(bindable, "clipboard-paste", clipboard_paste, |
|
15814
2db42c6a13fa
Add a gntclipboard. You can select text in a textview with the mouse, and paste it in an entry with ctrl-v (or rebind GntEntry's clipboard-paste).
Richard Nelson <wabz@pidgin.im>
parents:
15366
diff
changeset
|
933 | GNT_KEY_CTRL_V, NULL); |
|
14855
84c869823944
[gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14807
diff
changeset
|
934 | |
|
14962
abfaa2e03ac7
[gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14938
diff
changeset
|
935 | gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), GNT_BINDABLE_CLASS(klass)); |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14413
diff
changeset
|
936 | GNTDEBUG; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
937 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
938 | |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
939 | static GntEntryKillRing * |
|
22104
56970903b8e9
Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents:
21812
diff
changeset
|
940 | new_killring(void) |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
941 | { |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
942 | GntEntryKillRing *kr = g_new0(GntEntryKillRing, 1); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
943 | kr->buffer = g_string_new(NULL); |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
944 | return kr; |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
945 | } |
|
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
946 | |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
947 | static void |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
948 | gnt_entry_init(GTypeInstance *instance, gpointer class) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
949 | { |
|
14005
198d1658b390
[gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
950 | GntWidget *widget = GNT_WIDGET(instance); |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
951 | GntEntry *entry = GNT_ENTRY(instance); |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
952 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
953 | entry->flag = GNT_ENTRY_FLAG_ALL; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
954 | entry->max = 0; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
955 | |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
956 | entry->histlength = 0; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
957 | entry->history = NULL; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
958 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
959 | entry->word = TRUE; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
960 | entry->always = FALSE; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
961 | entry->suggests = NULL; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
962 | entry->killring = new_killring(); |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
963 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
964 | GNT_WIDGET_SET_FLAGS(GNT_WIDGET(entry), |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
965 | GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW | GNT_WIDGET_CAN_TAKE_FOCUS); |
|
13992
a6bbcc09c4eb
[gaim-migrate @ 16457]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13958
diff
changeset
|
966 | GNT_WIDGET_SET_FLAGS(GNT_WIDGET(entry), GNT_WIDGET_GROW_X); |
|
14005
198d1658b390
[gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
967 | |
|
198d1658b390
[gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
968 | widget->priv.minw = 3; |
|
198d1658b390
[gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13992
diff
changeset
|
969 | widget->priv.minh = 1; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
970 | |
|
14494
3575eac3a518
[gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14413
diff
changeset
|
971 | GNTDEBUG; |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
972 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
973 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
974 | /****************************************************************************** |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
975 | * GntEntry API |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
976 | *****************************************************************************/ |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
977 | GType |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
978 | gnt_entry_get_gtype(void) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
979 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
980 | static GType type = 0; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
981 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
982 | if(type == 0) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
983 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
984 | static const GTypeInfo info = { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
985 | sizeof(GntEntryClass), |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
986 | NULL, /* base_init */ |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
987 | NULL, /* base_finalize */ |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
988 | (GClassInitFunc)gnt_entry_class_init, |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
989 | NULL, /* class_finalize */ |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
990 | NULL, /* class_data */ |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
991 | sizeof(GntEntry), |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
992 | 0, /* n_preallocs */ |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
993 | gnt_entry_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:
15852
diff
changeset
|
994 | NULL /* value_table */ |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
995 | }; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
996 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
997 | type = g_type_register_static(GNT_TYPE_WIDGET, |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
998 | "GntEntry", |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
999 | &info, 0); |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1000 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1001 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1002 | return type; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1003 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1004 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1005 | GntWidget *gnt_entry_new(const char *text) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1006 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1007 | GntWidget *widget = g_object_new(GNT_TYPE_ENTRY, NULL); |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1008 | GntEntry *entry = GNT_ENTRY(widget); |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1009 | |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1010 | gnt_entry_set_text_internal(entry, text); |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1011 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1012 | return widget; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1013 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1014 | |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1015 | static void |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1016 | gnt_entry_set_text_internal(GntEntry *entry, const char *text) |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1017 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1018 | int len; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1019 | int scroll, cursor; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1020 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1021 | g_free(entry->start); |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1022 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1023 | if (text && text[0]) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1024 | { |
|
14093
98bd96324489
[gaim-migrate @ 16633]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14090
diff
changeset
|
1025 | len = strlen(text); |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1026 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1027 | else |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1028 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1029 | len = 0; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1030 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1031 | |
|
14093
98bd96324489
[gaim-migrate @ 16633]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14090
diff
changeset
|
1032 | entry->buffer = len + 128; |
|
98bd96324489
[gaim-migrate @ 16633]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14090
diff
changeset
|
1033 | |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1034 | scroll = entry->scroll - entry->start; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1035 | cursor = entry->end - entry->cursor; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1036 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1037 | entry->start = g_new0(char, entry->buffer); |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1038 | if (text) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1039 | snprintf(entry->start, len + 1, "%s", text); |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1040 | entry->end = entry->start + len; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1041 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1042 | entry->scroll = entry->start + scroll; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1043 | entry->cursor = entry->end - cursor; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1044 | |
|
13944
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1045 | if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(entry), GNT_WIDGET_MAPPED)) |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1046 | entry_redraw(GNT_WIDGET(entry)); |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1047 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1048 | |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1049 | void gnt_entry_set_text(GntEntry *entry, const char *text) |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1050 | { |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1051 | gboolean changed = TRUE; |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1052 | if (text == NULL && entry->start == NULL) |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1053 | changed = FALSE; |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1054 | if (text && entry->start && g_utf8_collate(text, entry->start) == 0) |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1055 | changed = FALSE; |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1056 | gnt_entry_set_text_internal(entry, text); |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1057 | if (changed) |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1058 | entry_text_changed(entry); |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1059 | } |
|
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1060 | |
|
13917
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1061 | void gnt_entry_set_max(GntEntry *entry, int max) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1062 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1063 | entry->max = max; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1064 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1065 | |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1066 | void gnt_entry_set_flag(GntEntry *entry, GntEntryFlag flag) |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1067 | { |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1068 | entry->flag = flag; |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1069 | /* XXX: Check the existing string to make sure the flags are respected? */ |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1070 | } |
|
7c435cf1ee60
[gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
1071 | |
|
13944
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1072 | const char *gnt_entry_get_text(GntEntry *entry) |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1073 | { |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1074 | return entry->start; |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1075 | } |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1076 | |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1077 | void gnt_entry_clear(GntEntry *entry) |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1078 | { |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1079 | gnt_entry_set_text_internal(entry, NULL); |
|
13944
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1080 | entry->scroll = entry->cursor = entry->end = entry->start; |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1081 | entry_redraw(GNT_WIDGET(entry)); |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1082 | destroy_suggest(entry); |
|
15292
e5ea308a70b8
[gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
15188
diff
changeset
|
1083 | entry_text_changed(entry); |
|
13944
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1084 | } |
|
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1085 | |
|
14041
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1086 | void gnt_entry_set_masked(GntEntry *entry, gboolean set) |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1087 | { |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1088 | entry->masked = set; |
|
6afba85cfc30
[gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14005
diff
changeset
|
1089 | } |
|
13944
2269d17043b1
[gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13940
diff
changeset
|
1090 | |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1091 | void gnt_entry_add_to_history(GntEntry *entry, const char *text) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1092 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1093 | g_return_if_fail(entry->history != NULL); /* Need to set_history_length first */ |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1094 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1095 | if (g_list_length(entry->history) >= entry->histlength) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1096 | return; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1097 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1098 | entry->history = g_list_first(entry->history); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1099 | g_free(entry->history->data); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1100 | entry->history->data = g_strdup(text); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1101 | entry->history = g_list_prepend(entry->history, NULL); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1102 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1103 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1104 | void gnt_entry_set_history_length(GntEntry *entry, int num) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1105 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1106 | if (num == 0) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1107 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1108 | entry->histlength = num; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1109 | if (entry->history) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1110 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1111 | entry->history = g_list_first(entry->history); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1112 | g_list_foreach(entry->history, (GFunc)g_free, NULL); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1113 | g_list_free(entry->history); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1114 | entry->history = NULL; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1115 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1116 | return; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1117 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1118 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1119 | if (entry->histlength == 0) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1120 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1121 | entry->histlength = num; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1122 | entry->history = g_list_append(NULL, NULL); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1123 | return; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1124 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1125 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1126 | if (num > 0 && num < entry->histlength) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1127 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1128 | GList *first, *iter; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1129 | int index = 0; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1130 | for (first = entry->history, index = 0; first->prev; first = first->prev, index++); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1131 | while ((iter = g_list_nth(first, num)) != NULL) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1132 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1133 | g_free(iter->data); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1134 | first = g_list_delete_link(first, iter); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1135 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1136 | entry->histlength = num; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1137 | if (index >= num) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1138 | entry->history = g_list_last(first); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1139 | return; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1140 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1141 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1142 | entry->histlength = num; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1143 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1144 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1145 | void gnt_entry_set_word_suggest(GntEntry *entry, gboolean word) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1146 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1147 | entry->word = word; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1148 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1149 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1150 | void gnt_entry_set_always_suggest(GntEntry *entry, gboolean always) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1151 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1152 | entry->always = always; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1153 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1154 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1155 | void gnt_entry_add_suggest(GntEntry *entry, const char *text) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1156 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1157 | GList *find; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1158 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1159 | if (!text || !*text) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1160 | return; |
|
21256
b8585094b117
Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
21252
diff
changeset
|
1161 | |
|
14153
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1162 | find = g_list_find_custom(entry->suggests, text, (GCompareFunc)g_utf8_collate); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1163 | if (find) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1164 | return; |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1165 | entry->suggests = g_list_append(entry->suggests, g_strdup(text)); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1166 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1167 | |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1168 | void gnt_entry_remove_suggest(GntEntry *entry, const char *text) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1169 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1170 | GList *find = g_list_find_custom(entry->suggests, text, (GCompareFunc)g_utf8_collate); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1171 | if (find) |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1172 | { |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1173 | g_free(find->data); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1174 | entry->suggests = g_list_delete_link(entry->suggests, find); |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1175 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1176 | } |
|
9da98052a4e1
[gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14103
diff
changeset
|
1177 |