@@ -53,6 +53,7 @@ struct wpe_view_backend;
5353struct wpe_input_axis_event ;
5454struct wpe_input_keyboard_event ;
5555struct wpe_input_pointer_event ;
56+ struct wpe_input_pointer_lock_event ;
5657struct wpe_input_touch_event ;
5758
5859struct wpe_view_backend_client ;
@@ -146,6 +147,37 @@ WPE_EXPORT
146147void
147148wpe_view_backend_set_fullscreen_handler (struct wpe_view_backend * , wpe_view_backend_fullscreen_handler handler , void * userdata );
148149
150+ /**
151+ * wpe_view_backend_pointer_lock_handler:
152+ * @userdata: (transfer none): User data passed to the embedder.
153+ * @enable: (transfer none): User data passed to the embedder.
154+ *
155+ * Type of functions used by an embedder to implement pointer lock in web views.
156+ *
157+ * Returns: a boolean indicating whether the operation was completed.
158+ *
159+ * Since: 1.14
160+ */
161+ typedef bool (* wpe_view_backend_pointer_lock_handler )(void * userdata , bool enable );
162+
163+ /**
164+ * wpe_view_backend_set_pointer_lock_handler:
165+ * @view_backend: (transfer none): The view backend to obtains events from.
166+ * @handler: (transfer none): Function used by an embedder to implement pointer lock.
167+ * @userdata: (transfer none): User data passed to the handler function.
168+ *
169+ * Handler function set by an embedder to implement pointer lock in web views.
170+ *
171+ * This function must be only used once for a given @view_backend, the handler
172+ * cannot be changed once it has been set.
173+ *
174+ * Since: 1.14
175+ */
176+ WPE_EXPORT
177+ void wpe_view_backend_set_pointer_lock_handler (struct wpe_view_backend * ,
178+ wpe_view_backend_pointer_lock_handler handler ,
179+ void * userdata );
180+
149181WPE_EXPORT
150182void
151183wpe_view_backend_initialize (struct wpe_view_backend * );
@@ -231,12 +263,12 @@ struct wpe_view_backend_input_client {
231263 void (* handle_pointer_event )(void * , struct wpe_input_pointer_event * );
232264 void (* handle_axis_event )(void * , struct wpe_input_axis_event * );
233265 void (* handle_touch_event )(void * , struct wpe_input_touch_event * );
266+ void (* handle_pointer_lock_event )(void * , struct wpe_input_pointer_lock_event * );
234267
235268 /*< private >*/
236269 void (* _wpe_reserved0 )(void );
237270 void (* _wpe_reserved1 )(void );
238271 void (* _wpe_reserved2 )(void );
239- void (* _wpe_reserved3 )(void );
240272};
241273
242274WPE_EXPORT
@@ -255,6 +287,9 @@ WPE_EXPORT
255287void
256288wpe_view_backend_dispatch_touch_event (struct wpe_view_backend * , struct wpe_input_touch_event * );
257289
290+ WPE_EXPORT
291+ void wpe_view_backend_dispatch_pointer_lock_event (struct wpe_view_backend * , struct wpe_input_pointer_lock_event * );
292+
258293/**
259294 * wpe_view_backend_fullscreen_client:
260295 * @did_enter_fullscreen: Invoked after fullscreen has been successfully entered.
@@ -345,6 +380,31 @@ WPE_EXPORT
345380void
346381wpe_view_backend_dispatch_request_exit_fullscreen (struct wpe_view_backend * );
347382
383+ /**
384+ * wpe_view_backend_request_pointer_lock:
385+ * @view_backend: (transfer none): The view backend that triggered the event.
386+ *
387+ * Request the platform to lock the pointer.
388+ *
389+ * Returns: a boolean indicating whether the operation was completed.
390+ *
391+ * Since: 1.14
392+ */
393+ WPE_EXPORT
394+ bool wpe_view_backend_request_pointer_lock (struct wpe_view_backend * );
395+
396+ /**
397+ * wpe_view_backend_request_pointer_unlock:
398+ * @view_backend: (transfer none): The view backend that triggered the event.
399+ *
400+ * Request the platform to unlock the pointer.
401+ *
402+ * Returns: a boolean indicating whether the operation was completed.
403+ *
404+ * Since: 1.14
405+ */
406+ WPE_EXPORT
407+ bool wpe_view_backend_request_pointer_unlock (struct wpe_view_backend * );
348408
349409#ifdef __cplusplus
350410}
0 commit comments