Each binding is a specific key combination which means 'mod+button' is not the
same as 'mod|shift+button'. The new resize functionality detects shift button
state to toggle modes during the resize grab. However, attempting to initiate
a grab with mod|shift+button fails (when not clicking a grabbable edge) because
there is no key binding for this combination. Here we install a binding that
simply calls the resize function so resize can be initiated with either binding
combination.

---
 src/shell.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/shell.c b/src/shell.c
index a5fc83a..d4fd544 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -2451,6 +2451,12 @@ resize_binding(struct wl_seat *seat, uint32_t time, 
uint32_t button, void *data)
 }
 
 static void
+resize_from_center_binding(struct wl_seat *seat, uint32_t time, uint32_t 
button, void *data)
+{
+       resize_binding(seat, time, button, data);
+}
+
+static void
 surface_opacity_binding(struct wl_seat *seat, uint32_t time, uint32_t axis,
                        wl_fixed_t value, void *data)
 {
@@ -3985,6 +3991,8 @@ shell_add_bindings(struct weston_compositor *ec, struct 
desktop_shell *shell)
                                             shell);
        weston_compositor_add_button_binding(ec, BTN_MIDDLE, mod,
                                             resize_binding, shell);
+       weston_compositor_add_button_binding(ec, BTN_MIDDLE, mod | 
MODIFIER_SHIFT,
+                                            resize_from_center_binding, shell);
        weston_compositor_add_button_binding(ec, BTN_RIGHT, mod,
                                             rotate_binding, NULL);
        weston_compositor_add_key_binding(ec, KEY_TAB, mod, switcher_binding,
-- 
1.7.10.4

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to