diff options
Diffstat (limited to 'src/ui/window_list.c')
-rw-r--r-- | src/ui/window_list.c | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/src/ui/window_list.c b/src/ui/window_list.c index 2d19ab32..798f4e41 100644 --- a/src/ui/window_list.c +++ b/src/ui/window_list.c @@ -1,7 +1,7 @@ /* * window_list.c * - * Copyright (C) 2012 - 2017 James Booth <boothj5@gmail.com> + * Copyright (C) 2012 - 2018 James Booth <boothj5@gmail.com> * * This file is part of Profanity. * @@ -45,7 +45,6 @@ #include "config/theme.h" #include "plugins/plugins.h" #include "ui/ui.h" -#include "ui/statusbar.h" #include "ui/window_list.h" #include "xmpp/xmpp.h" #include "xmpp/roster_list.h" @@ -239,9 +238,7 @@ wins_close_plugin(char *tag) int index = wins_get_num(toclose); ui_close_win(index); - if (prefs_get_boolean(PREF_WINS_AUTO_TIDY)) { - wins_tidy(); - } + wins_tidy(); } GList* @@ -847,7 +844,7 @@ wins_lost_connection(void) g_list_free(values); } -gboolean +void wins_swap(int source_win, int target_win) { ProfWin *source = g_hash_table_lookup(windows, GINT_TO_POINTER(source_win)); @@ -857,20 +854,21 @@ wins_swap(int source_win, int target_win) ProfWin *target = g_hash_table_lookup(windows, GINT_TO_POINTER(target_win)); // target window empty - if (!target) { + if (target == NULL) { g_hash_table_steal(windows, GINT_TO_POINTER(source_win)); g_hash_table_insert(windows, GINT_TO_POINTER(target_win), source); status_bar_inactive(source_win); + char *identifier = win_get_tab_identifier(source); if (win_unread(source) > 0) { - status_bar_new(target_win); + status_bar_new(target_win, source->type, identifier); } else { - status_bar_active(target_win); + status_bar_active(target_win, source->type, identifier); } + free(identifier); if (wins_get_current_num() == source_win) { wins_set_current_by_num(target_win); ui_focus_win(console); } - return TRUE; // target window occupied } else { @@ -878,23 +876,24 @@ wins_swap(int source_win, int target_win) g_hash_table_steal(windows, GINT_TO_POINTER(target_win)); g_hash_table_insert(windows, GINT_TO_POINTER(source_win), target); g_hash_table_insert(windows, GINT_TO_POINTER(target_win), source); + char *source_identifier = win_get_tab_identifier(source); + char *target_identifier = win_get_tab_identifier(target); if (win_unread(source) > 0) { - status_bar_new(target_win); + status_bar_new(target_win, source->type, source_identifier); } else { - status_bar_active(target_win); + status_bar_active(target_win, source->type, source_identifier); } if (win_unread(target) > 0) { - status_bar_new(source_win); + status_bar_new(source_win, target->type, target_identifier); } else { - status_bar_active(source_win); + status_bar_active(source_win, target->type, target_identifier); } + free(source_identifier); + free(target_identifier); if ((wins_get_current_num() == source_win) || (wins_get_current_num() == target_win)) { ui_focus_win(console); } - return TRUE; } - } else { - return FALSE; } } @@ -999,22 +998,24 @@ wins_tidy(void) GList *curr = keys; while (curr) { ProfWin *window = g_hash_table_lookup(windows, curr->data); + char *identifier = win_get_tab_identifier(window); g_hash_table_steal(windows, curr->data); if (num == 10) { g_hash_table_insert(new_windows, GINT_TO_POINTER(0), window); if (win_unread(window) > 0) { - status_bar_new(0); + status_bar_new(0, window->type, identifier); } else { - status_bar_active(0); + status_bar_active(0, window->type, identifier); } } else { g_hash_table_insert(new_windows, GINT_TO_POINTER(num), window); if (win_unread(window) > 0) { - status_bar_new(num); + status_bar_new(num, window->type, identifier); } else { - status_bar_active(num); + status_bar_active(num, window->type, identifier); } } + free(identifier); num++; curr = g_list_next(curr); } |