wl_signal_emit(&pointer->signals.focus, pointer);
}
+EAPI void
+e_input_pointer_grab_start(E_Input_Pointer *pointer)
+{
+ if (!pointer) return;
+
+ if ((pointer->grab) && (pointer->grab->interface))
+ {
+ if (pointer->grab->interface->focus)
+ pointer->grab->interface->focus(pointer->grab);
+ }
+}
+
+EAPI void
+e_input_pointer_grab_end(E_Input_Pointer *pointer)
+{
+ if (!pointer) return;
+
+ pointer->grab = &pointer->default_grab;
+ if ((pointer->grab) && (pointer->grab->interface))
+ {
+ if (pointer->grab->interface->focus)
+ pointer->grab->interface->focus(pointer->grab);
+ }
+}
+
/* local functions */
static void
_e_input_capabilities_update(E_Input *seat)
wl_pointer_send_button(res, serial, timestamp, button, state);
}
- if ((ptr->button_count == 0) && (state == WL_POINTER_BUTTON_STATE_RELEASED))
+ if ((ptr->grab->button_count == 0) &&
+ (state == WL_POINTER_BUTTON_STATE_RELEASED))
{
E_Surface *es;
{
E_Input_Pointer *pointer;
E_Input_Pointer_Grab_Interface *interface;
+
+ Evas_Coord x, y;
+ unsigned int button, button_count;
+ unsigned int serial, timestamp;
+ Eina_Bool up : 1;
+
+ struct wl_client *client;
+ struct wl_list surfaces;
};
struct _E_Input_Pointer
E_Input_Pointer_Grab *grab;
E_Input_Pointer_Grab default_grab;
-
- Evas_Coord grab_x, grab_y;
- unsigned int grab_button, button_count;
- unsigned int grab_serial, grab_time;
};
EAPI Eina_Bool e_input_init(E_Compositor *comp, E_Input *seat, const char *name);
EAPI Eina_Bool e_input_touch_init(E_Input *seat);
EAPI void e_input_pointer_focus_set(E_Input_Pointer *pointer, E_Surface *surface, Evas_Coord x, Evas_Coord y);
+EAPI void e_input_pointer_grab_start(E_Input_Pointer *pointer);
+EAPI void e_input_pointer_grab_end(E_Input_Pointer *pointer);
# endif
#endif