aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2020-05-02 15:15:52 +0100
committerNicholas Marriott <nicholas.marriott@gmail.com>2020-05-02 15:15:52 +0100
commitcb1131a29481246c9cb9b68cb8591cc747fcdd9a (patch)
tree7736d9346091821818762653fc08c811edbc0481
parente078f975c55fd42bf3c8396954038c9071cb5ec1 (diff)
downloadrtmux-cb1131a29481246c9cb9b68cb8591cc747fcdd9a.tar.gz
rtmux-cb1131a29481246c9cb9b68cb8591cc747fcdd9a.tar.bz2
rtmux-cb1131a29481246c9cb9b68cb8591cc747fcdd9a.zip
menu_mode_cb needs to return a screen also.
-rw-r--r--menu.c8
-rw-r--r--server-client.c9
2 files changed, 9 insertions, 8 deletions
diff --git a/menu.c b/menu.c
index 27836694..07fc8fa8 100644
--- a/menu.c
+++ b/menu.c
@@ -130,14 +130,12 @@ menu_free(struct menu *menu)
free(menu);
}
-static int
+static struct screen *
menu_mode_cb(struct client *c, __unused u_int *cx, __unused u_int *cy)
{
struct menu_data *md = c->overlay_data;
- if (~md->flags & MENU_NOMOUSE)
- return (MODE_MOUSE_ALL);
- return (0);
+ return (&md->s);
}
static void
@@ -351,6 +349,8 @@ menu_display(struct menu *menu, int flags, struct cmdq_item *item, u_int px,
if (fs != NULL)
cmd_find_copy_state(&md->fs, fs);
screen_init(&md->s, menu->width + 4, menu->count + 2, 0);
+ if (~md->flags & MENU_NOMOUSE)
+ md->s.mode |= MODE_MOUSE_ALL;
md->px = px;
md->py = py;
diff --git a/server-client.c b/server-client.c
index 23435b48..a9762c56 100644
--- a/server-client.c
+++ b/server-client.c
@@ -1540,7 +1540,7 @@ server_client_reset_state(struct client *c)
struct tty *tty = &c->tty;
struct window *w = c->session->curw->window;
struct window_pane *wp = w->active, *loop;
- struct screen *s;
+ struct screen *s = NULL;
struct options *oo = c->session->options;
int mode = 0, cursor, flags;
u_int cx = 0, cy = 0, ox, oy, sx, sy;
@@ -1553,9 +1553,10 @@ server_client_reset_state(struct client *c)
tty->flags &= ~TTY_BLOCK;
/* Get mode from overlay if any, else from screen. */
- if (c->overlay_draw != NULL && c->overlay_mode != NULL)
- s = c->overlay_mode(c, &cx, &cy);
- else
+ if (c->overlay_draw != NULL) {
+ if (c->overlay_mode != NULL)
+ s = c->overlay_mode(c, &cx, &cy);
+ } else
s = wp->screen;
if (s != NULL)
mode = s->mode;