diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2008-10-19 10:37:15 +0200 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2008-10-19 10:37:15 +0200 |
commit | cb56b7bc8ec1c0b960ef0fb52e1766af1693d409 (patch) | |
tree | 11adedc7c7cb60e49a83afde1ab3719ddb1985e0 | |
parent | 2bd4428f45b168ee12866dc5a2d9b960459e2182 (diff) | |
download | weechat-cb56b7bc8ec1c0b960ef0fb52e1766af1693d409.zip |
Fix restore of windows with saved layout
-rw-r--r-- | src/gui/gui-layout.c | 43 |
1 files changed, 16 insertions, 27 deletions
diff --git a/src/gui/gui-layout.c b/src/gui/gui-layout.c index db9985a23..6ff52c78a 100644 --- a/src/gui/gui-layout.c +++ b/src/gui/gui-layout.c @@ -42,8 +42,6 @@ struct t_gui_layout_buffer *last_gui_layout_buffer = NULL; struct t_gui_layout_window *gui_layout_windows = NULL; int internal_id = 0; -struct t_gui_window *window1 = NULL; -struct t_gui_window *window2 = NULL; /* @@ -468,11 +466,13 @@ gui_layout_window_check_all_buffers () void gui_layout_window_apply_tree (struct t_gui_layout_window *layout_window) { - struct t_gui_window *new_window; + struct t_gui_window *new_window, *old_window; if (layout_window->split_pct != 0) { /* node */ + old_window = gui_current_window; + if (layout_window->split_horiz) { new_window = gui_window_split_horiz (gui_current_window, @@ -484,32 +484,23 @@ gui_layout_window_apply_tree (struct t_gui_layout_window *layout_window) layout_window->split_pct); } - if (new_window) - { - if (window2) - window1 = window2; - window2 = new_window; - } + if (layout_window->child2) + gui_layout_window_apply_tree (layout_window->child2); + + if (old_window != gui_current_window) + gui_window_switch (old_window); + + if (layout_window->child1) + gui_layout_window_apply_tree (layout_window->child1); } else { /* leaf */ - if (window1) - { - gui_window_set_layout_plugin_name (window1, - layout_window->plugin_name); - gui_window_set_layout_buffer_name (window1, - layout_window->buffer_name); - window1 = window2; - window2 = NULL; - } + gui_window_set_layout_plugin_name (gui_current_window, + layout_window->plugin_name); + gui_window_set_layout_buffer_name (gui_current_window, + layout_window->buffer_name); } - - if (layout_window->child1) - gui_layout_window_apply_tree (layout_window->child1); - - if (layout_window->child2) - gui_layout_window_apply_tree (layout_window->child2); } /* @@ -526,11 +517,9 @@ gui_layout_window_apply () gui_window_merge_all (gui_current_window); old_window = gui_current_window; - window1 = gui_current_window; - window2 = NULL; gui_layout_window_apply_tree (gui_layout_windows); - + gui_layout_window_check_all_buffers (); gui_window_switch (old_window); |