mirror of
https://github.com/irssi/irssi.git
synced 2025-01-03 14:56:47 -05:00
window_item_create(): when there's multiple choices where the window
item could be placed, the first window is now selected instead of the last accessed one of them (which most people think of as a random window). git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1040 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
acf60a729c
commit
219c83ae6a
@ -363,6 +363,26 @@ int windows_refnum_last(void)
|
||||
return max;
|
||||
}
|
||||
|
||||
static int window_refnum_cmp(WINDOW_REC *w1, WINDOW_REC *w2)
|
||||
{
|
||||
return w1->refnum < w2->refnum ? -1 : 1;
|
||||
}
|
||||
|
||||
GSList *windows_get_sorted(void)
|
||||
{
|
||||
GSList *tmp, *sorted;
|
||||
|
||||
sorted = NULL;
|
||||
for (tmp = windows; tmp != NULL; tmp = tmp->next) {
|
||||
WINDOW_REC *rec = tmp->data;
|
||||
|
||||
sorted = g_slist_insert_sorted(sorted, rec, (GCompareFunc)
|
||||
window_refnum_cmp);
|
||||
}
|
||||
|
||||
return sorted;
|
||||
}
|
||||
|
||||
static void sig_server_looking(SERVER_REC *server)
|
||||
{
|
||||
GSList *tmp;
|
||||
|
@ -68,6 +68,8 @@ int window_refnum_prev(int refnum, int wrap);
|
||||
int window_refnum_next(int refnum, int wrap);
|
||||
int windows_refnum_last(void);
|
||||
|
||||
GSList *windows_get_sorted(void);
|
||||
|
||||
void windows_init(void);
|
||||
void windows_deinit(void);
|
||||
|
||||
|
@ -353,23 +353,6 @@ static void cmd_window_move(const char *data, SERVER_REC *server, WI_ITEM_REC *i
|
||||
}
|
||||
}
|
||||
|
||||
static int windows_compare(WINDOW_REC *w1, WINDOW_REC *w2)
|
||||
{
|
||||
return w1->refnum < w2->refnum ? -1 : 1;
|
||||
}
|
||||
|
||||
static GSList *windows_get_sorted(void)
|
||||
{
|
||||
GSList *tmp, *list;
|
||||
|
||||
list = NULL;
|
||||
for (tmp = windows; tmp != NULL; tmp = tmp->next) {
|
||||
list = g_slist_insert_sorted(list, tmp->data, (GCompareFunc) windows_compare);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/* SYNTAX: WINDOW LIST */
|
||||
static void cmd_window_list(void)
|
||||
{
|
||||
|
@ -238,7 +238,7 @@ static int waiting_channels_get(WINDOW_REC *window, const char *tag)
|
||||
void window_item_create(WI_ITEM_REC *item, int automatic)
|
||||
{
|
||||
WINDOW_REC *window;
|
||||
GSList *tmp;
|
||||
GSList *tmp, *sorted;
|
||||
char *str;
|
||||
int clear_waiting, reuse_unused_windows;
|
||||
|
||||
@ -253,7 +253,8 @@ void window_item_create(WI_ITEM_REC *item, int automatic)
|
||||
|
||||
clear_waiting = TRUE;
|
||||
window = NULL;
|
||||
for (tmp = windows; tmp != NULL; tmp = tmp->next) {
|
||||
sorted = windows_get_sorted();
|
||||
for (tmp = sorted; tmp != NULL; tmp = tmp->next) {
|
||||
WINDOW_REC *rec = tmp->data;
|
||||
|
||||
if (reuse_unused_windows &&
|
||||
@ -274,6 +275,7 @@ void window_item_create(WI_ITEM_REC *item, int automatic)
|
||||
}
|
||||
}
|
||||
}
|
||||
g_slist_free(sorted);
|
||||
g_free_not_null(str);
|
||||
|
||||
if (window == NULL && !settings_get_bool("autocreate_windows")) {
|
||||
|
Loading…
Reference in New Issue
Block a user