# HG changeset patch # User Richard Nelson # Date 1181306490 0 # Node ID 2b757aadddc91f2f08cf91efa78028e322e798e8 # Parent 08776fc5c06f10f0647943b1ca5b196701a455da add gnt_window_present diff -r 08776fc5c06f -r 2b757aadddc9 finch/libgnt/gnt.h --- a/finch/libgnt/gnt.h Fri Jun 08 10:21:50 2007 +0000 +++ b/finch/libgnt/gnt.h Fri Jun 08 12:41:30 2007 +0000 @@ -43,6 +43,7 @@ */ gboolean gnt_ascii_only(void); +void gnt_window_present(GntWidget *window); /** * * @param widget diff -r 08776fc5c06f -r 2b757aadddc9 finch/libgnt/gntmain.c --- a/finch/libgnt/gntmain.c Fri Jun 08 10:21:50 2007 +0000 +++ b/finch/libgnt/gntmain.c Fri Jun 08 12:41:30 2007 +0000 @@ -484,6 +484,10 @@ * Stuff for 'window management' * *********************************/ +void gnt_window_present(GntWidget *window) { + gnt_wm_raise_window(wm, window); +} + void gnt_screen_occupy(GntWidget *widget) { gnt_wm_new_window(wm, widget); diff -r 08776fc5c06f -r 2b757aadddc9 finch/libgnt/gntwm.c --- a/finch/libgnt/gntwm.c Fri Jun 08 10:21:50 2007 +0000 +++ b/finch/libgnt/gntwm.c Fri Jun 08 12:41:30 2007 +0000 @@ -186,7 +186,7 @@ return; for (iter = act; iter; iter = iter->next) { GntWS *ws = iter->data; - g_string_sprintfa(text, "%s, ", gnt_ws_get_name(ws)); + g_string_append_printf(text, "%s, ", gnt_ws_get_name(ws)); } g_string_erase(text, text->len - 2, 2); message = gnt_vbox_new(FALSE); @@ -562,9 +562,6 @@ if (GNT_IS_WS(sel)) { gnt_wm_switch_workspace(wm, g_list_index(wm->workspaces, sel)); } else { - GntNode *node = g_hash_table_lookup(wm->nodes, sel); - if (node && node->ws != wm->cws) - gnt_wm_switch_workspace(wm, g_list_index(wm->workspaces, node->ws)); gnt_wm_raise_window(wm, GNT_WIDGET(sel)); } } @@ -1550,8 +1547,6 @@ } if (wm->event_stack || node->me == wm->_list.window) { - if (wm->cws != ws) - gnt_wm_switch_workspace(wm, g_list_index(wm->workspaces, ws)); gnt_wm_raise_window(wm, node->me); } else { bottom_panel(node->panel); /* New windows should not grab focus */ @@ -1928,6 +1923,9 @@ void gnt_wm_raise_window(GntWM *wm, GntWidget *widget) { + GntWS *ws = gnt_wm_widget_find_workspace(wm, widget); + if (wm->cws != ws) + gnt_wm_switch_workspace(wm, g_list_index(wm->workspaces, ws)); g_signal_emit(wm, signals[SIG_GIVE_FOCUS], 0, widget); }