{
int set;
- if (g_strcasecmp(data, "ON") == 0)
+ if (*data == '\0')
+ set = active_win->immortal;
+ else if (g_strcasecmp(data, "ON") == 0)
set = TRUE;
else if (g_strcasecmp(data, "OFF") == 0)
set = FALSE;
else if (g_strcasecmp(data, "TOGGLE") == 0)
set = !active_win->immortal;
else {
- printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_NOT_TOGGLE);
+ printformat_window(active_win, MSGLEVEL_CLIENTERROR,
+ TXT_NOT_TOGGLE);
return;
}
static void cmd_window_item(const char *data, void *server, WI_ITEM_REC *item)
{
- command_runsub("window item", data, server, item);
+ while (*data == ' ') data++;
+
+ if (is_numeric(data, '\0'))
+ signal_emit("command window item goto", 3, data, server, item);
+ else
+ command_runsub("window item", data, server, item);
}
/* SYNTAX: WINDOW ITEM PREV */
window_item_next(active_win);
}
-/* SYNTAX: WINDOW ITEM GOTO <name> */
+/* SYNTAX: WINDOW ITEM GOTO <number>|<name> */
static void cmd_window_item_goto(const char *data, SERVER_REC *server)
{
- WI_ITEM_REC *item;
+ WI_ITEM_REC *item;
+ GSList *tmp;
+
+ if (is_numeric(data, '\0')) {
+ /* change to specified number */
+ tmp = g_slist_nth(active_win->items, atoi(data)-1);
+ item = tmp == NULL ? NULL : tmp->data;
+ } else {
+ item = window_item_find_window(active_win, server, data);
+ }
- item = window_item_find_window(active_win, server, data);
if (item != NULL)
window_item_set_active(active_win, item);
}
{
if (window_find_name(data) == NULL)
window_set_name(active_win, data);
- else {
+ else if (active_win->name == NULL ||
+ strcmp(active_win->name, data) != 0) {
printformat_window(active_win, MSGLEVEL_CLIENTERROR,
TXT_WINDOW_NAME_NOT_UNIQUE, data);
}