]> git.mdlowis.com Git - proto/labwc.git/commitdiff
Revert "keyboard: add window rule to send release-events (#2377)"
authortokyo4j <hrak1529@gmail.com>
Sun, 22 Dec 2024 13:04:15 +0000 (22:04 +0900)
committerHiroaki Yamamoto <hrak1529@gmail.com>
Sun, 29 Dec 2024 07:27:34 +0000 (16:27 +0900)
This reverts commit 2f8afb2376cfa8eeb89fc5afffa869be68d3988e.

docs/labwc-config.5.scd
include/window-rules.h
src/config/rcxml.c
src/input/keyboard.c
src/window-rules.c

index b3debf07637a0a7e9ea1b47c6c632521f785392b..a6b1c5a8bc0c115092ebec8ba18b5ae3e324fc9c 100644 (file)
@@ -1099,18 +1099,6 @@ situation.
        can be caused by *<margin>* settings or exclusive layer-shell clients
        such as panels.
 
-*<windowRules><windowRule wantAbsorbedModifierReleaseEvents="">* [yes|no|default]
-       *wantAbsorbedModifierReleaseEvents* allows clients to receive modifier
-       release events even if they are part of keybinds. Most clients should
-       not receive these, but some (for example blender) need it in some
-       situations.
-
-```
-<windowRules>
-  <windowRule identifier="blender" wantAbsorbedModifierReleaseEvents="yes"/>
-</windowRules>
-```
-
 ## MENU
 
 ```
index 30abfddb78681855e00bd10d5cbebb5bc21f6002..b93bc367b3dadd6601b65efa06cbbbe18c0088f0 100644 (file)
@@ -38,7 +38,6 @@ struct window_rule {
        enum property ignore_focus_request;
        enum property ignore_configure_request;
        enum property fixed_position;
-       enum property want_absorbed_modifier_release_events;
 
        struct wl_list link; /* struct rcxml.window_rules */
 };
index b87505e525ed50c9079c574814fceda0fbeaf4b3..31a63ccee379681d0fd416f9b6eeaaea2320aade 100644 (file)
@@ -358,8 +358,6 @@ fill_window_rule(char *nodename, char *content)
                set_property(content, &current_window_rule->ignore_configure_request);
        } else if (!strcasecmp(nodename, "fixedPosition")) {
                set_property(content, &current_window_rule->fixed_position);
-       } else if (!strcasecmp(nodename, "wantAbsorbedModifierReleaseEvents")) {
-               set_property(content, &current_window_rule->want_absorbed_modifier_release_events);
 
        /* Actions */
        } else if (!strcmp(nodename, "name.action")) {
index f21b71445898c30bb73910c526f4745b6c454a40..11dcb0516a9d0f5b31e901db540ac96790897cdc 100644 (file)
@@ -15,7 +15,6 @@
 #include "osd.h"
 #include "regions.h"
 #include "view.h"
-#include "window-rules.h"
 #include "workspaces.h"
 
 enum lab_key_handled {
@@ -366,8 +365,7 @@ get_keyinfo(struct wlr_keyboard *wlr_keyboard, uint32_t evdev_keycode)
 }
 
 static bool
-handle_key_release(struct server *server, uint32_t evdev_keycode,
-               bool is_modifier_key)
+handle_key_release(struct server *server, uint32_t evdev_keycode)
 {
        /*
         * Release events for keys that were not bound should always be
@@ -390,33 +388,11 @@ handle_key_release(struct server *server, uint32_t evdev_keycode,
                end_cycling(server);
        }
 
-       key_state_bound_key_remove(evdev_keycode);
-
-       /*
-        * There are some clients (for example blender) that want to see the
-        * modifier-release-event even if it was part of a keybinds. This is
-        * treated as a special case and can only be achieved by configuration.
-        *
-        * Most clients (including those using Qt and GTK) are setup to not see
-        * these modifier release events - and actually misbehave if they do.
-        * For example Firefox shows the menu bar if alt is pressed and then
-        * released, whereas if only pressed (because the release is absorbed)
-        * nothing happens. So, if Firefox saw bound modifier-release-events it
-        * would show the menu bar every time the window-switcher is used with
-        * alt-tab.
-        */
-       struct view *view = server->active_view;
-       if (is_modifier_key && view) {
-               if (window_rules_get_property(view, "wantAbsorbedModifierReleaseEvents")
-                               == LAB_PROP_TRUE) {
-                       return false;
-               }
-       }
-
        /*
         * If a press event was handled by a compositor binding, then do
         * not forward the corresponding release event to clients.
         */
+       key_state_bound_key_remove(evdev_keycode);
        return true;
 }
 
@@ -551,8 +527,7 @@ handle_compositor_keybindings(struct keyboard *keyboard,
                        actions_run(NULL, server, &cur_keybind->actions, NULL);
                        return true;
                } else {
-                       return handle_key_release(server, event->keycode,
-                               keyinfo.is_modifier);
+                       return handle_key_release(server, event->keycode);
                }
        }
 
index 7c88865fce63abb57e440ff82e007c8da751b4ad..0f4f1952d233ffc7796e3efa2ca7c7e5924f136e 100644 (file)
@@ -108,11 +108,6 @@ window_rules_get_property(struct view *view, const char *property)
                                        && !strcasecmp(property, "fixedPosition")) {
                                return rule->fixed_position;
                        }
-                       if (rule->want_absorbed_modifier_release_events
-                                       && !strcasecmp(property,
-                                       "wantAbsorbedModifierReleaseEvents")) {
-                               return rule->want_absorbed_modifier_release_events;
-                       }
                }
        }
        return LAB_PROP_UNSPECIFIED;