Mercurial > pidgin
diff console/libgnt/gntentry.c @ 13882:5c750626eaa5
[gaim-migrate @ 16362]
New widget GntTextView. It's really simple as it is. But it 'works'.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Wed, 28 Jun 2006 00:17:35 +0000 |
parents | 0d0ab1e39d0a |
children | 9d66969a2e32 |
line wrap: on
line diff
--- a/console/libgnt/gntentry.c Tue Jun 27 21:55:47 2006 +0000 +++ b/console/libgnt/gntentry.c Wed Jun 28 00:17:35 2006 +0000 @@ -29,8 +29,12 @@ gnt_entry_size_request(GntWidget *widget) { GntEntry *entry = GNT_ENTRY(widget); - widget->priv.height = 1; - widget->priv.width = 20; + + if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED)) + { + widget->priv.height = 1; + widget->priv.width = 20; + } } static void @@ -41,6 +45,13 @@ DEBUG; } +static void +entry_redraw(GntWidget *widget) +{ + gnt_entry_draw(widget); + gnt_widget_queue_update(widget); +} + static gboolean gnt_entry_key_pressed(GntWidget *widget, const char *text) { @@ -52,21 +63,21 @@ { memmove(entry->cursor, entry->cursor + 1, entry->end - entry->cursor + 1); entry->end--; - gnt_entry_draw(widget); + entry_redraw(widget); } else if (strcmp(text + 1, GNT_KEY_LEFT) == 0 && entry->cursor > entry->start) { entry->cursor--; if (entry->cursor < entry->scroll) entry->scroll--; - gnt_entry_draw(widget); + 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++; - gnt_entry_draw(widget); + entry_redraw(widget); } /* XXX: handle other keys, like home/end, and ctrl+ goodness */ } @@ -106,7 +117,8 @@ if (entry->cursor - entry->scroll > widget->priv.width) entry->scroll++; } - gnt_entry_draw(widget); + entry_redraw(widget); + return TRUE; } else { @@ -120,7 +132,7 @@ if (entry->scroll > entry->start) entry->scroll--; - gnt_entry_draw(widget); + entry_redraw(widget); } } } @@ -233,7 +245,8 @@ entry->scroll = entry->start + scroll; entry->cursor = entry->end - cursor; - /* XXX: redraw if necessary? */ + if (GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(entry), GNT_WIDGET_MAPPED)) + entry_redraw(GNT_WIDGET(entry)); } void gnt_entry_set_max(GntEntry *entry, int max) @@ -247,3 +260,16 @@ /* XXX: Check the existing string to make sure the flags are respected? */ } +const char *gnt_entry_get_text(GntEntry *entry) +{ + return entry->start; +} + +void gnt_entry_clear(GntEntry *entry) +{ + gnt_entry_set_text(entry, NULL); + entry->scroll = entry->cursor = entry->end = entry->start; + entry_redraw(GNT_WIDGET(entry)); +} + +