summaryrefslogtreecommitdiffstats
path: root/popup.c
diff options
context:
space:
mode:
authornicm <nicm>2021-08-13 23:05:40 +0000
committernicm <nicm>2021-08-13 23:05:40 +0000
commit7d7d7c960593de4c37962ca2d74dbd13e5a3cc2b (patch)
tree6bff7fe294299410ca5ff272c90a2e379403adc4 /popup.c
parent63aa96864280ff07f706ebbae302b7c15abb964f (diff)
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.
Diffstat (limited to 'popup.c')
-rw-r--r--popup.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/popup.c b/popup.c
index 95de58a9..d4fc3833 100644
--- a/popup.c
+++ b/popup.c
@@ -442,6 +442,7 @@ popup_key_cb(struct client *c, void *data, struct key_event *event)
const char *buf;
size_t len;
u_int px, py, x;
+ enum { NONE, LEFT, RIGHT, TOP, BOTTOM } border = NONE;
if (pd->md != NULL) {
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;
return (0);
}
- if ((~pd->flags & POPUP_NOBORDER) &&
- (~m->b & MOUSE_MASK_META) &&
+ if (~pd->flags & POPUP_NOBORDER) {
+ 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 &&
- (m->x == pd->px ||
- m->x == pd->px + pd->sx - 1 ||
- m->y == pd->py ||
- m->y == pd->py + pd->sy - 1))
+ (border == LEFT || border == TOP))
goto menu;
- if ((m->b & MOUSE_MASK_META) ||
- ((~pd->flags & POPUP_NOBORDER) &&
- (m->x == pd->px ||
- m->x == pd->px + pd->sx - 1 ||
- m->y == pd->py ||
- m->y == pd->py + pd->sy - 1))) {
+ if (((m->b & MOUSE_MASK_MODIFIERS) == MOUSE_MASK_META) ||
+ border != NONE) {
if (!MOUSE_DRAG(m->b))
goto out;
if (MOUSE_BUTTONS(m->lb) == 0)