From: <sa...@us...> - 2006-08-05 02:10:36
|
Revision: 16630 Author: sadrul Date: 2006-08-04 19:10:30 -0700 (Fri, 04 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16630&view=rev Log Message: ----------- Allow non-ascii characters to be entered in GntEntry. And indicate the position of the cursor in the box. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-08-03 09:31:32 UTC (rev 16629) +++ trunk/console/libgnt/gntentry.c 2006-08-05 02:10:30 UTC (rev 16630) @@ -25,15 +25,18 @@ if (entry->masked) { mvwhline(widget->window, 0, 0, gnt_ascii_only() ? '*' : ACS_BULLET, - entry->end - entry->scroll); + g_utf8_pointer_to_offset(entry->scroll, entry->end)); } else mvwprintw(widget->window, 0, 0, entry->scroll); - stop = entry->end - entry->scroll; + stop = g_utf8_pointer_to_offset(entry->scroll, entry->end); if (stop < widget->priv.width) mvwhline(widget->window, 0, stop, ENTRY_CHAR, widget->priv.width - stop); + mvwchgat(widget->window, 0, g_utf8_pointer_to_offset(entry->scroll, entry->cursor), 1, + A_REVERSE, COLOR_PAIR(GNT_COLOR_TEXT_NORMAL), NULL); + DEBUG; } @@ -71,22 +74,23 @@ { if (strcmp(text + 1, GNT_KEY_DEL) == 0 && entry->cursor < entry->end) { - memmove(entry->cursor, entry->cursor + 1, entry->end - entry->cursor + 1); - entry->end--; + int len = g_utf8_find_next_char(entry->cursor, NULL) - entry->cursor; + memmove(entry->cursor, entry->cursor + len, entry->end - entry->cursor - len + 1); + entry->end -= len; entry_redraw(widget); } else if (strcmp(text + 1, GNT_KEY_LEFT) == 0 && entry->cursor > entry->start) { - entry->cursor--; + entry->cursor = g_utf8_find_prev_char(entry->start, entry->cursor); if (entry->cursor < entry->scroll) - entry->scroll--; + entry->scroll = entry->cursor; entry_redraw(widget); } else if (strcmp(text + 1, GNT_KEY_RIGHT) == 0 && entry->cursor < entry->end) { - entry->cursor++; - if (entry->cursor - entry->scroll > widget->priv.width) - entry->scroll++; + entry->cursor = g_utf8_find_next_char(entry->cursor, NULL); + if (g_utf8_pointer_to_offset(entry->scroll, entry->cursor) >= widget->priv.width) + entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); entry_redraw(widget); } /* XXX: handle other keys, like home/end, and ctrl+ goodness */ @@ -99,37 +103,44 @@ { if (!iscntrl(text[0])) { - int i; + const char *str, *next; - for (i = 0; text[i]; i++) + for (str = text; *str;) { + int len; + next = g_utf8_find_next_char(str, NULL); + len = next - str; + /* Valid input? */ - if (ispunct(text[i]) && (entry->flag & GNT_ENTRY_FLAG_NO_PUNCT)) + /* XXX: Is it necessary to use _unichar_ variants here? */ + if (ispunct(*str) && (entry->flag & GNT_ENTRY_FLAG_NO_PUNCT)) continue; - if (isspace(text[i]) && (entry->flag & GNT_ENTRY_FLAG_NO_SPACE)) + if (isspace(*str) && (entry->flag & GNT_ENTRY_FLAG_NO_SPACE)) continue; - if (isalpha(text[i]) && !(entry->flag & GNT_ENTRY_FLAG_ALPHA)) + if (isalpha(*str) && !(entry->flag & GNT_ENTRY_FLAG_ALPHA)) continue; - if (isdigit(text[i]) && !(entry->flag & GNT_ENTRY_FLAG_INT)) + if (isdigit(*str) && !(entry->flag & GNT_ENTRY_FLAG_INT)) continue; /* Reached the max? */ - if (entry->max && entry->end - entry->start >= entry->max) + if (entry->max && g_utf8_pointer_to_offset(entry->start, entry->end) >= entry->max) continue; - if (entry->end - entry->start >= entry->buffer) + if (g_utf8_pointer_to_offset(entry->start, entry->end) >= entry->buffer) { char *tmp = g_strdup_printf(entry->start); gnt_entry_set_text(entry, tmp); g_free(tmp); } - *(entry->cursor) = text[i]; - entry->cursor++; + memmove(entry->cursor + len, entry->cursor, entry->end - entry->cursor + 1); + entry->end += len; - entry->end++; - if (entry->cursor - entry->scroll > widget->priv.width) - entry->scroll++; + while (str < next) + *(entry->cursor++) = *str++; + + while (g_utf8_pointer_to_offset(entry->scroll, entry->cursor) >= widget->priv.width) + entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); } entry_redraw(widget); return TRUE; @@ -139,12 +150,13 @@ /* Backspace is here */ if (strcmp(text, GNT_KEY_BACKSPACE) == 0 && entry->cursor > entry->start) { - entry->cursor--; - memmove(entry->cursor, entry->cursor + 1, entry->end - entry->cursor); - entry->end--; + int len = entry->cursor - g_utf8_find_prev_char(entry->start, entry->cursor); + entry->cursor -= len; + memmove(entry->cursor, entry->cursor + len, entry->end - entry->cursor); + entry->end -= len; if (entry->scroll > entry->start) - entry->scroll--; + entry->scroll = g_utf8_find_prev_char(entry->start, entry->scroll); entry_redraw(widget); return TRUE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-05 03:20:21
|
Revision: 16633 Author: sadrul Date: 2006-08-04 20:20:14 -0700 (Fri, 04 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16633&view=rev Log Message: ----------- Do not crash. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-08-05 02:56:18 UTC (rev 16632) +++ trunk/console/libgnt/gntentry.c 2006-08-05 03:20:14 UTC (rev 16633) @@ -126,7 +126,7 @@ if (entry->max && g_utf8_pointer_to_offset(entry->start, entry->end) >= entry->max) continue; - if (g_utf8_pointer_to_offset(entry->start, entry->end) >= entry->buffer) + if (entry->end - entry->start >= entry->buffer) { char *tmp = g_strdup_printf(entry->start); gnt_entry_set_text(entry, tmp); @@ -255,15 +255,15 @@ if (text && text[0]) { - len = g_utf8_strlen(text, -1); - entry->buffer = len * 2; + len = strlen(text); } else { - entry->buffer = 128; len = 0; } + entry->buffer = len + 128; + scroll = entry->scroll - entry->start; cursor = entry->end - entry->cursor; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-12 15:17:19
|
Revision: 16723 Author: sadrul Date: 2006-08-12 08:17:14 -0700 (Sat, 12 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16723&view=rev Log Message: ----------- Tab-completion should be case-insensitive. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-08-12 12:57:16 UTC (rev 16722) +++ trunk/console/libgnt/gntentry.c 2006-08-12 15:17:14 UTC (rev 16723) @@ -80,7 +80,7 @@ for (count = 0, iter = entry->suggests; iter; iter = iter->next) { const char *text = iter->data; - if (strncmp(suggest, text, len) == 0 && strlen(text) >= len) + if (g_ascii_strncasecmp(suggest, text, len) == 0 && strlen(text) >= len) { gnt_tree_add_row_after(GNT_TREE(entry->ddown), (gpointer)text, gnt_tree_create_row(GNT_TREE(entry->ddown), text), @@ -258,10 +258,9 @@ { char *s = get_beginning_of_word(entry); char *iter = text; - while (*s == *iter) + while (toupper(*s) == toupper(*iter)) { - s++; - iter++; + *s++ = *iter++; } gnt_entry_key_pressed(widget, iter); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-23 07:14:23
|
Revision: 16997 Author: sadrul Date: 2006-08-23 00:14:19 -0700 (Wed, 23 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16997&view=rev Log Message: ----------- Double-width characters should work well in GntEntry's now. If it really works correctly, I can make necessary changes in textview and other places, so let me know. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-08-23 05:16:40 UTC (rev 16996) +++ trunk/console/libgnt/gntentry.c 2006-08-23 07:14:19 UTC (rev 16997) @@ -1,5 +1,7 @@ #include <ctype.h> +#include <stdlib.h> #include <string.h> +#include <wchar.h> #include "gntbox.h" #include "gntentry.h" @@ -13,6 +15,25 @@ static GntWidgetClass *parent_class = NULL; static guint signals[SIGS] = { 0 }; +static int +get_onscreen_width(const char *start, const char *end) +{ + wchar_t wch; + size_t size; + int width = 0; + + while (start < end) { + if ((size = mbtowc(&wch, start, end - start)) > 0) { + start += size; + width += wcwidth(wch); + } else { + ++width; + ++start; + } + } + return width; +} + static void destroy_suggest(GntEntry *entry) { @@ -51,7 +72,7 @@ char *s = get_beginning_of_word(entry); suggest = g_strndup(s, entry->cursor - s); if (entry->scroll < s) - offset = g_utf8_pointer_to_offset(entry->scroll, s); + offset = get_onscreen_width(entry->scroll, s); } else suggest = g_strdup(entry->start); @@ -118,14 +139,14 @@ g_utf8_pointer_to_offset(entry->scroll, entry->end)); } else - mvwprintw(widget->window, 0, 0, entry->scroll); + mvwprintw(widget->window, 0, 0, "%s", entry->scroll); - stop = g_utf8_pointer_to_offset(entry->scroll, entry->end); + stop = get_onscreen_width(entry->scroll, entry->end); if (stop < widget->priv.width) - mvwhline(widget->window, 0, stop, ENTRY_CHAR, widget->priv.width - stop); + whline(widget->window, ENTRY_CHAR, widget->priv.width - stop); if (focus) - mvwchgat(widget->window, 0, g_utf8_pointer_to_offset(entry->scroll, entry->cursor), + mvwchgat(widget->window, 0, get_onscreen_width(entry->scroll, entry->cursor), 1, A_REVERSE, COLOR_PAIR(GNT_COLOR_TEXT_NORMAL), NULL); DEBUG; @@ -173,7 +194,7 @@ if (entry->cursor >= entry->end) return; entry->cursor = g_utf8_find_next_char(entry->cursor, NULL); - if (g_utf8_pointer_to_offset(entry->scroll, entry->cursor) >= GNT_WIDGET(entry)->priv.width) + while (get_onscreen_width(entry->scroll, entry->cursor) >= GNT_WIDGET(entry)->priv.width) entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); entry_redraw(GNT_WIDGET(entry)); } @@ -228,7 +249,7 @@ { entry->cursor = entry->end; /* This should be better than this */ - while (g_utf8_pointer_to_offset(entry->scroll, entry->cursor) >= GNT_WIDGET(entry)->priv.width) + while (get_onscreen_width(entry->scroll, entry->cursor) >= GNT_WIDGET(entry)->priv.width) entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); entry_redraw(GNT_WIDGET(entry)); } @@ -389,7 +410,7 @@ str++; } - while (g_utf8_pointer_to_offset(entry->scroll, entry->cursor) >= widget->priv.width) + while (get_onscreen_width(entry->scroll, entry->cursor) >= widget->priv.width) entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); if (entry->ddown) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-08-23 10:48:30
|
Revision: 16999 Author: sadrul Date: 2006-08-23 03:48:21 -0700 (Wed, 23 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16999&view=rev Log Message: ----------- guard against possible crashes. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-08-23 08:02:05 UTC (rev 16998) +++ trunk/console/libgnt/gntentry.c 2006-08-23 10:48:21 UTC (rev 16999) @@ -19,7 +19,7 @@ get_onscreen_width(const char *start, const char *end) { wchar_t wch; - size_t size; + int size; int width = 0; while (start < end) { @@ -351,7 +351,7 @@ { char *s = get_beginning_of_word(entry); char *iter = text; - while (toupper(*s) == toupper(*iter)) + while (*iter && toupper(*s) == toupper(*iter)) { *s++ = *iter++; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-09-18 03:17:16
|
Revision: 17302 http://svn.sourceforge.net/gaim/?rev=17302&view=rev Author: sadrul Date: 2006-09-17 20:17:11 -0700 (Sun, 17 Sep 2006) Log Message: ----------- Auto-completion can have non-alpha characters. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-09-18 02:53:54 UTC (rev 17301) +++ trunk/console/libgnt/gntentry.c 2006-09-18 03:17:11 UTC (rev 17302) @@ -31,7 +31,7 @@ while (s > entry->start) { char *t = g_utf8_find_prev_char(entry->start, s); - if ((*t < 'A' || *t > 'Z') && (*t < 'a' || *t > 'z')) + if (isspace(*t)) break; s = t; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-09-26 18:21:17
|
Revision: 17357 http://svn.sourceforge.net/gaim/?rev=17357&view=rev Author: sadrul Date: 2006-09-26 11:21:14 -0700 (Tue, 26 Sep 2006) Log Message: ----------- RTFM. This makes the cursor more visible in entry-boxes. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-09-26 17:38:09 UTC (rev 17356) +++ trunk/console/libgnt/gntentry.c 2006-09-26 18:21:14 UTC (rev 17357) @@ -128,7 +128,7 @@ if (focus) mvwchgat(widget->window, 0, gnt_util_onscreen_width(entry->scroll, entry->cursor), - 1, A_REVERSE, COLOR_PAIR(GNT_COLOR_TEXT_NORMAL), NULL); + 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL, NULL); GNTDEBUG; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-17 21:46:52
|
Revision: 17502 http://svn.sourceforge.net/gaim/?rev=17502&view=rev Author: sadrul Date: 2006-10-17 14:46:09 -0700 (Tue, 17 Oct 2006) Log Message: ----------- This should fix the last crash. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-10-17 20:44:05 UTC (rev 17501) +++ trunk/console/libgnt/gntentry.c 2006-10-17 21:46:09 UTC (rev 17502) @@ -370,9 +370,10 @@ if (entry->max && g_utf8_pointer_to_offset(entry->start, entry->end) >= entry->max) continue; - if (entry->end - entry->start >= entry->buffer) + if (entry->end + len - entry->start >= entry->buffer) { - char *tmp = g_strdup_printf(entry->start); + /* This will cause the buffer to grow */ + char *tmp = g_strdup_printf("%s%*s", entry->start, len, ""); gnt_entry_set_text(entry, tmp); g_free(tmp); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-28 04:59:16
|
Revision: 17594 http://svn.sourceforge.net/gaim/?rev=17594&view=rev Author: sadrul Date: 2006-10-27 21:59:07 -0700 (Fri, 27 Oct 2006) Log Message: ----------- Fix the bindings for scrolling through the histories in the entrybox. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-10-28 04:55:07 UTC (rev 17593) +++ trunk/console/libgnt/gntentry.c 2006-10-28 04:59:07 UTC (rev 17594) @@ -523,9 +523,9 @@ gnt_widget_class_register_action(parent_class, "suggest-prev", suggest_prev, "\033" GNT_KEY_UP, NULL); gnt_widget_class_register_action(parent_class, "history-prev", history_prev, + "\033" GNT_KEY_CTRL_DOWN, NULL); + gnt_widget_class_register_action(parent_class, "history-next", history_next, "\033" GNT_KEY_CTRL_UP, NULL); - gnt_widget_class_register_action(parent_class, "history-next", history_next, - "\033" GNT_KEY_CTRL_DOWN, NULL); gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), klass); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-28 06:01:36
|
Revision: 17595 http://svn.sourceforge.net/gaim/?rev=17595&view=rev Author: sadrul Date: 2006-10-27 23:01:30 -0700 (Fri, 27 Oct 2006) Log Message: ----------- Two new actions for the entry box: "delete-prev-word" and "cursor-prev-word". I haven't set any default binding for either. But I think ctrl-w is a common binding for the first action. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-10-28 04:59:07 UTC (rev 17594) +++ trunk/console/libgnt/gntentry.c 2006-10-28 06:01:30 UTC (rev 17595) @@ -334,7 +334,64 @@ return TRUE; } +static const char * +begin_word(const char *text, const char *begin) +{ + char ch; + ch = *text; +#define SAME(a,b) ((isalpha(a) && isalpha(b)) || (isdigit(a) && isdigit(b)) || (isblank(a) && isblank(b))) + while (--text >= begin) { + if (!SAME(ch, *text)) + break; + } +#undef SAME + + return ++text; +} + static gboolean +move_back_word(GntWidget *widget, GList *null) +{ + GntEntry *entry = GNT_ENTRY(widget); + const char *iter = entry->cursor - 1; + int count; + + if (iter < entry->start) + return TRUE; + iter = begin_word(iter, entry->start); + entry->cursor = (char*)iter; + if (entry->cursor < entry->scroll) + entry->scroll = entry->cursor; + entry_redraw(widget); + return TRUE; +} + +static gboolean +del_prev_word(GntWidget *widget, GList *null) +{ + GntEntry *entry = GNT_ENTRY(widget); + char *iter = entry->cursor - 1; + int count; + + if (iter < entry->start) + return TRUE; + iter = (char*)begin_word(iter, entry->start); + count = entry->cursor - iter; + memmove(iter, entry->cursor, entry->end - entry->cursor); + entry->end -= count; + entry->cursor = iter; + if (entry->cursor <= entry->scroll) { + entry->scroll = entry->cursor - widget->priv.width + 2; + if (entry->scroll < entry->start) + entry->scroll = entry->start; + } + memset(entry->end, '\0', entry->buffer - (entry->end - entry->start)); + entry_redraw(widget); + + return TRUE; +} + +static gboolean gnt_entry_key_pressed(GntWidget *widget, const char *text) { GntEntry *entry = GNT_ENTRY(widget); @@ -506,12 +563,14 @@ GNT_KEY_CTRL_U, NULL); gnt_widget_class_register_action(parent_class, "delete-end", del_to_end, GNT_KEY_CTRL_K, NULL); + gnt_widget_class_register_action(parent_class, "delete-prev-word", del_prev_word, + NULL, NULL); #if 0 - gnt_widget_class_register_action(parent_class, "delete-prev-word", del_prev_word, - NULL, 1, NULL); gnt_widget_class_register_action(parent_class, "delete-next-word", del_next_word, NULL, 1, NULL); #endif + gnt_widget_class_register_action(parent_class, "cursor-prev-word", move_back_word, + NULL, NULL); gnt_widget_class_register_action(parent_class, "cursor-prev", move_back, "\033" GNT_KEY_LEFT, NULL); gnt_widget_class_register_action(parent_class, "cursor-next", move_forward, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ebl...@us...> - 2006-10-31 21:36:34
|
Revision: 17640 http://svn.sourceforge.net/gaim/?rev=17640&view=rev Author: eblanton Date: 2006-10-31 13:36:27 -0800 (Tue, 31 Oct 2006) Log Message: ----------- C-b and C-f should move the cursor back and forward, respectively, in gntentry Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-10-31 20:47:51 UTC (rev 17639) +++ trunk/console/libgnt/gntentry.c 2006-10-31 21:36:27 UTC (rev 17640) @@ -573,8 +573,12 @@ NULL, NULL); gnt_widget_class_register_action(parent_class, "cursor-prev", move_back, "\033" GNT_KEY_LEFT, NULL); + gnt_widget_class_register_action(parent_class, "cursor-prev", move_back, + GNT_KEY_CTRL_B, NULL); gnt_widget_class_register_action(parent_class, "cursor-next", move_forward, "\033" GNT_KEY_RIGHT, NULL); + gnt_widget_class_register_action(parent_class, "cursor-next", move_forward, + GNT_KEY_CTRL_F, NULL); gnt_widget_class_register_action(parent_class, "suggest-show", suggest_show, "\t", NULL); gnt_widget_class_register_action(parent_class, "suggest-next", suggest_next, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-31 23:01:43
|
Revision: 17641 http://svn.sourceforge.net/gaim/?rev=17641&view=rev Author: sadrul Date: 2006-10-31 15:01:39 -0800 (Tue, 31 Oct 2006) Log Message: ----------- Registering the same action causes crashes. Register action once with a default binding, and then register other bindings for that action if necessary. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-10-31 21:36:27 UTC (rev 17640) +++ trunk/console/libgnt/gntentry.c 2006-10-31 23:01:39 UTC (rev 17641) @@ -573,12 +573,10 @@ NULL, NULL); gnt_widget_class_register_action(parent_class, "cursor-prev", move_back, "\033" GNT_KEY_LEFT, NULL); - gnt_widget_class_register_action(parent_class, "cursor-prev", move_back, - GNT_KEY_CTRL_B, NULL); + gnt_widget_register_binding(parent_class, "cursor-prev", GNT_KEY_CTRL_B, NULL); gnt_widget_class_register_action(parent_class, "cursor-next", move_forward, "\033" GNT_KEY_RIGHT, NULL); - gnt_widget_class_register_action(parent_class, "cursor-next", move_forward, - GNT_KEY_CTRL_F, NULL); + gnt_widget_register_binding(parent_class, "cursor-next", GNT_KEY_CTRL_F, NULL); gnt_widget_class_register_action(parent_class, "suggest-show", suggest_show, "\t", NULL); gnt_widget_class_register_action(parent_class, "suggest-next", suggest_next, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-11-05 17:37:26
|
Revision: 17673 http://svn.sourceforge.net/gaim/?rev=17673&view=rev Author: sadrul Date: 2006-11-05 09:37:09 -0800 (Sun, 05 Nov 2006) Log Message: ----------- erasechar() returns the erase character (VERASE) from termios. This may solve the backspace problem for Sebastian Noack. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-11-05 17:28:33 UTC (rev 17672) +++ trunk/console/libgnt/gntentry.c 2006-11-05 17:37:09 UTC (rev 17673) @@ -536,6 +536,8 @@ gnt_entry_class_init(GntEntryClass *klass) { GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass); + char s[2] = {erasechar(), 0}; + parent_class = GNT_WIDGET_CLASS(klass); parent_class->destroy = gnt_entry_destroy; parent_class->draw = gnt_entry_draw; @@ -552,6 +554,7 @@ gnt_bindable_register_binding(bindable, "cursor-end", GNT_KEY_END, NULL); gnt_bindable_class_register_action(bindable, "delete-prev", backspace, GNT_KEY_BACKSPACE, NULL); + gnt_bindable_register_binding(bindable, "delete-prev", s, NULL); gnt_bindable_class_register_action(bindable, "delete-next", delkey, GNT_KEY_DEL, NULL); gnt_bindable_register_binding(bindable, "delete-next", GNT_KEY_CTRL_D, NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-12-07 07:05:05
|
Revision: 17911 http://svn.sourceforge.net/gaim/?rev=17911&view=rev Author: sadrul Date: 2006-12-06 23:01:32 -0800 (Wed, 06 Dec 2006) Log Message: ----------- Add action delete-next-word with a-d as the default binding. Unfortunately, this is also the default binding for the wm to dump an html screenshot. So you will need to unbind that first to make this work. Modified Paths: -------------- trunk/console/libgnt/gntentry.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-12-07 06:43:37 UTC (rev 17910) +++ trunk/console/libgnt/gntentry.c 2006-12-07 07:01:32 UTC (rev 17911) @@ -428,14 +428,16 @@ } static gboolean -move_forward_word(GntBindable *bind, GList *list) +delete_forward_word(GntBindable *bind, GList *list) { GntEntry *entry = GNT_ENTRY(bind); GntWidget *widget = GNT_WIDGET(bind); - entry->cursor = (char *)next_begin_word(entry->cursor, entry->end); - while (gnt_util_onscreen_width(entry->scroll, entry->cursor) >= widget->priv.width) { - entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); - } + char *iter = (char *)next_begin_word(entry->cursor, entry->end); + int len = entry->end - iter + 1; + memmove(entry->cursor, iter, len); + len = iter - entry->cursor; + entry->end -= len; + memset(entry->end, '\0', len); entry_redraw(widget); return TRUE; } @@ -627,7 +629,7 @@ gnt_bindable_register_binding(bindable, "cursor-next", GNT_KEY_CTRL_F, NULL); gnt_bindable_class_register_action(bindable, "cursor-next-word", move_forward_word, "\033" "f", NULL); - gnt_bindable_class_register_action(bindable, "cursor-next-word", delete_forward_word, + gnt_bindable_class_register_action(bindable, "delete-next-word", delete_forward_word, "\033" "d", NULL); gnt_bindable_class_register_action(bindable, "suggest-show", suggest_show, "\t", NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |