aboutsummaryrefslogtreecommitdiff
path: root/server-client.c
diff options
context:
space:
mode:
Diffstat (limited to 'server-client.c')
-rw-r--r--server-client.c666
1 files changed, 639 insertions, 27 deletions
diff --git a/server-client.c b/server-client.c
index 06154be7..2350a982 100644
--- a/server-client.c
+++ b/server-client.c
@@ -40,6 +40,7 @@ static void server_client_check_exit(struct client *);
static void server_client_check_redraw(struct client *);
static void server_client_check_modes(struct client *);
static void server_client_set_title(struct client *);
+static void server_client_set_path(struct client *);
static void server_client_reset_state(struct client *);
static int server_client_assume_paste(struct session *);
static void server_client_update_latest(struct client *);
@@ -422,6 +423,7 @@ server_client_lost(struct client *c)
if (c->flags & CLIENT_TERMINAL)
tty_free(&c->tty);
free(c->ttyname);
+ free(c->clipboard_panes);
free(c->term_name);
free(c->term_type);
@@ -593,11 +595,11 @@ server_client_check_mouse(struct client *c, struct key_event *event)
log_debug("double-click at %u,%u", x, y);
} else if ((m->sgr_type != ' ' &&
MOUSE_DRAG(m->sgr_b) &&
- MOUSE_BUTTONS(m->sgr_b) == 3) ||
+ MOUSE_RELEASE(m->sgr_b)) ||
(m->sgr_type == ' ' &&
MOUSE_DRAG(m->b) &&
- MOUSE_BUTTONS(m->b) == 3 &&
- MOUSE_BUTTONS(m->lb) == 3)) {
+ MOUSE_RELEASE(m->b) &&
+ MOUSE_RELEASE(m->lb))) {
type = MOVE;
x = m->x, y = m->y, b = 0;
log_debug("move at %u,%u", x, y);
@@ -750,7 +752,7 @@ have_event:
m->wp = -1;
/* Stop dragging if needed. */
- if (type != DRAG && type != WHEEL && c->tty.mouse_drag_flag) {
+ if (type != DRAG && type != WHEEL && c->tty.mouse_drag_flag != 0) {
if (c->tty.mouse_drag_release != NULL)
c->tty.mouse_drag_release(c, m);
@@ -761,8 +763,8 @@ have_event:
* End a mouse drag by passing a MouseDragEnd key corresponding
* to the button that started the drag.
*/
- switch (c->tty.mouse_drag_flag) {
- case 1:
+ switch (c->tty.mouse_drag_flag - 1) {
+ case MOUSE_BUTTON_1:
if (where == PANE)
key = KEYC_MOUSEDRAGEND1_PANE;
if (where == STATUS)
@@ -776,7 +778,7 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEDRAGEND1_BORDER;
break;
- case 2:
+ case MOUSE_BUTTON_2:
if (where == PANE)
key = KEYC_MOUSEDRAGEND2_PANE;
if (where == STATUS)
@@ -790,7 +792,7 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEDRAGEND2_BORDER;
break;
- case 3:
+ case MOUSE_BUTTON_3:
if (where == PANE)
key = KEYC_MOUSEDRAGEND3_PANE;
if (where == STATUS)
@@ -804,6 +806,90 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEDRAGEND3_BORDER;
break;
+ case MOUSE_BUTTON_6:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAGEND6_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAGEND6_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAGEND6_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAGEND6_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAGEND6_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAGEND6_BORDER;
+ break;
+ case MOUSE_BUTTON_7:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAGEND7_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAGEND7_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAGEND7_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAGEND7_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAGEND7_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAGEND7_BORDER;
+ break;
+ case MOUSE_BUTTON_8:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAGEND8_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAGEND8_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAGEND8_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAGEND8_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAGEND8_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAGEND8_BORDER;
+ break;
+ case MOUSE_BUTTON_9:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAGEND9_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAGEND9_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAGEND9_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAGEND9_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAGEND9_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAGEND9_BORDER;
+ break;
+ case MOUSE_BUTTON_10:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAGEND10_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAGEND10_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAGEND10_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAGEND10_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAGEND10_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAGEND10_BORDER;
+ break;
+ case MOUSE_BUTTON_11:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAGEND11_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAGEND11_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAGEND11_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAGEND11_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAGEND11_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAGEND11_BORDER;
+ break;
default:
key = KEYC_MOUSE;
break;
@@ -836,7 +922,7 @@ have_event:
key = KEYC_DRAGGING;
else {
switch (MOUSE_BUTTONS(b)) {
- case 0:
+ case MOUSE_BUTTON_1:
if (where == PANE)
key = KEYC_MOUSEDRAG1_PANE;
if (where == STATUS)
@@ -850,7 +936,7 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEDRAG1_BORDER;
break;
- case 1:
+ case MOUSE_BUTTON_2:
if (where == PANE)
key = KEYC_MOUSEDRAG2_PANE;
if (where == STATUS)
@@ -864,7 +950,7 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEDRAG2_BORDER;
break;
- case 2:
+ case MOUSE_BUTTON_3:
if (where == PANE)
key = KEYC_MOUSEDRAG3_PANE;
if (where == STATUS)
@@ -878,6 +964,90 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEDRAG3_BORDER;
break;
+ case MOUSE_BUTTON_6:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAG6_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAG6_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAG6_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAG6_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAG6_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAG6_BORDER;
+ break;
+ case MOUSE_BUTTON_7:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAG7_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAG7_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAG7_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAG7_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAG7_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAG7_BORDER;
+ break;
+ case MOUSE_BUTTON_8:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAG8_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAG8_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAG8_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAG8_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAG8_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAG8_BORDER;
+ break;
+ case MOUSE_BUTTON_9:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAG9_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAG9_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAG9_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAG9_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAG9_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAG9_BORDER;
+ break;
+ case MOUSE_BUTTON_10:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAG10_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAG10_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAG10_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAG10_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAG10_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAG10_BORDER;
+ break;
+ case MOUSE_BUTTON_11:
+ if (where == PANE)
+ key = KEYC_MOUSEDRAG11_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDRAG11_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDRAG11_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDRAG11_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDRAG11_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDRAG11_BORDER;
+ break;
}
}
@@ -918,7 +1088,7 @@ have_event:
break;
case UP:
switch (MOUSE_BUTTONS(b)) {
- case 0:
+ case MOUSE_BUTTON_1:
if (where == PANE)
key = KEYC_MOUSEUP1_PANE;
if (where == STATUS)
@@ -932,7 +1102,7 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEUP1_BORDER;
break;
- case 1:
+ case MOUSE_BUTTON_2:
if (where == PANE)
key = KEYC_MOUSEUP2_PANE;
if (where == STATUS)
@@ -946,7 +1116,7 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEUP2_BORDER;
break;
- case 2:
+ case MOUSE_BUTTON_3:
if (where == PANE)
key = KEYC_MOUSEUP3_PANE;
if (where == STATUS)
@@ -960,11 +1130,95 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEUP3_BORDER;
break;
+ case MOUSE_BUTTON_6:
+ if (where == PANE)
+ key = KEYC_MOUSEUP6_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEUP6_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEUP6_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEUP6_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEUP6_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEUP6_BORDER;
+ break;
+ case MOUSE_BUTTON_7:
+ if (where == PANE)
+ key = KEYC_MOUSEUP7_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEUP7_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEUP7_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEUP7_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEUP7_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEUP7_BORDER;
+ break;
+ case MOUSE_BUTTON_8:
+ if (where == PANE)
+ key = KEYC_MOUSEUP8_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEUP8_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEUP8_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEUP8_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEUP8_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEUP8_BORDER;
+ break;
+ case MOUSE_BUTTON_9:
+ if (where == PANE)
+ key = KEYC_MOUSEUP9_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEUP9_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEUP9_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEUP9_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEUP9_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEUP9_BORDER;
+ break;
+ case MOUSE_BUTTON_10:
+ if (where == PANE)
+ key = KEYC_MOUSEUP1_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEUP1_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEUP1_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEUP1_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEUP1_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEUP1_BORDER;
+ break;
+ case MOUSE_BUTTON_11:
+ if (where == PANE)
+ key = KEYC_MOUSEUP11_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEUP11_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEUP11_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEUP11_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEUP11_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEUP11_BORDER;
+ break;
}
break;
case DOWN:
switch (MOUSE_BUTTONS(b)) {
- case 0:
+ case MOUSE_BUTTON_1:
if (where == PANE)
key = KEYC_MOUSEDOWN1_PANE;
if (where == STATUS)
@@ -978,7 +1232,7 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEDOWN1_BORDER;
break;
- case 1:
+ case MOUSE_BUTTON_2:
if (where == PANE)
key = KEYC_MOUSEDOWN2_PANE;
if (where == STATUS)
@@ -992,7 +1246,7 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEDOWN2_BORDER;
break;
- case 2:
+ case MOUSE_BUTTON_3:
if (where == PANE)
key = KEYC_MOUSEDOWN3_PANE;
if (where == STATUS)
@@ -1006,11 +1260,95 @@ have_event:
if (where == BORDER)
key = KEYC_MOUSEDOWN3_BORDER;
break;
+ case MOUSE_BUTTON_6:
+ if (where == PANE)
+ key = KEYC_MOUSEDOWN6_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDOWN6_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDOWN6_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDOWN6_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDOWN6_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDOWN6_BORDER;
+ break;
+ case MOUSE_BUTTON_7:
+ if (where == PANE)
+ key = KEYC_MOUSEDOWN7_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDOWN7_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDOWN7_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDOWN7_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDOWN7_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDOWN7_BORDER;
+ break;
+ case MOUSE_BUTTON_8:
+ if (where == PANE)
+ key = KEYC_MOUSEDOWN8_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDOWN8_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDOWN8_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDOWN8_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDOWN8_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDOWN8_BORDER;
+ break;
+ case MOUSE_BUTTON_9:
+ if (where == PANE)
+ key = KEYC_MOUSEDOWN9_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDOWN9_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDOWN9_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDOWN9_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDOWN9_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDOWN9_BORDER;
+ break;
+ case MOUSE_BUTTON_10:
+ if (where == PANE)
+ key = KEYC_MOUSEDOWN10_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDOWN10_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDOWN10_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDOWN10_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDOWN10_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDOWN10_BORDER;
+ break;
+ case MOUSE_BUTTON_11:
+ if (where == PANE)
+ key = KEYC_MOUSEDOWN11_PANE;
+ if (where == STATUS)
+ key = KEYC_MOUSEDOWN11_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_MOUSEDOWN11_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_MOUSEDOWN11_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_MOUSEDOWN11_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_MOUSEDOWN11_BORDER;
+ break;
}
break;
case SECOND:
switch (MOUSE_BUTTONS(b)) {
- case 0:
+ case MOUSE_BUTTON_1:
if (where == PANE)
key = KEYC_SECONDCLICK1_PANE;
if (where == STATUS)
@@ -1024,7 +1362,7 @@ have_event:
if (where == BORDER)
key = KEYC_SECONDCLICK1_BORDER;
break;
- case 1:
+ case MOUSE_BUTTON_2:
if (where == PANE)
key = KEYC_SECONDCLICK2_PANE;
if (where == STATUS)
@@ -1038,7 +1376,7 @@ have_event:
if (where == BORDER)
key = KEYC_SECONDCLICK2_BORDER;
break;
- case 2:
+ case MOUSE_BUTTON_3:
if (where == PANE)
key = KEYC_SECONDCLICK3_PANE;
if (where == STATUS)
@@ -1052,11 +1390,95 @@ have_event:
if (where == BORDER)
key = KEYC_SECONDCLICK3_BORDER;
break;
+ case MOUSE_BUTTON_6:
+ if (where == PANE)
+ key = KEYC_SECONDCLICK6_PANE;
+ if (where == STATUS)
+ key = KEYC_SECONDCLICK6_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_SECONDCLICK6_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_SECONDCLICK6_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_SECONDCLICK6_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_SECONDCLICK6_BORDER;
+ break;
+ case MOUSE_BUTTON_7:
+ if (where == PANE)
+ key = KEYC_SECONDCLICK7_PANE;
+ if (where == STATUS)
+ key = KEYC_SECONDCLICK7_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_SECONDCLICK7_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_SECONDCLICK7_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_SECONDCLICK7_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_SECONDCLICK7_BORDER;
+ break;
+ case MOUSE_BUTTON_8:
+ if (where == PANE)
+ key = KEYC_SECONDCLICK8_PANE;
+ if (where == STATUS)
+ key = KEYC_SECONDCLICK8_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_SECONDCLICK8_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_SECONDCLICK8_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_SECONDCLICK8_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_SECONDCLICK8_BORDER;
+ break;
+ case MOUSE_BUTTON_9:
+ if (where == PANE)
+ key = KEYC_SECONDCLICK9_PANE;
+ if (where == STATUS)
+ key = KEYC_SECONDCLICK9_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_SECONDCLICK9_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_SECONDCLICK9_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_SECONDCLICK9_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_SECONDCLICK9_BORDER;
+ break;
+ case MOUSE_BUTTON_10:
+ if (where == PANE)
+ key = KEYC_SECONDCLICK10_PANE;
+ if (where == STATUS)
+ key = KEYC_SECONDCLICK10_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_SECONDCLICK10_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_SECONDCLICK10_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_SECONDCLICK10_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_SECONDCLICK10_BORDER;
+ break;
+ case MOUSE_BUTTON_11:
+ if (where == PANE)
+ key = KEYC_SECONDCLICK11_PANE;
+ if (where == STATUS)
+ key = KEYC_SECONDCLICK11_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_SECONDCLICK11_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_SECONDCLICK11_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_SECONDCLICK11_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_SECONDCLICK11_BORDER;
+ break;
}
break;
case DOUBLE:
switch (MOUSE_BUTTONS(b)) {
- case 0:
+ case MOUSE_BUTTON_1:
if (where == PANE)
key = KEYC_DOUBLECLICK1_PANE;
if (where == STATUS)
@@ -1070,7 +1492,7 @@ have_event:
if (where == BORDER)
key = KEYC_DOUBLECLICK1_BORDER;
break;
- case 1:
+ case MOUSE_BUTTON_2:
if (where == PANE)
key = KEYC_DOUBLECLICK2_PANE;
if (where == STATUS)
@@ -1084,7 +1506,7 @@ have_event:
if (where == BORDER)
key = KEYC_DOUBLECLICK2_BORDER;
break;
- case 2:
+ case MOUSE_BUTTON_3:
if (where == PANE)
key = KEYC_DOUBLECLICK3_PANE;
if (where == STATUS)
@@ -1098,11 +1520,95 @@ have_event:
if (where == BORDER)
key = KEYC_DOUBLECLICK3_BORDER;
break;
+ case MOUSE_BUTTON_6:
+ if (where == PANE)
+ key = KEYC_DOUBLECLICK6_PANE;
+ if (where == STATUS)
+ key = KEYC_DOUBLECLICK6_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_DOUBLECLICK6_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_DOUBLECLICK6_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_DOUBLECLICK6_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_DOUBLECLICK6_BORDER;
+ break;
+ case MOUSE_BUTTON_7:
+ if (where == PANE)
+ key = KEYC_DOUBLECLICK7_PANE;
+ if (where == STATUS)
+ key = KEYC_DOUBLECLICK7_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_DOUBLECLICK7_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_DOUBLECLICK7_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_DOUBLECLICK7_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_DOUBLECLICK7_BORDER;
+ break;
+ case MOUSE_BUTTON_8:
+ if (where == PANE)
+ key = KEYC_DOUBLECLICK8_PANE;
+ if (where == STATUS)
+ key = KEYC_DOUBLECLICK8_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_DOUBLECLICK8_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_DOUBLECLICK8_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_DOUBLECLICK8_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_DOUBLECLICK8_BORDER;
+ break;
+ case MOUSE_BUTTON_9:
+ if (where == PANE)
+ key = KEYC_DOUBLECLICK9_PANE;
+ if (where == STATUS)
+ key = KEYC_DOUBLECLICK9_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_DOUBLECLICK9_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_DOUBLECLICK9_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_DOUBLECLICK9_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_DOUBLECLICK9_BORDER;
+ break;
+ case MOUSE_BUTTON_10:
+ if (where == PANE)
+ key = KEYC_DOUBLECLICK10_PANE;
+ if (where == STATUS)
+ key = KEYC_DOUBLECLICK10_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_DOUBLECLICK10_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_DOUBLECLICK10_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_DOUBLECLICK10_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_DOUBLECLICK10_BORDER;
+ break;
+ case MOUSE_BUTTON_11:
+ if (where == PANE)
+ key = KEYC_DOUBLECLICK11_PANE;
+ if (where == STATUS)
+ key = KEYC_DOUBLECLICK11_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_DOUBLECLICK11_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_DOUBLECLICK11_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_DOUBLECLICK11_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_DOUBLECLICK11_BORDER;
+ break;
}
break;
case TRIPLE:
switch (MOUSE_BUTTONS(b)) {
- case 0:
+ case MOUSE_BUTTON_1:
if (where == PANE)
key = KEYC_TRIPLECLICK1_PANE;
if (where == STATUS)
@@ -1116,7 +1622,7 @@ have_event:
if (where == BORDER)
key = KEYC_TRIPLECLICK1_BORDER;
break;
- case 1:
+ case MOUSE_BUTTON_2:
if (where == PANE)
key = KEYC_TRIPLECLICK2_PANE;
if (where == STATUS)
@@ -1130,7 +1636,7 @@ have_event:
if (where == BORDER)
key = KEYC_TRIPLECLICK2_BORDER;
break;
- case 2:
+ case MOUSE_BUTTON_3:
if (where == PANE)
key = KEYC_TRIPLECLICK3_PANE;
if (where == STATUS)
@@ -1144,6 +1650,90 @@ have_event:
if (where == BORDER)
key = KEYC_TRIPLECLICK3_BORDER;
break;
+ case MOUSE_BUTTON_6:
+ if (where == PANE)
+ key = KEYC_TRIPLECLICK6_PANE;
+ if (where == STATUS)
+ key = KEYC_TRIPLECLICK6_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_TRIPLECLICK6_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_TRIPLECLICK6_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_TRIPLECLICK6_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_TRIPLECLICK6_BORDER;
+ break;
+ case MOUSE_BUTTON_7:
+ if (where == PANE)
+ key = KEYC_TRIPLECLICK7_PANE;
+ if (where == STATUS)
+ key = KEYC_TRIPLECLICK7_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_TRIPLECLICK7_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_TRIPLECLICK7_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_TRIPLECLICK7_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_TRIPLECLICK7_BORDER;
+ break;
+ case MOUSE_BUTTON_8:
+ if (where == PANE)
+ key = KEYC_TRIPLECLICK8_PANE;
+ if (where == STATUS)
+ key = KEYC_TRIPLECLICK8_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_TRIPLECLICK8_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_TRIPLECLICK8_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_TRIPLECLICK8_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_TRIPLECLICK8_BORDER;
+ break;
+ case MOUSE_BUTTON_9:
+ if (where == PANE)
+ key = KEYC_TRIPLECLICK9_PANE;
+ if (where == STATUS)
+ key = KEYC_TRIPLECLICK9_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_TRIPLECLICK9_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_TRIPLECLICK9_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_TRIPLECLICK9_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_TRIPLECLICK9_BORDER;
+ break;
+ case MOUSE_BUTTON_10:
+ if (where == PANE)
+ key = KEYC_TRIPLECLICK10_PANE;
+ if (where == STATUS)
+ key = KEYC_TRIPLECLICK10_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_TRIPLECLICK10_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_TRIPLECLICK10_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_TRIPLECLICK10_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_TRIPLECLICK10_BORDER;
+ break;
+ case MOUSE_BUTTON_11:
+ if (where == PANE)
+ key = KEYC_TRIPLECLICK11_PANE;
+ if (where == STATUS)
+ key = KEYC_TRIPLECLICK11_STATUS;
+ if (where == STATUS_LEFT)
+ key = KEYC_TRIPLECLICK11_STATUS_LEFT;
+ if (where == STATUS_RIGHT)
+ key = KEYC_TRIPLECLICK11_STATUS_RIGHT;
+ if (where == STATUS_DEFAULT)
+ key = KEYC_TRIPLECLICK11_STATUS_DEFAULT;
+ if (where == BORDER)
+ key = KEYC_TRIPLECLICK11_BORDER;
+ break;
}
break;
}
@@ -2011,8 +2601,10 @@ server_client_check_redraw(struct client *c)
}
if (c->flags & CLIENT_ALLREDRAWFLAGS) {
- if (options_get_number(s->options, "set-titles"))
+ if (options_get_number(s->options, "set-titles")) {
server_client_set_title(c);
+ server_client_set_path(c);
+ }
screen_redraw_screen(c);
}
@@ -2058,6 +2650,26 @@ server_client_set_title(struct client *c)
format_free(ft);
}
+/* Set client path. */
+static void
+server_client_set_path(struct client *c)
+{
+ struct session *s = c->session;
+ const char *path;
+
+ if (s->curw == NULL)
+ return;
+ if (s->curw->window->active->base.path == NULL)
+ path = "";
+ else
+ path = s->curw->window->active->base.path;
+ if (c->path == NULL || strcmp(path, c->path) != 0) {
+ free(c->path);
+ c->path = xstrdup(path);
+ tty_set_path(&c->tty, c->path);
+ }
+}
+
/* Dispatch message from client. */
static void
server_client_dispatch(struct imsg *imsg, void *arg)