# HG changeset patch # User Sadrul Habib Chowdhury # Date 1195790673 0 # Node ID 6f6f8af235ebb058f4de280f73ec96fdcce2968d # Parent 85fc97ffe5388adbabe36b425a818db22ea5357c Switch to 'normal' state when: switching windows or workspaces, closing window or getting the action/window lists. diff -r 85fc97ffe538 -r 6f6f8af235eb finch/libgnt/gntwm.c --- a/finch/libgnt/gntwm.c Thu Nov 22 19:34:50 2007 +0000 +++ b/finch/libgnt/gntwm.c Fri Nov 23 04:04:33 2007 +0000 @@ -81,6 +81,7 @@ static int widestringwidth(wchar_t *wide); #endif +static void ensure_normal_mode(GntWM *wm); static gboolean write_already(gpointer data); static int write_timeout; static time_t last_active_time; @@ -392,6 +393,10 @@ if (!wm->cws->ordered || !wm->cws->ordered->next) return; + if (wm->mode != GNT_KP_MODE_NORMAL) { + ensure_normal_mode(wm); + } + w = wm->cws->ordered->data; pos = g_list_index(wm->cws->list, w); pos += direction; @@ -503,6 +508,7 @@ if (wm->cws->ordered) { gnt_widget_destroy(wm->cws->ordered->data); + ensure_normal_mode(wm); } return TRUE; @@ -522,6 +528,7 @@ setup__list(GntWM *wm) { GntWidget *tree, *win; + ensure_normal_mode(wm); win = wm->_list.window = gnt_box_new(FALSE, FALSE); gnt_box_set_toplevel(GNT_BOX(win), TRUE); gnt_box_set_pad(GNT_BOX(win), 0); @@ -972,6 +979,16 @@ update_screen(wm); } +static void +ensure_normal_mode(GntWM *wm) +{ + if (wm->mode != GNT_KP_MODE_NORMAL) { + if (wm->cws->ordered) + window_reverse(wm->cws->ordered->data, FALSE, wm); + wm->mode = GNT_KP_MODE_NORMAL; + } +} + static gboolean start_move(GntBindable *bindable, GList *null) { @@ -1453,6 +1470,7 @@ if (wm->_list.window) { gnt_widget_destroy(wm->_list.window); } + ensure_normal_mode(wm); gnt_ws_hide(wm->cws, wm->nodes); wm->cws = s; gnt_ws_show(wm->cws, wm->nodes);