Mercurial > pidgin.yaz
changeset 21620:6f6f8af235eb
Switch to 'normal' state when: switching windows or workspaces, closing
window or getting the action/window lists.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Fri, 23 Nov 2007 04:04:33 +0000 |
parents | 85fc97ffe538 |
children | 512785bd7fcb |
files | finch/libgnt/gntwm.c |
diffstat | 1 files changed, 18 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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);