mirror of
https://github.com/tmate-io/tmate.git
synced 2024-12-24 15:48:58 +01:00
|PatchSet 893
|Date: 2011/04/18 20:49:05 |Author: nicm |Branch: HEAD |Tag: (none) |Log: |Add an option (mouse-select-window) which allows the mouse to be used by |clicking on the status line, written by hsim at gmx dot li.
This commit is contained in:
parent
34a331aa99
commit
dc6bd98425
@ -1,4 +1,4 @@
|
|||||||
/* $Id: options-table.c,v 1.6 2011-04-18 21:03:42 nicm Exp $ */
|
/* $Id: options-table.c,v 1.7 2011-04-18 21:07:58 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2011 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -197,6 +197,11 @@ const struct options_table_entry session_options_table[] = {
|
|||||||
.default_num = 0
|
.default_num = 0
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ .name = "mouse-select-window",
|
||||||
|
.type = OPTIONS_TABLE_FLAG,
|
||||||
|
.default_num = 0
|
||||||
|
},
|
||||||
|
|
||||||
{ .name = "mouse-utf8",
|
{ .name = "mouse-utf8",
|
||||||
.type = OPTIONS_TABLE_FLAG,
|
.type = OPTIONS_TABLE_FLAG,
|
||||||
.default_num = 0
|
.default_num = 0
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: server-client.c,v 1.55 2011-04-06 22:21:02 nicm Exp $ */
|
/* $Id: server-client.c,v 1.56 2011-04-18 21:07:58 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -318,6 +318,12 @@ server_client_handle_key(int key, struct mouse_event *mouse, void *data)
|
|||||||
server_redraw_window_borders(w);
|
server_redraw_window_borders(w);
|
||||||
wp = w->active;
|
wp = w->active;
|
||||||
}
|
}
|
||||||
|
if (mouse->y + 1 == c->tty.sy && mouse->b == MOUSE_UP &&
|
||||||
|
options_get_number(oo, "mouse-select-window") &&
|
||||||
|
options_get_number(oo, "status")) {
|
||||||
|
status_set_window_at(c, mouse->x);
|
||||||
|
return;
|
||||||
|
}
|
||||||
window_pane_mouse(wp, c->session, mouse);
|
window_pane_mouse(wp, c->session, mouse);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -458,6 +464,10 @@ server_client_reset_state(struct client *c)
|
|||||||
(mode & ALL_MOUSE_MODES) == 0)
|
(mode & ALL_MOUSE_MODES) == 0)
|
||||||
mode |= MODE_MOUSE_STANDARD;
|
mode |= MODE_MOUSE_STANDARD;
|
||||||
|
|
||||||
|
if (options_get_number(oo, "mouse-select-window") &&
|
||||||
|
(mode & ALL_MOUSE_MODES) == 0)
|
||||||
|
mode |= MODE_MOUSE_STANDARD;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set UTF-8 mouse input if required. If the terminal is UTF-8, the
|
* Set UTF-8 mouse input if required. If the terminal is UTF-8, the
|
||||||
* user has set mouse-utf8 and any mouse mode is in effect, turn on
|
* user has set mouse-utf8 and any mouse mode is in effect, turn on
|
||||||
|
20
status.c
20
status.c
@ -1,4 +1,4 @@
|
|||||||
/* $Id: status.c,v 1.157 2011-04-06 22:21:02 nicm Exp $ */
|
/* $Id: status.c,v 1.158 2011-04-18 21:07:58 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -120,6 +120,23 @@ status_redraw_get_right(struct client *c,
|
|||||||
return (right);
|
return (right);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set window at window list position. */
|
||||||
|
void
|
||||||
|
status_set_window_at(struct client *c, u_int x)
|
||||||
|
{
|
||||||
|
struct session *s = c->session;
|
||||||
|
struct winlink *wl;
|
||||||
|
|
||||||
|
x += s->wlmouse;
|
||||||
|
RB_FOREACH(wl, winlinks, &s->windows) {
|
||||||
|
if (x < wl->status_width &&
|
||||||
|
session_select(s, wl->idx) == 0) {
|
||||||
|
server_redraw_session(s);
|
||||||
|
}
|
||||||
|
x -= wl->status_width + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Draw status for client on the last lines of given context. */
|
/* Draw status for client on the last lines of given context. */
|
||||||
int
|
int
|
||||||
status_redraw(struct client *c)
|
status_redraw(struct client *c)
|
||||||
@ -325,6 +342,7 @@ draw:
|
|||||||
wloffset++;
|
wloffset++;
|
||||||
|
|
||||||
/* Copy the window list. */
|
/* Copy the window list. */
|
||||||
|
s->wlmouse = -wloffset + wlstart;
|
||||||
screen_write_cursormove(&ctx, wloffset, 0);
|
screen_write_cursormove(&ctx, wloffset, 0);
|
||||||
screen_write_copy(&ctx, &window_list, wlstart, 0, wlwidth, 1);
|
screen_write_copy(&ctx, &window_list, wlstart, 0, wlwidth, 1);
|
||||||
screen_free(&window_list);
|
screen_free(&window_list);
|
||||||
|
2
tmux.1
2
tmux.1
@ -1,4 +1,4 @@
|
|||||||
.\" $Id: tmux.1,v 1.307 2011-04-18 21:07:12 nicm Exp $
|
.\" $Id: tmux.1,v 1.308 2011-04-18 21:07:58 nicm Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
.\"
|
.\"
|
||||||
|
5
tmux.h
5
tmux.h
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tmux.h,v 1.619 2011-04-09 07:48:58 nicm Exp $ */
|
/* $Id: tmux.h,v 1.620 2011-04-18 21:07:58 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -953,6 +953,8 @@ struct session {
|
|||||||
|
|
||||||
struct environ environ;
|
struct environ environ;
|
||||||
|
|
||||||
|
int wlmouse;
|
||||||
|
|
||||||
int references;
|
int references;
|
||||||
|
|
||||||
TAILQ_ENTRY(session) gentry;
|
TAILQ_ENTRY(session) gentry;
|
||||||
@ -1662,6 +1664,7 @@ int status_out_cmp(struct status_out *, struct status_out *);
|
|||||||
RB_PROTOTYPE(status_out_tree, status_out, entry, status_out_cmp);
|
RB_PROTOTYPE(status_out_tree, status_out, entry, status_out_cmp);
|
||||||
void status_free_jobs(struct status_out_tree *);
|
void status_free_jobs(struct status_out_tree *);
|
||||||
void status_update_jobs(struct client *);
|
void status_update_jobs(struct client *);
|
||||||
|
void status_set_window_at(struct client *, u_int);
|
||||||
int status_redraw(struct client *);
|
int status_redraw(struct client *);
|
||||||
char *status_replace(struct client *, struct session *,
|
char *status_replace(struct client *, struct session *,
|
||||||
struct winlink *, struct window_pane *, const char *, time_t, int);
|
struct winlink *, struct window_pane *, const char *, time_t, int);
|
||||||
|
Loading…
Reference in New Issue
Block a user