]> git.mdlowis.com Git - proto/labwc.git/commitdiff
Prevent rare crash due to layering move / resize / menu operations
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Tue, 7 Mar 2023 21:59:56 +0000 (22:59 +0100)
committerJohan Malm <johanmalm@users.noreply.github.com>
Tue, 7 Mar 2023 22:23:46 +0000 (22:23 +0000)
Fixes #817

Reported-by: @kode54
src/action.c
src/interactive.c

index 96b02145b5e1bfa0e1236388510662f2aaf79172..bea2d8965d6cb6a5701f80e8db22d87cc3607fd5 100644 (file)
@@ -211,6 +211,12 @@ void action_list_free(struct wl_list *action_list)
 static void
 show_menu(struct server *server, struct view *view, const char *menu_name)
 {
+       if (server->input_mode != LAB_INPUT_STATE_PASSTHROUGH
+                       && server->input_mode != LAB_INPUT_STATE_MENU) {
+               /* Prevent opening a menu while resizing / moving a view */
+               return;
+       }
+
        bool force_menu_top_left = false;
        struct menu *menu = menu_get_by_id(menu_name);
        if (!menu) {
index 482b20ea1ccaad00aeda3e4ca851ed37d1cf75ef..728c92e1318af968ef50d74c1e76333c3d4b0a30 100644 (file)
@@ -28,6 +28,10 @@ interactive_begin(struct view *view, enum input_mode mode, uint32_t edges)
        struct seat *seat = &server->seat;
        struct wlr_box geometry = view->current;
 
+       if (server->input_mode != LAB_INPUT_STATE_PASSTHROUGH) {
+               return;
+       }
+
        switch (mode) {
        case LAB_INPUT_STATE_MOVE:
                if (view->fullscreen) {