Eat scroll event if a key binding function is executed because of it.
When an axis (scroll) event results in a key binding function being executed, eat the scroll event so the underlying window doesn't receive it. Thanks to Scott Moreau for helping me solve this.
This commit is contained in:
committed by
Kristian Høgsberg
parent
976a050f8f
commit
14b2fe7020
+4
-1
@@ -250,7 +250,7 @@ weston_compositor_run_button_binding(struct weston_compositor *compositor,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WL_EXPORT void
|
WL_EXPORT int
|
||||||
weston_compositor_run_axis_binding(struct weston_compositor *compositor,
|
weston_compositor_run_axis_binding(struct weston_compositor *compositor,
|
||||||
struct weston_seat *seat,
|
struct weston_seat *seat,
|
||||||
uint32_t time, uint32_t axis,
|
uint32_t time, uint32_t axis,
|
||||||
@@ -262,8 +262,11 @@ weston_compositor_run_axis_binding(struct weston_compositor *compositor,
|
|||||||
if (b->axis == axis && b->modifier == seat->modifier_state) {
|
if (b->axis == axis && b->modifier == seat->modifier_state) {
|
||||||
weston_axis_binding_handler_t handler = b->handler;
|
weston_axis_binding_handler_t handler = b->handler;
|
||||||
handler(&seat->seat, time, axis, value, b->data);
|
handler(&seat->seat, time, axis, value, b->data);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
WL_EXPORT int
|
WL_EXPORT int
|
||||||
|
|||||||
+5
-4
@@ -1859,10 +1859,11 @@ notify_axis(struct weston_seat *seat, uint32_t time, uint32_t axis,
|
|||||||
|
|
||||||
weston_compositor_wake(compositor);
|
weston_compositor_wake(compositor);
|
||||||
|
|
||||||
if (value)
|
if (!value)
|
||||||
weston_compositor_run_axis_binding(compositor, seat,
|
return;
|
||||||
time, axis, value);
|
|
||||||
else
|
if (weston_compositor_run_axis_binding(compositor, seat,
|
||||||
|
time, axis, value))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (pointer->focus_resource)
|
if (pointer->focus_resource)
|
||||||
|
|||||||
+1
-1
@@ -656,7 +656,7 @@ weston_compositor_run_button_binding(struct weston_compositor *compositor,
|
|||||||
struct weston_seat *seat, uint32_t time,
|
struct weston_seat *seat, uint32_t time,
|
||||||
uint32_t button,
|
uint32_t button,
|
||||||
enum wl_pointer_button_state value);
|
enum wl_pointer_button_state value);
|
||||||
void
|
int
|
||||||
weston_compositor_run_axis_binding(struct weston_compositor *compositor,
|
weston_compositor_run_axis_binding(struct weston_compositor *compositor,
|
||||||
struct weston_seat *seat, uint32_t time,
|
struct weston_seat *seat, uint32_t time,
|
||||||
uint32_t axis, int32_t value);
|
uint32_t axis, int32_t value);
|
||||||
|
|||||||
Reference in New Issue
Block a user