--- a/configure.ac Fri Apr 09 22:14:51 2010 +0000
+++ b/configure.ac Tue Aug 31 18:28:10 2010 +0000
@@ -24,9 +24,9 @@
# Make sure to update ../../configure.ac with libgnt version changes.
-m4_define([gnt_lt_current], [7])
+m4_define([gnt_lt_current], [8]) m4_define([gnt_major_version], [2])
-m4_define([gnt_minor_version], [7])
+m4_define([gnt_minor_version], [8]) m4_define([gnt_micro_version], [0])
m4_define([gnt_version_suffix], [devel])
@@ -265,6 +265,10 @@
for location in $ac_ncurses_includes /usr/include/ncursesw /usr/include
+ orig_CPPFLAGS="$CPPFLAGS" + CFLAGS="$CFLAGS -I$location" + CPPFLAGS="$CPPFLAGS -I$location" AC_MSG_CHECKING([if $f supports wide characters])
@@ -283,9 +287,13 @@
+ CPPFLAGS="$orig_CPPFLAGS" + CPPFLAGS="$orig_CPPFLAGS" --- a/gntbox.c Fri Apr 09 22:14:51 2010 +0000
+++ b/gntbox.c Tue Aug 31 18:28:10 2010 +0000
@@ -422,7 +422,9 @@
gnt_widget_get_size(wid, &w, &h);
- if (wid != last && !child && w > 0 && h > 0 && gnt_widget_confirm_size(wid, w - wchange, h - hchange)) {
+ if (wid != last && !child && w > 0 && h > 0 && + !GNT_WIDGET_IS_FLAG_SET(wid, GNT_WIDGET_INVISIBLE) && + gnt_widget_confirm_size(wid, w - wchange, h - hchange)) { --- a/gntcombobox.c Fri Apr 09 22:14:51 2010 +0000
+++ b/gntcombobox.c Tue Aug 31 18:28:10 2010 +0000
@@ -25,6 +25,7 @@
@@ -149,12 +150,11 @@
gnt_combo_box_key_pressed(GntWidget *widget, const char *text)
GntComboBox *box = GNT_COMBO_BOX(widget);
- if (GNT_WIDGET_IS_FLAG_SET(box->dropdown->parent, GNT_WIDGET_MAPPED))
+ gboolean showing = !!GNT_WIDGET_IS_FLAG_SET(box->dropdown->parent, GNT_WIDGET_MAPPED); @@ -165,20 +165,42 @@
- if (gnt_widget_key_pressed(box->dropdown, text))
+ if (gnt_widget_key_pressed(box->dropdown, text)) {
- if (strcmp(text, GNT_KEY_UP) == 0 ||
- strcmp(text, GNT_KEY_DOWN) == 0)
+#define SEARCH_IN_RANGE(start, end) do { \ + for (row = start; row != end; \ + row = gnt_tree_row_get_next(tree, row)) { \ + gpointer key = gnt_tree_row_get_key(tree, row); \ + GList *list = gnt_tree_get_row_text_list(tree, key); \ + gboolean found = FALSE; \ + found = (list->data && g_ascii_strncasecmp(text, list->data, len) == 0); \ + g_list_foreach(list, (GFunc)g_free, NULL); \ + gnt_tree_set_selected(tree, key); \ + int len = strlen(text); + GntTree *tree = GNT_TREE(box->dropdown); + GntTreeRow *current = tree->current; + SEARCH_IN_RANGE(gnt_tree_row_get_next(tree, current), NULL); + SEARCH_IN_RANGE(tree->top, current); @@ -229,9 +251,20 @@
gnt_widget_set_size(box->dropdown, widget->priv.width - 1, box->dropdown->priv.height);
+dropdown_menu(GntBindable *b, GList *null) + if (GNT_WIDGET_IS_FLAG_SET(GNT_COMBO_BOX(b)->dropdown->parent, GNT_WIDGET_MAPPED)) + popup_dropdown(GNT_COMBO_BOX(b)); gnt_combo_box_class_init(GntComboBoxClass *klass)
+ GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass); parent_class = GNT_WIDGET_CLASS(klass);
parent_class->destroy = gnt_combo_box_destroy;
@@ -245,7 +278,7 @@
widget_lost_focus = parent_class->lost_focus;
parent_class->lost_focus = gnt_combo_box_lost_focus;
- signals[SIG_SELECTION_CHANGED] =
+ signals[SIG_SELECTION_CHANGED] = g_signal_new("selection-changed",
G_TYPE_FROM_CLASS(klass),
@@ -254,6 +287,12 @@
gnt_closure_marshal_VOID__POINTER_POINTER,
G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER);
+ gnt_bindable_class_register_action(bindable, "dropdown", dropdown_menu, + gnt_bindable_register_binding(bindable, "dropdown", GNT_KEY_UP, NULL); + gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), bindable); @@ -272,7 +311,7 @@
GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER | GNT_WIDGET_TRANSIENT);
gnt_box_set_pad(GNT_BOX(box), 0);
gnt_box_add_widget(GNT_BOX(box), combo->dropdown);
--- a/gntentry.c Fri Apr 09 22:14:51 2010 +0000
+++ b/gntentry.c Tue Aug 31 18:28:10 2010 +0000
@@ -480,8 +480,7 @@
GntEntry *entry = GNT_ENTRY(bind);
- const char *current , *pos;
if (entry->history->prev && entry->search->needle)
current = entry->search->needle;
@@ -491,13 +490,11 @@
if (!entry->histlength || !entry->history->next || !*current)
- len = g_utf8_strlen(current, -1);
for (iter = entry->history->next; iter; iter = iter->next) {
const char *str = iter->data;
/* A more utf8-friendly version of strstr would have been better, but
* for now, this will have to do. */
- if ((pos = strstr(str, current)))
+ if (strstr(str, current) != NULL) @@ -579,6 +576,28 @@
+suggest_next_page(GntBindable *bind, GList *null) + GntEntry *entry = GNT_ENTRY(bind); + gnt_bindable_perform_action_named(GNT_BINDABLE(entry->ddown), "page-down", NULL); +suggest_prev_page(GntBindable *bind, GList *null) + GntEntry *entry = GNT_ENTRY(bind); + gnt_bindable_perform_action_named(GNT_BINDABLE(entry->ddown), "page-up", NULL); del_to_home(GntBindable *bind, GList *null)
GntEntry *entry = GNT_ENTRY(bind);
@@ -986,6 +1005,10 @@
gnt_bindable_class_register_action(bindable, "suggest-prev", suggest_prev,
+ gnt_bindable_class_register_action(bindable, "suggest-next-page", suggest_next_page, + gnt_bindable_class_register_action(bindable, "suggest-prev-page", suggest_prev_page, gnt_bindable_class_register_action(bindable, "history-next", history_next,
GNT_KEY_CTRL_DOWN, NULL);
gnt_bindable_class_register_action(bindable, "history-prev", history_prev,
--- a/gnttextview.c Fri Apr 09 22:14:51 2010 +0000
+++ b/gnttextview.c Tue Aug 31 18:28:10 2010 +0000
@@ -711,7 +711,7 @@
int gnt_text_view_get_lines_above(GntTextView *view)
- GList *list = view->list;
list = g_list_nth(view->list, GNT_WIDGET(view)->priv.height);
--- a/gnttree.c Fri Apr 09 22:14:51 2010 +0000
+++ b/gnttree.c Tue Aug 31 18:28:10 2010 +0000
@@ -1926,3 +1926,33 @@
return (row && row->parent) ? row->parent->key : NULL;
+gpointer gnt_tree_row_get_key(GntTree *tree, GntTreeRow *row) + g_return_val_if_fail(row && row->tree == tree, NULL); +GntTreeRow * gnt_tree_row_get_next(GntTree *tree, GntTreeRow *row) + g_return_val_if_fail(row && row->tree == tree, NULL); +GntTreeRow * gnt_tree_row_get_prev(GntTree *tree, GntTreeRow *row) + g_return_val_if_fail(row && row->tree == tree, NULL); +GntTreeRow * gnt_tree_row_get_child(GntTree *tree, GntTreeRow *row) + g_return_val_if_fail(row && row->tree == tree, NULL); +GntTreeRow * gnt_tree_row_get_parent(GntTree *tree, GntTreeRow *row) + g_return_val_if_fail(row && row->tree == tree, NULL); --- a/gnttree.h Fri Apr 09 22:14:51 2010 +0000
+++ b/gnttree.h Tue Aug 31 18:28:10 2010 +0000
@@ -222,6 +222,61 @@
GList * gnt_tree_get_row_text_list(GntTree *tree, gpointer key);
+ * Get the key of a row. + * @param row The GntTreeRow object + * @return The key of the row. + * @since 2.8.0 (gnt), 2.7.2 (pidgin) +gpointer gnt_tree_row_get_key(GntTree *tree, GntTreeRow *row); + * @param row The GntTreeRow object + * @return The next row. + * @since 2.8.0 (gnt), 2.7.2 (pidgin) +GntTreeRow * gnt_tree_row_get_next(GntTree *tree, GntTreeRow *row); + * Get the previous row. + * @param row The GntTreeRow object + * @return The previous row. + * @since 2.8.0 (gnt), 2.7.2 (pidgin) +GntTreeRow * gnt_tree_row_get_prev(GntTree *tree, GntTreeRow *row); + * @param row The GntTreeRow object + * @return The child row. + * @since 2.8.0 (gnt), 2.7.2 (pidgin) +GntTreeRow * gnt_tree_row_get_child(GntTree *tree, GntTreeRow *row); + * @param row The GntTreeRow object + * @return The parent row. + * @since 2.8.0 (gnt), 2.7.2 (pidgin) +GntTreeRow * gnt_tree_row_get_parent(GntTree *tree, GntTreeRow *row); * Get a list of text of the current row.
--- a/gntutils.c Fri Apr 09 22:14:51 2010 +0000
+++ b/gntutils.c Tue Aug 31 18:28:10 2010 +0000
@@ -385,7 +385,6 @@
- gboolean processed = FALSE;
gboolean insert_nl_s = FALSE, insert_nl_e = FALSE;
@@ -426,17 +425,14 @@
for (ch = node->children; ch; ch = ch->next) {
if (ch->type == XML_ELEMENT_NODE) {
util_parse_html_to_tv(ch, tv, flag);
+ } else if (ch->type == XML_TEXT_NODE) { + content = (char*)xmlNodeGetContent(ch); + gnt_text_view_append_text_with_flags(tv, content, flag);
- content = (char*)xmlNodeGetContent(node);
- gnt_text_view_append_text_with_flags(tv, content, flag);
char *href = g_strdup_printf(" (%s)", url);
gnt_text_view_append_text_with_flags(tv, href, flag);