summaryrefslogtreecommitdiffstats
path: root/popup.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2021-08-14 01:35:27 +0100
committerThomas Adam <thomas@xteddy.org>2021-08-14 01:35:27 +0100
commit79f075bf1b994741e5834eeb8465d2b51007ad82 (patch)
tree0d007dd19180bb289bdf19348fd4545a996e3f39 /popup.c
parent54773d23b5ceb779c524dcac6bf3b848886fb6d6 (diff)
parent7d7d7c960593de4c37962ca2d74dbd13e5a3cc2b (diff)
Merge branch 'obsd-master' into master
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 9565b012..3f64a852 100644
--- a/popup.c
+++ b/popup.c
@@ -441,6 +441,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) {
@@ -467,20 +468,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)