compositor: Make click to activate behavior a binding
This commit is contained in:
+24
-8
@@ -1286,14 +1286,6 @@ notify_button(struct wl_input_device *device,
|
|||||||
else
|
else
|
||||||
wlsc_compositor_idle_release(compositor);
|
wlsc_compositor_idle_release(compositor);
|
||||||
|
|
||||||
if (state && surface && device->grab == NULL) {
|
|
||||||
compositor->shell->activate(compositor->shell,
|
|
||||||
surface, wd, time);
|
|
||||||
wl_input_device_start_grab(device,
|
|
||||||
&device->implicit_grab,
|
|
||||||
button, time);
|
|
||||||
}
|
|
||||||
|
|
||||||
wl_list_for_each(b, &compositor->binding_list, link) {
|
wl_list_for_each(b, &compositor->binding_list, link) {
|
||||||
if (b->button == button &&
|
if (b->button == button &&
|
||||||
b->modifier == wd->modifier_state && state) {
|
b->modifier == wd->modifier_state && state) {
|
||||||
@@ -1303,6 +1295,12 @@ notify_button(struct wl_input_device *device,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (state && surface && device->grab == NULL) {
|
||||||
|
wl_input_device_start_grab(device,
|
||||||
|
&device->implicit_grab,
|
||||||
|
button, time);
|
||||||
|
}
|
||||||
|
|
||||||
if (device->grab)
|
if (device->grab)
|
||||||
device->grab->interface->button(device->grab, time,
|
device->grab->interface->button(device->grab, time,
|
||||||
button, state);
|
button, state);
|
||||||
@@ -1326,6 +1324,21 @@ terminate_binding(struct wl_input_device *device, uint32_t time,
|
|||||||
wl_display_terminate(compositor->wl_display);
|
wl_display_terminate(compositor->wl_display);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
click_to_activate_binding(struct wl_input_device *device,
|
||||||
|
uint32_t time, uint32_t key,
|
||||||
|
uint32_t button, uint32_t state, void *data)
|
||||||
|
{
|
||||||
|
struct wlsc_input_device *wd = (struct wlsc_input_device *) device;
|
||||||
|
struct wlsc_compositor *compositor = data;
|
||||||
|
struct wlsc_surface *focus;
|
||||||
|
|
||||||
|
focus = (struct wlsc_surface *) device->pointer_focus;
|
||||||
|
if (state && focus && device->grab == NULL)
|
||||||
|
compositor->shell->activate(compositor->shell,
|
||||||
|
focus, wd, time);
|
||||||
|
}
|
||||||
|
|
||||||
WL_EXPORT struct wlsc_binding *
|
WL_EXPORT struct wlsc_binding *
|
||||||
wlsc_compositor_add_binding(struct wlsc_compositor *compositor,
|
wlsc_compositor_add_binding(struct wlsc_compositor *compositor,
|
||||||
uint32_t key, uint32_t button, uint32_t modifier,
|
uint32_t key, uint32_t button, uint32_t modifier,
|
||||||
@@ -1906,6 +1919,9 @@ wlsc_compositor_init(struct wlsc_compositor *ec, struct wl_display *display)
|
|||||||
MODIFIER_CTRL | MODIFIER_ALT,
|
MODIFIER_CTRL | MODIFIER_ALT,
|
||||||
terminate_binding, ec);
|
terminate_binding, ec);
|
||||||
|
|
||||||
|
wlsc_compositor_add_binding(ec, 0, BTN_LEFT, 0,
|
||||||
|
click_to_activate_binding, ec);
|
||||||
|
|
||||||
screenshooter_create(ec);
|
screenshooter_create(ec);
|
||||||
|
|
||||||
wlsc_data_device_manager_init(ec);
|
wlsc_data_device_manager_init(ec);
|
||||||
|
|||||||
Reference in New Issue
Block a user