finch/libgnt/gntentry.c

Thu, 06 Feb 2014 19:44:10 +0530

author
Ankit Vani <a@nevitus.org>
date
Thu, 06 Feb 2014 19:44:10 +0530
changeset 35379
ea1a0327001e
parent 34306
4fb8809f2f97
child 35475
ec0d44434ba8
permissions
-rw-r--r--

Rename _get_gtype() functions in libgnt to _get_type()

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
28937
5f87e66597d9 Fix showing umlauts etc. on non-utf8 locales.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28768
diff changeset
26 #include "gntinternal.h"
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
27 #include "gntbox.h"
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28 #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
29 #include "gntmarshal.h"
14898
107b971b39f2 [gaim-migrate @ 17605]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14890
diff changeset
30 #include "gntstyle.h"
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
31 #include "gnttree.h"
14373
609c902d20f5 [gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14371
diff changeset
32 #include "gntutils.h"
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
34 enum
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
35 {
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
36 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
37 SIG_COMPLETION,
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
38 SIGS,
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39 };
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
40
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
41 typedef enum
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
42 {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
43 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
44 ENTRY_DEL_BWD_WORD = 1,
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
45 ENTRY_DEL_BWD_CHAR,
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
46 ENTRY_DEL_FWD_WORD,
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
47 ENTRY_DEL_FWD_CHAR,
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
48 ENTRY_DEL_EOL,
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
49 ENTRY_DEL_BOL,
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
50 } GntEntryAction;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
51
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
52 struct _GntEntryKillRing
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
53 {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
54 GString *buffer;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
55 GntEntryAction last;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
56 };
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
57
29954
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
58 struct _GntEntrySearch
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
59 {
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
60 char *needle;
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
61 };
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
62
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
63 static guint signals[SIGS] = { 0 };
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
64
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
65 static GntWidgetClass *parent_class = NULL;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
66
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
67 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
68 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
69
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
70 static gboolean
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
71 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
72 {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
73 if (action < 0) {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
74 entry->killring->last = action;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
75 return FALSE;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
76 }
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 if (len == 0)
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
79 len = strlen(text);
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
80 else if (len < 0) {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
81 text += len;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
82 len = -len;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
83 }
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
84
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
85 if (action != entry->killring->last) {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
86 struct {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
87 GntEntryAction one;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
88 GntEntryAction two;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
89 } merges[] = {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
90 {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
91 {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
92 {ENTRY_DEL_BOL, ENTRY_DEL_EOL},
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
93 {ENTRY_JAIL, ENTRY_JAIL},
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
94 };
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
95 int i;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
96
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
97 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
98 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
99 merges[i].two == action) {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
100 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
101 break;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
102 } else if (merges[i].one == action &&
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
103 merges[i].two == entry->killring->last) {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
104 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
105 break;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
106 }
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
107 }
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
108 if (merges[i].one == ENTRY_JAIL) {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
109 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
110 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
111 }
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
112 entry->killring->last = action;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
113 } else {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
114 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
115 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
116 else
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
117 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
118 }
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
119 return TRUE;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
120 }
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
121
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
122 static void
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
123 destroy_suggest(GntEntry *entry)
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 if (entry->ddown)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
126 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
127 gnt_widget_destroy(entry->ddown->parent);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
128 entry->ddown = NULL;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
129 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
130 }
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 static char *
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
133 get_beginning_of_word(GntEntry *entry)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
134 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
135 char *s = entry->cursor;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
136 while (s > entry->start)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
137 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
138 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
139 if (isspace(*t))
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
140 break;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
141 s = t;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
142 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
143 return s;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
144 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
145
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
146 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
147 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
148 {
18422
c41881f99687 A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18401
diff changeset
149 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
150
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
151 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
152 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
153 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
154 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
155 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
156 *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
157 }
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 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
159 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
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 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
162 } else {
18422
c41881f99687 A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18401
diff changeset
163 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
164 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
165 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
166 }
18422
c41881f99687 A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18401
diff changeset
167
21812
7aaff7db5310 Emit the 'completion' signal when tab is pressed from a suggest word.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21725
diff changeset
168 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
169 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
170 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
171 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
172 }
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
173
20351
83f3c26afa02 Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
174 static int
83f3c26afa02 Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
175 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
176 {
83f3c26afa02 Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
177 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
178 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
179 f++;
83f3c26afa02 Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
180 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
181 }
83f3c26afa02 Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
182
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
183 static gboolean
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
184 show_suggest_dropdown(GntEntry *entry)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
185 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
186 char *suggest = NULL;
34306
4fb8809f2f97 Fix finch warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 31294
diff changeset
187 gsize len;
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
188 int offset = 0, x, y;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
189 int count = 0;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
190 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
191 const char *text = NULL;
16954
b6488f782355 Fix tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16945
diff changeset
192 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
193 int max = -1;
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
194
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
195 if (entry->word)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
196 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
197 char *s = get_beginning_of_word(entry);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
198 suggest = g_strndup(s, entry->cursor - s);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
199 if (entry->scroll < s)
14373
609c902d20f5 [gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14371
diff changeset
200 offset = gnt_util_onscreen_width(entry->scroll, s);
14153
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 else
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
203 suggest = g_strdup(entry->start);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
204 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
205
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
206 if (entry->ddown == NULL)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
207 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
208 GntWidget *box = gnt_vbox_new(FALSE);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
209 entry->ddown = gnt_tree_new();
14167
ca6027c33d2c [gaim-migrate @ 16739]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14156
diff changeset
210 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
211 gnt_box_add_widget(GNT_BOX(box), entry->ddown);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
212
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
213 GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_TRANSIENT);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
214
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
215 gnt_widget_get_position(GNT_WIDGET(entry), &x, &y);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
216 x += offset;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
217 y++;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
218 if (y + 10 >= getmaxy(stdscr))
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
219 y -= 11;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
220 gnt_widget_set_position(box, x, y);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
221 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
222 else
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
223 gnt_tree_remove_all(GNT_TREE(entry->ddown));
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
224
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
225 for (count = 0, iter = entry->suggests; iter; iter = iter->next)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
226 {
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
227 text = iter->data;
14156
aacb0581eaf6 [gaim-migrate @ 16723]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14153
diff changeset
228 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
229 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
230 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
231 gnt_tree_create_row(GNT_TREE(entry->ddown), text),
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
232 NULL, NULL);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
233 count++;
20351
83f3c26afa02 Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
234 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
235 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
236 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
237 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
238 sgst = text;
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
239 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
240 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
241 g_free(suggest);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
242
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
243 if (count == 0) {
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
244 destroy_suggest(entry);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
245 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
246 } 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
247 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
248 gboolean ret;
1deb0300b15e Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22571
diff changeset
249
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 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
251 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
252
1deb0300b15e Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22571
diff changeset
253 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
254 g_free(store);
1deb0300b15e Return FALSE when nothing changes after an attempted tab-completion.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22571
diff changeset
255 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
256 } else {
20351
83f3c26afa02 Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
257 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
258 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
259 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
260 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
261 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
262 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
263 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
264 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
265 else
83f3c26afa02 Tab-complete as much as possible when there are multiple suggests.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
266 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
267 }
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
268 gnt_widget_draw(entry->ddown->parent);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
269 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
270
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
271 return TRUE;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
272 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
273
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
274 static void
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
275 gnt_entry_draw(GntWidget *widget)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
276 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
277 GntEntry *entry = GNT_ENTRY(widget);
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
278 int stop;
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14093
diff changeset
279 gboolean focus;
26650
cfa29f8cf9b7 Update hardware cursor correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24851
diff changeset
280 int curpos;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
281
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14093
diff changeset
282 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
283 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
284 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
285 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
286
6afba85cfc30 [gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
287 if (entry->masked)
6afba85cfc30 [gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
288 {
6afba85cfc30 [gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
289 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
290 g_utf8_pointer_to_offset(entry->scroll, entry->end));
14041
6afba85cfc30 [gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
291 }
6afba85cfc30 [gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
292 else
28937
5f87e66597d9 Fix showing umlauts etc. on non-utf8 locales.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28768
diff changeset
293 mvwprintw(widget->window, 0, 0, "%s", C_(entry->scroll));
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
294
14373
609c902d20f5 [gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14371
diff changeset
295 stop = gnt_util_onscreen_width(entry->scroll, entry->end);
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
296 if (stop < widget->priv.width)
18401
416ff3a69f61 Draw the password entries correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17586
diff changeset
297 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
298
26650
cfa29f8cf9b7 Update hardware cursor correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24851
diff changeset
299 curpos = gnt_util_onscreen_width(entry->scroll, entry->cursor);
14103
bcac61d40461 [gaim-migrate @ 16647]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14093
diff changeset
300 if (focus)
26650
cfa29f8cf9b7 Update hardware cursor correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24851
diff changeset
301 mvwchgat(widget->window, 0, curpos, 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL, NULL);
cfa29f8cf9b7 Update hardware cursor correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24851
diff changeset
302 wmove(widget->window, 0, curpos);
14090
a8552e906a76 [gaim-migrate @ 16630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14041
diff changeset
303
14494
3575eac3a518 [gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14413
diff changeset
304 GNTDEBUG;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
305 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
306
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
307 static void
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
308 gnt_entry_size_request(GntWidget *widget)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
309 {
13944
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
310 if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED))
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
311 {
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
312 widget->priv.height = 1;
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
313 widget->priv.width = 20;
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
314 }
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
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
317 static void
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
318 gnt_entry_map(GntWidget *widget)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
319 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
320 if (widget->priv.width == 0 || widget->priv.height == 0)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
321 gnt_widget_size_request(widget);
14494
3575eac3a518 [gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14413
diff changeset
322 GNTDEBUG;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
323 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
324
13944
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
325 static void
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
326 entry_redraw(GntWidget *widget)
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
327 {
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
328 gnt_entry_draw(widget);
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
329 gnt_widget_queue_update(widget);
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
330 }
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
331
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
332 static void
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
333 entry_text_changed(GntEntry *entry)
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
334 {
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
335 g_signal_emit(entry, signals[SIG_TEXT_CHANGED], 0);
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
336 }
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
337
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
338 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
339 move_back(GntBindable *bind, GList *null)
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
340 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
341 GntEntry *entry = GNT_ENTRY(bind);
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
342 if (entry->cursor <= entry->start)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
343 return FALSE;
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
344 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
345 if (entry->cursor < entry->scroll)
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
346 entry->scroll = entry->cursor;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
347 update_kill_ring(entry, ENTRY_JAIL, NULL, 0);
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
348 entry_redraw(GNT_WIDGET(entry));
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
349 return TRUE;
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
350 }
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
351
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
352 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
353 move_forward(GntBindable *bind, GList *list)
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
354 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
355 GntEntry *entry = GNT_ENTRY(bind);
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
356 if (entry->cursor >= entry->end)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
357 return FALSE;
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
358 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
359 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
360 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
361 update_kill_ring(entry, ENTRY_JAIL, NULL, 0);
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
362 entry_redraw(GNT_WIDGET(entry));
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
363 return TRUE;
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
364 }
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
365
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
366 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
367 backspace(GntBindable *bind, GList *null)
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
368 {
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
369 int len;
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
370 GntEntry *entry = GNT_ENTRY(bind);
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
371
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
372 if (entry->cursor <= entry->start)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
373 return TRUE;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
374
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
375 len = entry->cursor - g_utf8_find_prev_char(entry->start, entry->cursor);
24817
37ee17281d89 Do not alter the killring on delete-prev or delete-next (char) operations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24631
diff changeset
376 update_kill_ring(entry, ENTRY_JAIL, entry->cursor, -len);
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
377 entry->cursor -= len;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
378
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
379 memmove(entry->cursor, entry->cursor + len, entry->end - entry->cursor);
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
380 entry->end -= len;
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
381
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
382 if (entry->scroll > entry->start)
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
383 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
384
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
385 entry_redraw(GNT_WIDGET(entry));
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
386 if (entry->ddown)
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
387 show_suggest_dropdown(entry);
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
388 entry_text_changed(entry);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
389 return TRUE;
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
390 }
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
391
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
392 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
393 delkey(GntBindable *bind, GList *null)
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
394 {
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
395 int len;
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
396 GntEntry *entry = GNT_ENTRY(bind);
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
397
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
398 if (entry->cursor >= entry->end)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
399 return FALSE;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
400
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
401 len = g_utf8_find_next_char(entry->cursor, NULL) - entry->cursor;
24817
37ee17281d89 Do not alter the killring on delete-prev or delete-next (char) operations.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24631
diff changeset
402 update_kill_ring(entry, ENTRY_JAIL, entry->cursor, len);
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
403 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
404 entry->end -= len;
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
405 entry_redraw(GNT_WIDGET(entry));
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
406
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
407 if (entry->ddown)
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
408 show_suggest_dropdown(entry);
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
409 entry_text_changed(entry);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
410 return TRUE;
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
411 }
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
412
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
413 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
414 move_start(GntBindable *bind, GList *null)
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
415 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
416 GntEntry *entry = GNT_ENTRY(bind);
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
417 entry->scroll = entry->cursor = entry->start;
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
418 entry_redraw(GNT_WIDGET(entry));
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
419 update_kill_ring(entry, ENTRY_JAIL, NULL, 0);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
420 return TRUE;
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
421 }
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
422
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
423 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
424 move_end(GntBindable *bind, GList *null)
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
425 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
426 GntEntry *entry = GNT_ENTRY(bind);
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
427 entry->cursor = entry->end;
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
428 /* This should be better than this */
14373
609c902d20f5 [gaim-migrate @ 17001]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14371
diff changeset
429 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
430 entry->scroll = g_utf8_find_next_char(entry->scroll, NULL);
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
431 entry_redraw(GNT_WIDGET(entry));
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
432 update_kill_ring(entry, ENTRY_JAIL, NULL, 0);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
433 return TRUE;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
434 }
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
435
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
436 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
437 history_next(GntBindable *bind, GList *null)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
438 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
439 GntEntry *entry = GNT_ENTRY(bind);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
440 if (entry->histlength && entry->history->prev)
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 entry->history = entry->history->prev;
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
443 gnt_entry_set_text_internal(entry, entry->history->data);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
444 destroy_suggest(entry);
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
445 entry_text_changed(entry);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
446
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
447 update_kill_ring(entry, ENTRY_JAIL, NULL, 0);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
448 return TRUE;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
449 }
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
450 return FALSE;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
451 }
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 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
454 history_prev(GntBindable *bind, GList *null)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
455 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
456 GntEntry *entry = GNT_ENTRY(bind);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
457 if (entry->histlength && entry->history->next)
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 if (entry->history->prev == NULL)
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
460 {
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
461 /* Save the current contents */
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
462 char *text = g_strdup(gnt_entry_get_text(entry));
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
463 g_free(entry->history->data);
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
464 entry->history->data = text;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
465 }
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 entry->history = entry->history->next;
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
468 gnt_entry_set_text_internal(entry, entry->history->data);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
469 destroy_suggest(entry);
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
470 entry_text_changed(entry);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
471
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
472 update_kill_ring(entry, ENTRY_JAIL, NULL, 0);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
473 return TRUE;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
474 }
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
475 return FALSE;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
476 }
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
477
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
478 static gboolean
29954
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
479 history_search(GntBindable *bind, GList *null)
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
480 {
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
481 GntEntry *entry = GNT_ENTRY(bind);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
482 GList *iter;
30626
bec413ce77c7 Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30425
diff changeset
483 const char *current;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30706
diff changeset
484
29954
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
485 if (entry->history->prev && entry->search->needle)
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
486 current = entry->search->needle;
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
487 else
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
488 current = gnt_entry_get_text(entry);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
489
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
490 if (!entry->histlength || !entry->history->next || !*current)
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
491 return FALSE;
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
492
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
493 for (iter = entry->history->next; iter; iter = iter->next) {
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
494 const char *str = iter->data;
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
495 /* A more utf8-friendly version of strstr would have been better, but
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
496 * for now, this will have to do. */
30626
bec413ce77c7 Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30425
diff changeset
497 if (strstr(str, current) != NULL)
29954
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
498 break;
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
499 }
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
500
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
501 if (!iter)
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
502 return TRUE;
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
503
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
504 if (entry->history->prev == NULL) {
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
505 /* We are doing it for the first time. Save the current contents */
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
506 char *text = g_strdup(gnt_entry_get_text(entry));
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
507
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
508 g_free(entry->search->needle);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
509 entry->search->needle = g_strdup(current);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
510
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
511 g_free(entry->history->data);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
512 entry->history->data = text;
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
513 }
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
514
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
515 entry->history = iter;
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
516 gnt_entry_set_text_internal(entry, entry->history->data);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
517 destroy_suggest(entry);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
518 entry_text_changed(entry);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
519
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
520 update_kill_ring(entry, ENTRY_JAIL, NULL, 0);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
521 return TRUE;
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
522 }
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
523
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
524 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
525 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
526 {
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
527 GntEntry *entry = GNT_ENTRY(bind);
15838
45289a1439b2 Get rid of some minor C99isms
Mark Doliner <markdoliner@pidgin.im>
parents: 15837
diff changeset
528 gchar *i, *text, *a, *all;
45289a1439b2 Get rid of some minor C99isms
Mark Doliner <markdoliner@pidgin.im>
parents: 15837
diff changeset
529 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
530 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
531 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
532 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
533 *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
534 }
15838
45289a1439b2 Get rid of some minor C99isms
Mark Doliner <markdoliner@pidgin.im>
parents: 15837
diff changeset
535 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
536 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
537 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
538 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
539 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
540 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
541 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
542 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
543 }
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
544
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
545 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
546 suggest_show(GntBindable *bind, GList *null)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
547 {
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
548 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
549 if (entry->ddown) {
28631
d0b410479721 Add missing null sentinels, and help the compiler catch such errors.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26650
diff changeset
550 gnt_bindable_perform_action_named(GNT_BINDABLE(entry->ddown), "move-down", NULL);
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
551 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
552 }
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
553 return show_suggest_dropdown(entry);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
554 }
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
555
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
556 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
557 suggest_next(GntBindable *bind, GList *null)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
558 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
559 GntEntry *entry = GNT_ENTRY(bind);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
560 if (entry->ddown) {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
561 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
562 return TRUE;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
563 }
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
564 return FALSE;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
565 }
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
566
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
567 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
568 suggest_prev(GntBindable *bind, GList *null)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
569 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
570 GntEntry *entry = GNT_ENTRY(bind);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
571 if (entry->ddown) {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
572 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
573 return TRUE;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
574 }
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
575 return FALSE;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
576 }
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
577
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
578 static gboolean
30425
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
579 suggest_next_page(GntBindable *bind, GList *null)
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
580 {
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
581 GntEntry *entry = GNT_ENTRY(bind);
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
582 if (entry->ddown) {
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
583 gnt_bindable_perform_action_named(GNT_BINDABLE(entry->ddown), "page-down", NULL);
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
584 return TRUE;
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
585 }
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
586 return FALSE;
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
587 }
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
588
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
589 static gboolean
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
590 suggest_prev_page(GntBindable *bind, GList *null)
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
591 {
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
592 GntEntry *entry = GNT_ENTRY(bind);
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
593 if (entry->ddown) {
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
594 gnt_bindable_perform_action_named(GNT_BINDABLE(entry->ddown), "page-up", NULL);
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
595 return TRUE;
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
596 }
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
597 return FALSE;
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
598 }
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
599
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
600 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
601 del_to_home(GntBindable *bind, GList *null)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
602 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
603 GntEntry *entry = GNT_ENTRY(bind);
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
604 if (entry->cursor <= entry->start)
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
605 return TRUE;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
606 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
607 memmove(entry->start, entry->cursor, entry->end - entry->cursor);
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
608 entry->end -= (entry->cursor - entry->start);
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
609 entry->cursor = entry->scroll = entry->start;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
610 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
611 entry_redraw(GNT_WIDGET(bind));
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
612 entry_text_changed(entry);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
613 return TRUE;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
614 }
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
615
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
616 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
617 del_to_end(GntBindable *bind, GList *null)
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
618 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
619 GntEntry *entry = GNT_ENTRY(bind);
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
620 if (entry->end <= entry->cursor)
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
621 return TRUE;
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_EOL, entry->cursor, entry->end - entry->cursor);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
623 entry->end = entry->cursor;
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
624 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
625 entry_redraw(GNT_WIDGET(bind));
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
626 entry_text_changed(entry);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
627 return TRUE;
14275
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
628 }
ef418684623d [gaim-migrate @ 16894]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14167
diff changeset
629
23317
dba466df7ed0 Treat digits and alphabets as the same class of characters when looking
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23065
diff changeset
630 #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
631 (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
632 (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
633 (g_unichar_ispunct(a) && g_unichar_ispunct(b)))
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
634
14890
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
635 static const char *
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
636 begin_word(const char *text, const char *begin)
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
637 {
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
638 gunichar ch = 0;
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
639 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
640 text = g_utf8_find_prev_char(begin, text);
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
641 ch = g_utf8_get_char(text);
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
642 while ((text = g_utf8_find_prev_char(begin, text)) >= begin) {
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
643 gunichar cur = g_utf8_get_char(text);
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
644 if (!SAME(ch, cur))
14890
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
645 break;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
646 }
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
647
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
648 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
649 }
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
650
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
651 static const char *
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
652 next_begin_word(const char *text, const char *end)
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
653 {
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
654 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
655
68ec08d05ff4 Pluck some bug-fixes for finch/gnt for the bug-fix release.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21270
diff changeset
656 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
657 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
658
23437
e19973073108 Fixes a crash when next_begin_word is called on trailing spaces at the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23317
diff changeset
659 if (text) {
e19973073108 Fixes a crash when next_begin_word is called on trailing spaces at the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23317
diff changeset
660 ch = g_utf8_get_char(text);
e19973073108 Fixes a crash when next_begin_word is called on trailing spaces at the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23317
diff changeset
661 while ((text = g_utf8_find_next_char(text, end)) != NULL && text <= end) {
e19973073108 Fixes a crash when next_begin_word is called on trailing spaces at the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23317
diff changeset
662 gunichar cur = g_utf8_get_char(text);
e19973073108 Fixes a crash when next_begin_word is called on trailing spaces at the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23317
diff changeset
663 if (!SAME(ch, cur))
e19973073108 Fixes a crash when next_begin_word is called on trailing spaces at the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23317
diff changeset
664 break;
e19973073108 Fixes a crash when next_begin_word is called on trailing spaces at the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23317
diff changeset
665 }
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
666 }
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
667 return (text ? text : end);
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
668 }
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 #undef SAME
14890
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
671 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
672 move_back_word(GntBindable *bind, GList *null)
14890
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
673 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
674 GntEntry *entry = GNT_ENTRY(bind);
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
675 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
676
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
677 if (iter < entry->start)
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
678 return TRUE;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
679 iter = begin_word(iter, entry->start);
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
680 entry->cursor = (char*)iter;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
681 if (entry->cursor < entry->scroll)
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
682 entry->scroll = entry->cursor;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
683 update_kill_ring(entry, ENTRY_JAIL, NULL, 0);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
684 entry_redraw(GNT_WIDGET(bind));
14890
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
685 return TRUE;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
686 }
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
687
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
688 static gboolean
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
689 del_prev_word(GntBindable *bind, GList *null)
14890
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
690 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
691 GntWidget *widget = GNT_WIDGET(bind);
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
692 GntEntry *entry = GNT_ENTRY(bind);
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
693 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
694 int count;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
695
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
696 if (iter < entry->start)
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
697 return TRUE;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
698 iter = (char*)begin_word(iter, entry->start);
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
699 count = entry->cursor - iter;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
700 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
701 memmove(iter, entry->cursor, entry->end - entry->cursor);
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
702 entry->end -= count;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
703 entry->cursor = iter;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
704 if (entry->cursor <= entry->scroll) {
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
705 entry->scroll = entry->cursor - widget->priv.width + 2;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
706 if (entry->scroll < entry->start)
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
707 entry->scroll = entry->start;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
708 }
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
709 memset(entry->end, '\0', entry->buffer - (entry->end - entry->start));
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
710 entry_redraw(widget);
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
711 entry_text_changed(entry);
14890
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
712
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
713 return TRUE;
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
714 }
78c01aad3cfa [gaim-migrate @ 17595]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14889
diff changeset
715
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
716 static gboolean
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
717 move_forward_word(GntBindable *bind, GList *list)
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
718 {
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
719 GntEntry *entry = GNT_ENTRY(bind);
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
720 GntWidget *widget = GNT_WIDGET(bind);
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
721 entry->cursor = (char *)next_begin_word(entry->cursor, entry->end);
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
722 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
723 entry->scroll = g_utf8_find_next_char(entry->scroll, NULL);
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
724 }
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
725 update_kill_ring(entry, ENTRY_JAIL, NULL, 0);
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
726 entry_redraw(widget);
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
727 return TRUE;
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
728 }
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
729
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
730 static gboolean
15187
841272d50d22 [gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15186
diff changeset
731 delete_forward_word(GntBindable *bind, GList *list)
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
732 {
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
733 GntEntry *entry = GNT_ENTRY(bind);
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
734 GntWidget *widget = GNT_WIDGET(bind);
15187
841272d50d22 [gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15186
diff changeset
735 char *iter = (char *)next_begin_word(entry->cursor, entry->end);
841272d50d22 [gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15186
diff changeset
736 int len = entry->end - iter + 1;
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
737 if (len <= 0)
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
738 return TRUE;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
739 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
740 memmove(entry->cursor, iter, len);
841272d50d22 [gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15186
diff changeset
741 len = iter - entry->cursor;
841272d50d22 [gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15186
diff changeset
742 entry->end -= len;
841272d50d22 [gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15186
diff changeset
743 memset(entry->end, '\0', len);
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
744 entry_redraw(widget);
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
745 entry_text_changed(entry);
15186
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
746 return TRUE;
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
747 }
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
748
62aead088a8b [gaim-migrate @ 17910]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15038
diff changeset
749 static gboolean
21252
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
750 transpose_chars(GntBindable *bind, GList *null)
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
751 {
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
752 GntEntry *entry = GNT_ENTRY(bind);
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
753 char *current, *prev;
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
754 char hold[8]; /* that's right */
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
755
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
756 if (entry->cursor <= entry->start)
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
757 return FALSE;
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
758
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
759 if (!*entry->cursor)
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
760 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
761
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
762 current = entry->cursor;
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
763 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
764 move_forward(bind, null);
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
765
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
766 /* Let's do this dance! */
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
767 memcpy(hold, prev, current - prev);
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
768 memmove(prev, current, entry->cursor - current);
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
769 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
770
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
771 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
772 entry_redraw(GNT_WIDGET(entry));
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
773 entry_text_changed(entry);
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
774 return TRUE;
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
775 }
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
776
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
777 static gboolean
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
778 entry_yank(GntBindable *bind, GList *null)
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
779 {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
780 GntEntry *entry = GNT_ENTRY(bind);
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
781 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
782 return TRUE;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
783 }
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
784
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
785 static gboolean
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
786 gnt_entry_key_pressed(GntWidget *widget, const char *text)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
787 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
788 GntEntry *entry = GNT_ENTRY(widget);
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
789
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
790 if (text[0] == 27)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
791 {
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
792 if (text[1] == 0)
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
793 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
794 destroy_suggest(entry);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
795 return TRUE;
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
796 }
14005
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13992
diff changeset
797
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
798 return FALSE;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
799 }
21270
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
800
22421
ccddf3ffaf41 '\n' (ctrl-j) should behave similar to '\r' (ctrl-m). Fixes #4833.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
801 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
802 {
21270
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
803 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
804 destroy_suggest(entry);
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
805 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
806 g_free(text);
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
807 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
808 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
809 return TRUE;
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
810 }
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
811
21270
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
812 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
813 {
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
814 const char *str, *next;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
815
21270
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
816 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
817 {
34306
4fb8809f2f97 Fix finch warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 31294
diff changeset
818 gsize len;
21270
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
819 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
820 len = next - str;
14090
a8552e906a76 [gaim-migrate @ 16630]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14041
diff changeset
821
21270
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
822 /* Valid input? */
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
823 /* 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
824 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
825 continue;
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
826 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
827 continue;
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
828 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
829 continue;
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
830 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
831 continue;
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
832
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
833 /* Reached the max? */
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
834 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
835 continue;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
836
34306
4fb8809f2f97 Fix finch warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 31294
diff changeset
837 if ((gsize)(entry->end + len - entry->start) >= entry->buffer)
21270
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
838 {
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
839 /* 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
840 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
841 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
842 g_free(tmp);
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
843 }
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
844
21270
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
845 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
846 entry->end += len;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
847
21270
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
848 while (str < next)
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
849 {
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
850 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
851 *entry->cursor = ' ';
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
852 else
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
853 *entry->cursor = *str;
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
854 entry->cursor++;
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
855 str++;
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
856 }
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
857
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
858 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
859 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
860
21270
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
861 if (entry->ddown)
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
862 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
863 }
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
864 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
865 entry_redraw(widget);
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
866 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
867 return TRUE;
9393270c30f0 Hitting Return in the entry will trigger the 'activate' signal.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21256
diff changeset
868 }
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
869
22421
ccddf3ffaf41 '\n' (ctrl-j) should behave similar to '\r' (ctrl-m). Fixes #4833.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
870 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
871 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
872 return TRUE;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
873 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
874
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
875 return FALSE;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
876 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
877
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
878 static void
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
879 jail_killring(GntEntryKillRing *kr)
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
880 {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
881 g_string_free(kr->buffer, TRUE);
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
882 g_free(kr);
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
883 }
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
884
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
885 static void
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
886 gnt_entry_destroy(GntWidget *widget)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
887 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
888 GntEntry *entry = GNT_ENTRY(widget);
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
889 g_free(entry->start);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
890
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
891 if (entry->history)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
892 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
893 entry->history = g_list_first(entry->history);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
894 g_list_foreach(entry->history, (GFunc)g_free, NULL);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
895 g_list_free(entry->history);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
896 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
897
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
898 if (entry->suggests)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
899 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
900 g_list_foreach(entry->suggests, (GFunc)g_free, NULL);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
901 g_list_free(entry->suggests);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
902 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
903
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
904 if (entry->ddown)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
905 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
906 gnt_widget_destroy(entry->ddown->parent);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
907 }
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
908
29954
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
909 g_free(entry->search->needle);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
910 g_free(entry->search);
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
911
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
912 jail_killring(entry->killring);
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
913 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
914
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
915 static void
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
916 gnt_entry_lost_focus(GntWidget *widget)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
917 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
918 GntEntry *entry = GNT_ENTRY(widget);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
919 destroy_suggest(entry);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
920 entry_redraw(widget);
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
921 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
922
23065
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
923 static gboolean
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
924 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
925 {
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
926 if (event == GNT_MIDDLE_MOUSE_DOWN) {
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
927 clipboard_paste(GNT_BINDABLE(widget), NULL);
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
928 return TRUE;
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
929 }
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
930 return FALSE;
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
931
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
932 }
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
933
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
934 static void
13922
7195a6fe2416 [gaim-migrate @ 16321]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13917
diff changeset
935 gnt_entry_class_init(GntEntryClass *klass)
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
936 {
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
937 GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
24851
9a1bdc3a0ac3 Binding fixes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24817
diff changeset
938 char s[3] = {'\033', erasechar(), 0};
14963
1c783f0acfa9 [gaim-migrate @ 17673]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14962
diff changeset
939
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
940 parent_class = GNT_WIDGET_CLASS(klass);
23065
a8837cc467b8 Middle click pastes the internal clipboard
Richard Nelson <wabz@pidgin.im>
parents: 22841
diff changeset
941 parent_class->clicked = gnt_entry_clicked;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
942 parent_class->destroy = gnt_entry_destroy;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
943 parent_class->draw = gnt_entry_draw;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
944 parent_class->map = gnt_entry_map;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
945 parent_class->size_request = gnt_entry_size_request;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
946 parent_class->key_pressed = gnt_entry_key_pressed;
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
947 parent_class->lost_focus = gnt_entry_lost_focus;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
948
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
949 signals[SIG_TEXT_CHANGED] =
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
950 g_signal_new("text_changed",
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
951 G_TYPE_FROM_CLASS(klass),
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
952 G_SIGNAL_RUN_LAST,
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
953 G_STRUCT_OFFSET(GntEntryClass, text_changed),
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
954 NULL, NULL,
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
955 g_cclosure_marshal_VOID__VOID,
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
956 G_TYPE_NONE, 0);
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
957
18422
c41881f99687 A 'completion' signal to emit whenever user accepts a completion suggest.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18401
diff changeset
958 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
959 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
960 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
961 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
962 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
963 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
964 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
965
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
966 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
967 GNT_KEY_CTRL_A, NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
968 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
969 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
970 GNT_KEY_CTRL_E, NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
971 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
972 gnt_bindable_class_register_action(bindable, "delete-prev", backspace,
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
973 GNT_KEY_BACKSPACE, NULL);
24851
9a1bdc3a0ac3 Binding fixes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24817
diff changeset
974 gnt_bindable_register_binding(bindable, "delete-prev", s + 1, NULL);
15366
df6795069c0b [gaim-migrate @ 18095]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15292
diff changeset
975 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
976 gnt_bindable_class_register_action(bindable, "delete-next", delkey,
14938
ee27e45919ef [gaim-migrate @ 17645]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14934
diff changeset
977 GNT_KEY_DEL, NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
978 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
979 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
980 GNT_KEY_CTRL_U, NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
981 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
982 GNT_KEY_CTRL_K, NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
983 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
984 GNT_KEY_CTRL_W, NULL);
24851
9a1bdc3a0ac3 Binding fixes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24817
diff changeset
985 gnt_bindable_register_binding(bindable, "delete-prev-word", s, NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
986 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
987 "\033" "b", NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
988 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
989 GNT_KEY_LEFT, NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
990 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
991 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
992 GNT_KEY_RIGHT, NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
993 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
994 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
995 "\033" "f", NULL);
15187
841272d50d22 [gaim-migrate @ 17911]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15186
diff changeset
996 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
997 "\033" "d", NULL);
21252
89901b90950c transpose-chars action for the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21240
diff changeset
998 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
999 GNT_KEY_CTRL_T, NULL);
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1000 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
1001 GNT_KEY_CTRL_Y, NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
1002 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
1003 "\t", NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
1004 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
1005 GNT_KEY_DOWN, NULL);
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
1006 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
1007 GNT_KEY_UP, NULL);
30425
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
1008 gnt_bindable_class_register_action(bindable, "suggest-next-page", suggest_next_page,
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
1009 GNT_KEY_PGDOWN, NULL);
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
1010 gnt_bindable_class_register_action(bindable, "suggest-prev-page", suggest_prev_page,
cbaa6c373b32 Allow page-up/downing in the suggestion list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29954
diff changeset
1011 GNT_KEY_PGUP, 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
1012 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
1013 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
1014 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
1015 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
1016 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
1017 gnt_bindable_register_binding(bindable, "history-next", GNT_KEY_CTRL_N, NULL);
29954
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
1018 gnt_bindable_class_register_action(bindable, "history-search", history_search,
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
1019 GNT_KEY_CTRL_R, 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
1020 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
1021 GNT_KEY_CTRL_V, NULL);
14855
84c869823944 [gaim-migrate @ 17558]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14807
diff changeset
1022
14962
abfaa2e03ac7 [gaim-migrate @ 17672]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14938
diff changeset
1023 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
1024 GNTDEBUG;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1025 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1026
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1027 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
1028 new_killring(void)
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1029 {
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1030 GntEntryKillRing *kr = g_new0(GntEntryKillRing, 1);
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1031 kr->buffer = g_string_new(NULL);
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1032 return kr;
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1033 }
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1034
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1035 static void
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1036 gnt_entry_init(GTypeInstance *instance, gpointer class)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1037 {
14005
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13992
diff changeset
1038 GntWidget *widget = GNT_WIDGET(instance);
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1039 GntEntry *entry = GNT_ENTRY(instance);
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1040
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1041 entry->flag = GNT_ENTRY_FLAG_ALL;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1042 entry->max = 0;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1043
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1044 entry->histlength = 0;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1045 entry->history = NULL;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1046
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1047 entry->word = TRUE;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1048 entry->always = FALSE;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1049 entry->suggests = NULL;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1050 entry->killring = new_killring();
29954
5478a4a04c7b history-search action for text-entries.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28937
diff changeset
1051 entry->search = g_new0(GntEntrySearch, 1);
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1052
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1053 GNT_WIDGET_SET_FLAGS(GNT_WIDGET(entry),
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1054 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
1055 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
1056
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13992
diff changeset
1057 widget->priv.minw = 3;
198d1658b390 [gaim-migrate @ 16480]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13992
diff changeset
1058 widget->priv.minh = 1;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1059
14494
3575eac3a518 [gaim-migrate @ 17146]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14413
diff changeset
1060 GNTDEBUG;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1061 }
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 /******************************************************************************
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1064 * GntEntry API
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 GType
35379
ea1a0327001e Rename _get_gtype() functions in libgnt to _get_type()
Ankit Vani <a@nevitus.org>
parents: 34306
diff changeset
1067 gnt_entry_get_type(void)
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1068 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1069 static GType type = 0;
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 if(type == 0)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1072 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1073 static const GTypeInfo info = {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1074 sizeof(GntEntryClass),
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1075 NULL, /* base_init */
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1076 NULL, /* base_finalize */
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1077 (GClassInitFunc)gnt_entry_class_init,
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1078 NULL, /* class_finalize */
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1079 NULL, /* class_data */
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1080 sizeof(GntEntry),
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1081 0, /* n_preallocs */
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1082 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
1083 NULL /* value_table */
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1084 };
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1085
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1086 type = g_type_register_static(GNT_TYPE_WIDGET,
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1087 "GntEntry",
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1088 &info, 0);
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1089 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1090
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1091 return type;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1092 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1093
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1094 GntWidget *gnt_entry_new(const char *text)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1095 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1096 GntWidget *widget = g_object_new(GNT_TYPE_ENTRY, NULL);
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1097 GntEntry *entry = GNT_ENTRY(widget);
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1098
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1099 gnt_entry_set_text_internal(entry, text);
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1100
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1101 return widget;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1102 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1103
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1104 static void
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1105 gnt_entry_set_text_internal(GntEntry *entry, const char *text)
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1106 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1107 int len;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1108 int scroll, cursor;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1109
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1110 g_free(entry->start);
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1111
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1112 if (text && text[0])
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1113 {
14093
98bd96324489 [gaim-migrate @ 16633]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14090
diff changeset
1114 len = strlen(text);
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1115 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1116 else
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1117 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1118 len = 0;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1119 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1120
14093
98bd96324489 [gaim-migrate @ 16633]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14090
diff changeset
1121 entry->buffer = len + 128;
98bd96324489 [gaim-migrate @ 16633]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14090
diff changeset
1122
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1123 scroll = entry->scroll - entry->start;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1124 cursor = entry->end - entry->cursor;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1125
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1126 entry->start = g_new0(char, entry->buffer);
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1127 if (text)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1128 snprintf(entry->start, len + 1, "%s", text);
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1129 entry->end = entry->start + len;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1130
28768
f0b28ee7db68 Fix a couple of invalid reads after clearing the text in an entry box.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28631
diff changeset
1131 if ((entry->scroll = entry->start + scroll) > entry->end)
f0b28ee7db68 Fix a couple of invalid reads after clearing the text in an entry box.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28631
diff changeset
1132 entry->scroll = entry->end;
f0b28ee7db68 Fix a couple of invalid reads after clearing the text in an entry box.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28631
diff changeset
1133
f0b28ee7db68 Fix a couple of invalid reads after clearing the text in an entry box.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28631
diff changeset
1134 if ((entry->cursor = entry->end - cursor) > entry->end)
f0b28ee7db68 Fix a couple of invalid reads after clearing the text in an entry box.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28631
diff changeset
1135 entry->cursor = entry->end;
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1136
13944
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1137 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
1138 entry_redraw(GNT_WIDGET(entry));
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1139 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1140
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1141 void gnt_entry_set_text(GntEntry *entry, const char *text)
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1142 {
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1143 gboolean changed = TRUE;
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1144 if (text == NULL && entry->start == NULL)
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1145 changed = FALSE;
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1146 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
1147 changed = FALSE;
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1148 gnt_entry_set_text_internal(entry, text);
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1149 if (changed)
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1150 entry_text_changed(entry);
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1151 }
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1152
13917
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1153 void gnt_entry_set_max(GntEntry *entry, int max)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1154 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1155 entry->max = max;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1156 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1157
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1158 void gnt_entry_set_flag(GntEntry *entry, GntEntryFlag flag)
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1159 {
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1160 entry->flag = flag;
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1161 /* 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
1162 }
7c435cf1ee60 [gaim-migrate @ 16314]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1163
13944
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1164 const char *gnt_entry_get_text(GntEntry *entry)
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1165 {
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1166 return entry->start;
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1167 }
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1168
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1169 void gnt_entry_clear(GntEntry *entry)
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1170 {
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1171 gnt_entry_set_text_internal(entry, NULL);
13944
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1172 entry->scroll = entry->cursor = entry->end = entry->start;
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1173 entry_redraw(GNT_WIDGET(entry));
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1174 destroy_suggest(entry);
15292
e5ea308a70b8 [gaim-migrate @ 18020]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15188
diff changeset
1175 entry_text_changed(entry);
13944
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1176 }
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1177
14041
6afba85cfc30 [gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
1178 void gnt_entry_set_masked(GntEntry *entry, gboolean set)
6afba85cfc30 [gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
1179 {
6afba85cfc30 [gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
1180 entry->masked = set;
6afba85cfc30 [gaim-migrate @ 16540]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14005
diff changeset
1181 }
13944
2269d17043b1 [gaim-migrate @ 16362]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13940
diff changeset
1182
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1183 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
1184 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1185 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
1186
34306
4fb8809f2f97 Fix finch warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 31294
diff changeset
1187 if (entry->histlength >= 0 &&
4fb8809f2f97 Fix finch warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 31294
diff changeset
1188 g_list_length(entry->history) >= (gsize)entry->histlength)
4fb8809f2f97 Fix finch warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 31294
diff changeset
1189 {
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1190 return;
34306
4fb8809f2f97 Fix finch warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 31294
diff changeset
1191 }
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1192
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1193 entry->history = g_list_first(entry->history);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1194 g_free(entry->history->data);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1195 entry->history->data = g_strdup(text);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1196 entry->history = g_list_prepend(entry->history, NULL);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1197 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1198
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1199 void gnt_entry_set_history_length(GntEntry *entry, int num)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1200 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1201 if (num == 0)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1202 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1203 entry->histlength = num;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1204 if (entry->history)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1205 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1206 entry->history = g_list_first(entry->history);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1207 g_list_foreach(entry->history, (GFunc)g_free, NULL);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1208 g_list_free(entry->history);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1209 entry->history = NULL;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1210 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1211 return;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1212 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1213
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1214 if (entry->histlength == 0)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1215 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1216 entry->histlength = num;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1217 entry->history = g_list_append(NULL, NULL);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1218 return;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1219 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1220
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1221 if (num > 0 && num < entry->histlength)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1222 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1223 GList *first, *iter;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1224 int index = 0;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1225 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
1226 while ((iter = g_list_nth(first, num)) != NULL)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1227 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1228 g_free(iter->data);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1229 first = g_list_delete_link(first, iter);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1230 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1231 entry->histlength = num;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1232 if (index >= num)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1233 entry->history = g_list_last(first);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1234 return;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1235 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1236
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1237 entry->histlength = num;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1238 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1239
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1240 void gnt_entry_set_word_suggest(GntEntry *entry, gboolean word)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1241 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1242 entry->word = word;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1243 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1244
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1245 void gnt_entry_set_always_suggest(GntEntry *entry, gboolean always)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1246 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1247 entry->always = always;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1248 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1249
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1250 void gnt_entry_add_suggest(GntEntry *entry, const char *text)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1251 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1252 GList *find;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1253
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1254 if (!text || !*text)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1255 return;
21256
b8585094b117 Add 'yank' action in the entry boxes.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21252
diff changeset
1256
14153
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1257 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
1258 if (find)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1259 return;
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1260 entry->suggests = g_list_append(entry->suggests, g_strdup(text));
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1261 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1262
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1263 void gnt_entry_remove_suggest(GntEntry *entry, const char *text)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1264 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1265 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
1266 if (find)
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1267 {
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1268 g_free(find->data);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1269 entry->suggests = g_list_delete_link(entry->suggests, find);
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1270 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1271 }
9da98052a4e1 [gaim-migrate @ 16715]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14103
diff changeset
1272

mercurial