diff options
author | Thomas Adam <thomas@xteddy.org> | 2021-08-14 01:35:27 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2021-08-14 01:35:27 +0100 |
commit | 79f075bf1b994741e5834eeb8465d2b51007ad82 (patch) | |
tree | 0d007dd19180bb289bdf19348fd4545a996e3f39 /popup.c | |
parent | 54773d23b5ceb779c524dcac6bf3b848886fb6d6 (diff) | |
parent | 7d7d7c960593de4c37962ca2d74dbd13e5a3cc2b (diff) |
Merge branch 'obsd-master' into master
Diffstat (limited to 'popup.c')
-rw-r--r-- | popup.c | 27 |
1 files changed, 15 insertions, 12 deletions
@@ -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) |