diff --git a/clients/window.c b/clients/window.c index 466ce863..b7febed8 100644 --- a/clients/window.c +++ b/clients/window.c @@ -4496,6 +4496,20 @@ menu_button_handler(struct widget *widget, } } +static void +menu_touch_up_handler(struct widget *widget, + struct input *input, + uint32_t serial, + uint32_t time, + int32_t id, + void *data) +{ + struct menu *menu = data; + + input_ungrab(input); + menu_destroy(menu); +} + static void menu_redraw_handler(struct widget *widget, void *data) { @@ -4595,6 +4609,7 @@ window_show_menu(struct display *display, widget_set_leave_handler(menu->widget, menu_leave_handler); widget_set_motion_handler(menu->widget, menu_motion_handler); widget_set_button_handler(menu->widget, menu_button_handler); + widget_set_touch_up_handler(menu->widget, menu_touch_up_handler); input_grab(input, menu->widget, 0); frame_resize_inside(menu->frame, 200, count * 20);