mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 01:48:47 +00:00
Tweak how mouse works on popup: only Meta alone resizes or moves, not
Meta with other modifiers; button 2 on the left or top border opens menu, right or bottom resizes; button 1 on any border moves.
This commit is contained in:
parent
63aa968642
commit
7d7d7c9605
27
popup.c
27
popup.c
@ -442,6 +442,7 @@ popup_key_cb(struct client *c, void *data, struct key_event *event)
|
|||||||
const char *buf;
|
const char *buf;
|
||||||
size_t len;
|
size_t len;
|
||||||
u_int px, py, x;
|
u_int px, py, x;
|
||||||
|
enum { NONE, LEFT, RIGHT, TOP, BOTTOM } border = NONE;
|
||||||
|
|
||||||
if (pd->md != NULL) {
|
if (pd->md != NULL) {
|
||||||
if (menu_key_cb(c, pd->md, event) == 1) {
|
if (menu_key_cb(c, pd->md, event) == 1) {
|
||||||
@ -468,20 +469,22 @@ popup_key_cb(struct client *c, void *data, struct key_event *event)
|
|||||||
goto menu;
|
goto menu;
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
if ((~pd->flags & POPUP_NOBORDER) &&
|
if (~pd->flags & POPUP_NOBORDER) {
|
||||||
(~m->b & MOUSE_MASK_META) &&
|
if (m->x == pd->px)
|
||||||
|
border = LEFT;
|
||||||
|
else if (m->x == pd->px + pd->sx - 1)
|
||||||
|
border = RIGHT;
|
||||||
|
else if (m->y == pd->py)
|
||||||
|
border = TOP;
|
||||||
|
else if (m->y == pd->py + pd->sy - 1)
|
||||||
|
border = BOTTOM;
|
||||||
|
}
|
||||||
|
if ((m->b & MOUSE_MASK_MODIFIERS) == 0 &&
|
||||||
MOUSE_BUTTONS(m->b) == 2 &&
|
MOUSE_BUTTONS(m->b) == 2 &&
|
||||||
(m->x == pd->px ||
|
(border == LEFT || border == TOP))
|
||||||
m->x == pd->px + pd->sx - 1 ||
|
|
||||||
m->y == pd->py ||
|
|
||||||
m->y == pd->py + pd->sy - 1))
|
|
||||||
goto menu;
|
goto menu;
|
||||||
if ((m->b & MOUSE_MASK_META) ||
|
if (((m->b & MOUSE_MASK_MODIFIERS) == MOUSE_MASK_META) ||
|
||||||
((~pd->flags & POPUP_NOBORDER) &&
|
border != NONE) {
|
||||||
(m->x == pd->px ||
|
|
||||||
m->x == pd->px + pd->sx - 1 ||
|
|
||||||
m->y == pd->py ||
|
|
||||||
m->y == pd->py + pd->sy - 1))) {
|
|
||||||
if (!MOUSE_DRAG(m->b))
|
if (!MOUSE_DRAG(m->b))
|
||||||
goto out;
|
goto out;
|
||||||
if (MOUSE_BUTTONS(m->lb) == 0)
|
if (MOUSE_BUTTONS(m->lb) == 0)
|
||||||
|
1
tmux.h
1
tmux.h
@ -1158,6 +1158,7 @@ RB_HEAD(sessions, session);
|
|||||||
#define MOUSE_MASK_CTRL 16
|
#define MOUSE_MASK_CTRL 16
|
||||||
#define MOUSE_MASK_DRAG 32
|
#define MOUSE_MASK_DRAG 32
|
||||||
#define MOUSE_MASK_WHEEL 64
|
#define MOUSE_MASK_WHEEL 64
|
||||||
|
#define MOUSE_MASK_MODIFIERS (MOUSE_MASK_SHIFT|MOUSE_MASK_META|MOUSE_MASK_CTRL)
|
||||||
|
|
||||||
/* Mouse wheel states. */
|
/* Mouse wheel states. */
|
||||||
#define MOUSE_WHEEL_UP 0
|
#define MOUSE_WHEEL_UP 0
|
||||||
|
Loading…
Reference in New Issue
Block a user