--- a/configure.ac Mon Mar 02 04:18:40 2009 +0000
+++ b/configure.ac Wed Aug 19 00:46:04 2009 +0000
@@ -24,11 +24,11 @@
# Make sure to update ../../configure.ac with libgnt version changes.
-m4_define([gnt_lt_current], [5])
+m4_define([gnt_lt_current], [6]) m4_define([gnt_major_version], [2])
-m4_define([gnt_minor_version], [5])
-m4_define([gnt_micro_version], [0])
-m4_define([gnt_version_suffix], [])
+m4_define([gnt_minor_version], [6]) +m4_define([gnt_micro_version], [2]) +m4_define([gnt_version_suffix], [devel]) [gnt_major_version.gnt_minor_version.gnt_micro_version])
m4_define([gnt_display_version], gnt_version[]m4_ifdef([gnt_version_suffix],[gnt_version_suffix]))
--- a/gnt.h Mon Mar 02 04:18:40 2009 +0000
+++ b/gnt.h Wed Aug 19 00:46:04 2009 +0000
@@ -48,6 +48,10 @@
#define G_PARAM_STATIC_BLURB G_PARAM_PRIVATE
+#if !GLIB_CHECK_VERSION(2,14,0) + #define g_timeout_add_seconds(time, callback, data) g_timeout_add(time * 1000, callback, data) --- a/gntbox.c Mon Mar 02 04:18:40 2009 +0000
+++ b/gntbox.c Wed Aug 19 00:46:04 2009 +0000
@@ -78,13 +78,11 @@
g_list_foreach(box->list, (GFunc)gnt_widget_draw, NULL);
- gnt_box_sync_children(box);
if (box->title && !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
char *title = g_strdup(box->title);
get_title_thingies(box, title, &pos, &right);
if (gnt_widget_has_focus(widget))
@@ -96,8 +94,8 @@
mvwaddch(widget->window, 0, right, ACS_LTEE | gnt_color_pair(GNT_COLOR_NORMAL));
+ gnt_box_sync_children(box); @@ -723,6 +721,9 @@
if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER))
+ find_focusable_widget(box); for (iter = box->list; iter; iter = iter->next)
GntWidget *w = GNT_WIDGET(iter->data);
@@ -764,6 +765,9 @@
copywin(w->window, widget->window, 0, 0,
y, x, y + height - 1, x + width - 1, FALSE);
gnt_widget_set_position(w, x + widget->priv.x, y + widget->priv.y);
+ if (w == box->active) { + wmove(widget->window, y + getcury(w->window), x + getcurx(w->window)); --- a/gntcheckbox.c Mon Mar 02 04:18:40 2009 +0000
+++ b/gntcheckbox.c Wed Aug 19 00:46:04 2009 +0000
@@ -42,7 +42,7 @@
type = GNT_COLOR_HIGHLIGHT;
wbkgdset(widget->window, '\0' | gnt_color_pair(type));
text = g_strdup_printf("[%c]", cb->checked ? 'X' : ' ');
@@ -51,7 +51,8 @@
wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_NORMAL));
mvwaddstr(widget->window, 0, 4, GNT_BUTTON(cb)->priv->text);
+ wmove(widget->window, 0, 1); --- a/gntcombobox.c Mon Mar 02 04:18:40 2009 +0000
+++ b/gntcombobox.c Wed Aug 19 00:46:04 2009 +0000
@@ -73,7 +73,7 @@
if (box->dropdown && box->selected)
text = gnt_tree_get_selection_text(GNT_TREE(box->dropdown));
@@ -94,6 +94,7 @@
whline(widget->window, ' ' | gnt_color_pair(type), widget->priv.width - 4 - len);
mvwaddch(widget->window, 1, widget->priv.width - 3, ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL));
mvwaddch(widget->window, 1, widget->priv.width - 2, ACS_DARROW | gnt_color_pair(GNT_COLOR_NORMAL));
+ wmove(widget->window, 1, 1); --- a/gntentry.c Mon Mar 02 04:18:40 2009 +0000
+++ b/gntentry.c Wed Aug 19 00:46:04 2009 +0000
@@ -271,6 +271,7 @@
GntEntry *entry = GNT_ENTRY(widget);
if ((focus = gnt_widget_has_focus(widget)))
wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_TEXT_NORMAL));
@@ -289,9 +290,10 @@
if (stop < widget->priv.width)
mvwhline(widget->window, 0, stop, ENTRY_CHAR, widget->priv.width - stop);
+ curpos = gnt_util_onscreen_width(entry->scroll, entry->cursor); - mvwchgat(widget->window, 0, gnt_util_onscreen_width(entry->scroll, entry->cursor),
- 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL, NULL);
+ mvwchgat(widget->window, 0, curpos, 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL, NULL); + wmove(widget->window, 0, curpos); --- a/gntkeys.c Mon Mar 02 04:18:40 2009 +0000
+++ b/gntkeys.c Wed Aug 19 00:46:04 2009 +0000
@@ -166,7 +166,7 @@
strstr(term, "xterm") == term ||
strstr(term, "vt100") == term)
- } else if (*(unsigned char*)text == 195) {
+ } else if (g_utf8_get_char(text) == 195) { if (*(text + 2) == 0 && strstr(term, "xterm") == term) {
*(text + 1) -= 64; /* Say wha? */
--- a/gnttextview.c Mon Mar 02 04:18:40 2009 +0000
+++ b/gnttextview.c Wed Aug 19 00:46:04 2009 +0000
@@ -177,7 +177,7 @@
gnt_color_pair(GNT_COLOR_HIGHLIGHT_D));
+ wmove(widget->window, 0, 0); @@ -799,6 +799,7 @@
+ gnt_widget_draw(GNT_WIDGET(view)); --- a/gnttree.c Mon Mar 02 04:18:40 2009 +0000
+++ b/gnttree.c Wed Aug 19 00:46:04 2009 +0000
@@ -28,7 +28,7 @@
-#define SEARCH_TIMEOUT 4000 /* 4 secs */
+#define SEARCH_TIMEOUT_S 4 /* 4 secs */ #define SEARCHING(tree) (tree->priv->search && tree->priv->search->len > 0)
#define COLUMN_INVISIBLE(tree, index) (tree->columns[index].flags & GNT_TREE_COLUMN_INVISIBLE)
@@ -420,6 +420,7 @@
if (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_MAPPED))
@@ -431,7 +432,7 @@
- if (tree->current == NULL) {
+ if (tree->current == NULL && tree->root != NULL) { tree->current = tree->root;
tree_selection_changed(tree, NULL, tree->current);
@@ -490,6 +491,13 @@
tree->top = get_next(tree->top);
scrcol = widget->priv.width - 1 - 2 * pos; /* exclude the borders and the scrollbar */
+ if (tree->current && !row_matches_search(tree->current)) { + GntTreeRow *old = tree->current; + tree->current = tree->top; + tree_selection_changed(tree, old, tree->current); for (i = start + pos; row && i < widget->priv.height - pos;
i++, row = get_next(row))
@@ -518,6 +526,7 @@
if (row == tree->current)
if (gnt_widget_has_focus(widget))
attr |= gnt_color_pair(GNT_COLOR_HIGHLIGHT);
@@ -606,6 +615,7 @@
mvwaddnstr(widget->window, widget->priv.height - pos - 1, pos,
tree->priv->search->str, str - tree->priv->search->str);
+ wmove(widget->window, current, pos); gnt_widget_queue_update(widget);
@@ -818,7 +828,7 @@
gnt_bindable_perform_action_key(GNT_BINDABLE(tree), text);
g_source_remove(tree->priv->search_timeout);
- tree->priv->search_timeout = g_timeout_add(SEARCH_TIMEOUT, search_timeout, tree);
+ tree->priv->search_timeout = g_timeout_add_seconds(SEARCH_TIMEOUT_S, search_timeout, tree); } else if (text[0] == ' ' && text[1] == 0) {
@@ -930,7 +940,7 @@
GNT_WIDGET_SET_FLAGS(GNT_WIDGET(tree), GNT_WIDGET_DISABLE_ACTIONS);
tree->priv->search = g_string_new(NULL);
- tree->priv->search_timeout = g_timeout_add(SEARCH_TIMEOUT, search_timeout, tree);
+ tree->priv->search_timeout = g_timeout_add_seconds(SEARCH_TIMEOUT_S, search_timeout, tree); --- a/gntwm.c Mon Mar 02 04:18:40 2009 +0000
+++ b/gntwm.c Wed Aug 19 00:46:04 2009 +0000
@@ -135,6 +135,17 @@
copywin(src, dst, node->scroll, 0, 0, 0, getmaxy(dst) - 1, getmaxx(dst) - 1, 0);
+ /* Update the hardware cursor */ + if (GNT_IS_WINDOW(widget) || GNT_IS_BOX(widget)) { + GntWidget *active = GNT_BOX(widget)->active; + int curx = active->priv.x + getcurx(active->window); + int cury = active->priv.y + getcury(active->window); + if (wmove(node->window, cury - widget->priv.y, curx - widget->priv.x) != OK) + wmove(node->window, 0, 0); @@ -397,7 +408,7 @@
wm->positions = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
if (gnt_style_get_bool(GNT_STYLE_REMPOS, TRUE))
read_window_positions(wm);
- g_timeout_add(IDLE_CHECK_INTERVAL * 1000, check_idle, NULL);
+ g_timeout_add_seconds(IDLE_CHECK_INTERVAL, check_idle, NULL); gnt_wm_switch_workspace(wm, 0);
@@ -1101,8 +1112,8 @@
g_hash_table_foreach(wm->nodes, (GHFunc)refresh_node, GINT_TO_POINTER(TRUE));
g_signal_emit(wm, signals[SIG_TERMINAL_REFRESH], 0);
+ gnt_ws_draw_taskbar(wm->cws, TRUE); - gnt_ws_draw_taskbar(wm->cws, TRUE);
curs_set(0); /* endwin resets the cursor to normal */
@@ -1872,8 +1883,8 @@
+ gnt_ws_draw_taskbar(wm->cws, FALSE); - gnt_ws_draw_taskbar(wm->cws, FALSE);
void gnt_wm_window_decorate(GntWM *wm, GntWidget *widget)
@@ -1885,6 +1896,7 @@
+ gboolean transient = !!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT); s = gnt_wm_widget_find_workspace(wm, widget);
@@ -1908,10 +1920,12 @@
if (s->ordered && wm->cws == s)
gnt_wm_raise_window(wm, s->ordered->data);
+ } else if (transient && wm->cws && wm->cws->ordered) { + gnt_wm_update_window(wm, wm->cws->ordered->data); + gnt_ws_draw_taskbar(wm->cws, FALSE); - gnt_ws_draw_taskbar(wm->cws, FALSE);
time_t gnt_wm_get_idle_time()
@@ -2119,7 +2133,7 @@
g_source_remove(write_timeout);
- write_timeout = g_timeout_add(10000, write_already, wm);
+ write_timeout = g_timeout_add_seconds(10, write_already, wm); void gnt_wm_move_window(GntWM *wm, GntWidget *widget, int x, int y)
@@ -2181,8 +2195,8 @@
GntNode *nd = g_hash_table_lookup(wm->nodes, wm->_list.window);
+ gnt_ws_draw_taskbar(wm->cws, FALSE); - gnt_ws_draw_taskbar(wm->cws, FALSE);
void gnt_wm_update_window(GntWM *wm, GntWidget *widget)
@@ -2207,8 +2221,8 @@
if (ws == wm->cws || GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT)) {
gnt_wm_copy_win(widget, node);
+ gnt_ws_draw_taskbar(wm->cws, FALSE); - gnt_ws_draw_taskbar(wm->cws, FALSE);
} else if (ws && ws != wm->cws && GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_URGENT)) {
if (!act || (act && !g_list_find(act, ws)))
act = g_list_prepend(act, ws);