mirror of
https://github.com/tmux/tmux.git
synced 2024-12-04 11:55:56 +00:00
Merge branch 'obsd-master'
This commit is contained in:
commit
49b7276f2a
39
format.c
39
format.c
@ -2494,9 +2494,20 @@ format_cb_window_last_flag(struct format_tree *ft)
|
|||||||
static void *
|
static void *
|
||||||
format_cb_window_linked(struct format_tree *ft)
|
format_cb_window_linked(struct format_tree *ft)
|
||||||
{
|
{
|
||||||
|
struct winlink *wl;
|
||||||
|
struct session *s;
|
||||||
|
int found = 0;
|
||||||
|
|
||||||
if (ft->wl != NULL) {
|
if (ft->wl != NULL) {
|
||||||
if (session_is_linked(ft->wl->session, ft->wl->window))
|
RB_FOREACH(s, sessions, &sessions) {
|
||||||
return (xstrdup("1"));
|
RB_FOREACH(wl, winlinks, &s->windows) {
|
||||||
|
if (wl->window == ft->wl->window) {
|
||||||
|
if (found)
|
||||||
|
return (xstrdup("1"));
|
||||||
|
found = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return (xstrdup("0"));
|
return (xstrdup("0"));
|
||||||
}
|
}
|
||||||
return (NULL);
|
return (NULL);
|
||||||
@ -2506,9 +2517,27 @@ format_cb_window_linked(struct format_tree *ft)
|
|||||||
static void *
|
static void *
|
||||||
format_cb_window_linked_sessions(struct format_tree *ft)
|
format_cb_window_linked_sessions(struct format_tree *ft)
|
||||||
{
|
{
|
||||||
if (ft->wl != NULL)
|
struct window *w;
|
||||||
return (format_printf("%u", ft->wl->window->references));
|
struct session_group *sg;
|
||||||
return (NULL);
|
struct session *s;
|
||||||
|
u_int n = 0;
|
||||||
|
|
||||||
|
if (ft->wl == NULL)
|
||||||
|
return (NULL);
|
||||||
|
w = ft->wl->window;
|
||||||
|
|
||||||
|
RB_FOREACH(sg, session_groups, &session_groups) {
|
||||||
|
s = TAILQ_FIRST(&sg->sessions);
|
||||||
|
if (winlink_find_by_window(&s->windows, w) != NULL)
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
RB_FOREACH(s, sessions, &sessions) {
|
||||||
|
if (session_group_contains(s) != NULL)
|
||||||
|
continue;
|
||||||
|
if (winlink_find_by_window(&s->windows, w) != NULL)
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
return (format_printf("%u", n));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Callback for window_marked_flag. */
|
/* Callback for window_marked_flag. */
|
||||||
|
1
popup.c
1
popup.c
@ -691,6 +691,7 @@ popup_display(int flags, enum box_lines lines, struct cmdq_item *item, u_int px,
|
|||||||
pd->border_cell.attr = 0;
|
pd->border_cell.attr = 0;
|
||||||
|
|
||||||
screen_init(&pd->s, jx, jy, 0);
|
screen_init(&pd->s, jx, jy, 0);
|
||||||
|
screen_set_default_cursor(&pd->s, global_w_options);
|
||||||
colour_palette_init(&pd->palette);
|
colour_palette_init(&pd->palette);
|
||||||
colour_palette_from_option(&pd->palette, global_w_options);
|
colour_palette_from_option(&pd->palette, global_w_options);
|
||||||
|
|
||||||
|
@ -31,12 +31,9 @@ u_int next_session_id;
|
|||||||
struct session_groups session_groups = RB_INITIALIZER(&session_groups);
|
struct session_groups session_groups = RB_INITIALIZER(&session_groups);
|
||||||
|
|
||||||
static void session_free(int, short, void *);
|
static void session_free(int, short, void *);
|
||||||
|
|
||||||
static void session_lock_timer(int, short, void *);
|
static void session_lock_timer(int, short, void *);
|
||||||
|
|
||||||
static struct winlink *session_next_alert(struct winlink *);
|
static struct winlink *session_next_alert(struct winlink *);
|
||||||
static struct winlink *session_previous_alert(struct winlink *);
|
static struct winlink *session_previous_alert(struct winlink *);
|
||||||
|
|
||||||
static void session_group_remove(struct session *);
|
static void session_group_remove(struct session *);
|
||||||
static void session_group_synchronize1(struct session *, struct session *);
|
static void session_group_synchronize1(struct session *, struct session *);
|
||||||
|
|
||||||
@ -47,12 +44,12 @@ session_cmp(struct session *s1, struct session *s2)
|
|||||||
}
|
}
|
||||||
RB_GENERATE(sessions, session, entry, session_cmp);
|
RB_GENERATE(sessions, session, entry, session_cmp);
|
||||||
|
|
||||||
static int
|
int
|
||||||
session_group_cmp(struct session_group *s1, struct session_group *s2)
|
session_group_cmp(struct session_group *s1, struct session_group *s2)
|
||||||
{
|
{
|
||||||
return (strcmp(s1->name, s2->name));
|
return (strcmp(s1->name, s2->name));
|
||||||
}
|
}
|
||||||
RB_GENERATE_STATIC(session_groups, session_group, entry, session_group_cmp);
|
RB_GENERATE(session_groups, session_group, entry, session_group_cmp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find if session is still alive. This is true if it is still on the global
|
* Find if session is still alive. This is true if it is still on the global
|
||||||
|
3
tmux.h
3
tmux.h
@ -3397,9 +3397,12 @@ void control_notify_paste_buffer_deleted(const char *);
|
|||||||
|
|
||||||
/* session.c */
|
/* session.c */
|
||||||
extern struct sessions sessions;
|
extern struct sessions sessions;
|
||||||
|
extern struct session_groups session_groups;
|
||||||
extern u_int next_session_id;
|
extern u_int next_session_id;
|
||||||
int session_cmp(struct session *, struct session *);
|
int session_cmp(struct session *, struct session *);
|
||||||
RB_PROTOTYPE(sessions, session, entry, session_cmp);
|
RB_PROTOTYPE(sessions, session, entry, session_cmp);
|
||||||
|
int session_group_cmp(struct session_group *, struct session_group *s2);
|
||||||
|
RB_PROTOTYPE(session_groups, session_group, entry, session_group_cmp);
|
||||||
int session_alive(struct session *);
|
int session_alive(struct session *);
|
||||||
struct session *session_find(const char *);
|
struct session *session_find(const char *);
|
||||||
struct session *session_find_by_id_str(const char *);
|
struct session *session_find_by_id_str(const char *);
|
||||||
|
Loading…
Reference in New Issue
Block a user