wlmaker
Loading...
Searching...
No Matches
_wlmtk_element_vmt_t Struct Reference

#include <element.h>

Public Attributes

void(* destroy )(wlmtk_element_t *element_ptr)
 
struct wlr_scene_node *(* create_scene_node )(wlmtk_element_t *element_ptr, struct wlr_scene_tree *wlr_scene_tree_ptr)
 
void(* get_dimensions )(wlmtk_element_t *element_ptr, int *x1_ptr, int *y1_ptr, int *x2_ptr, int *y2_ptr)
 
void(* get_pointer_area )(wlmtk_element_t *element_ptr, int *left_ptr, int *top_ptr, int *right_ptr, int *bottom_ptr)
 
bool(* pointer_motion )(wlmtk_element_t *element_ptr, double x, double y, uint32_t time_msec)
 
bool(* pointer_button )(wlmtk_element_t *element_ptr, const wlmtk_button_event_t *button_event_ptr)
 
bool(* pointer_axis )(wlmtk_element_t *element_ptr, struct wlr_pointer_axis_event *wlr_pointer_axis_event_ptr)
 
void(* pointer_enter )(wlmtk_element_t *element_ptr)
 
void(* pointer_leave )(wlmtk_element_t *element_ptr)
 

Detailed Description

Virtual method table for the element.

Member Data Documentation

◆ create_scene_node

struct wlr_scene_node *(* _wlmtk_element_vmt_t::create_scene_node) (wlmtk_element_t *element_ptr, struct wlr_scene_tree *wlr_scene_tree_ptr)

Abstract: Creates element's scene graph API node, child to wlr_scene_tree_ptr.

◆ destroy

void(* _wlmtk_element_vmt_t::destroy) (wlmtk_element_t *element_ptr)

Abstract: Destroys the implementation of the element.

◆ get_dimensions

void(* _wlmtk_element_vmt_t::get_dimensions) (wlmtk_element_t *element_ptr, int *x1_ptr, int *y1_ptr, int *x2_ptr, int *y2_ptr)

Abstract: Gets dimensions of the element, relative to the element's position.

◆ get_pointer_area

void(* _wlmtk_element_vmt_t::get_pointer_area) (wlmtk_element_t *element_ptr, int *left_ptr, int *top_ptr, int *right_ptr, int *bottom_ptr)

Gets element area to accept pointer activity, relative to position.

◆ pointer_axis

bool(* _wlmtk_element_vmt_t::pointer_axis) (wlmtk_element_t *element_ptr, struct wlr_pointer_axis_event *wlr_pointer_axis_event_ptr)

Indicates a pointer axis event.

Parameters
element_ptr
wlr_pointer_axis_event_ptr
Returns
true If the axis event was consumed.

◆ pointer_button

bool(* _wlmtk_element_vmt_t::pointer_button) (wlmtk_element_t *element_ptr, const wlmtk_button_event_t *button_event_ptr)

Indicates pointer button event.

Parameters
element_ptr
button_event_ptr
Returns
true If the button event was consumed.

◆ pointer_enter

void(* _wlmtk_element_vmt_t::pointer_enter) (wlmtk_element_t *element_ptr)

Indicates the pointer has entered the element's area.

TODO(kaese.nosp@m.r@gu.nosp@m.bbe.c.nosp@m.h): pointer_enter and pointer_leave would better be handled as events, where clients subscribe via listeners. Consider changing that.

Parameters
element_ptr

◆ pointer_leave

void(* _wlmtk_element_vmt_t::pointer_leave) (wlmtk_element_t *element_ptr)

Indicates the pointer has left the element's area.

Parameters
element_ptr

◆ pointer_motion

bool(* _wlmtk_element_vmt_t::pointer_motion) (wlmtk_element_t *element_ptr, double x, double y, uint32_t time_msec)

Indicates pointer motion into or within the element area to (x,y).

The default implementation at _wlmtk_element_pointer_motion updates wlmtk_element_t::last_pointer_x, wlmtk_element_t::last_pointer_y and wlmtk_element_t::last_pointer_time_msec.

Derived classes that overwrite this method are advised to call the initial implementation for keeping these internals updated.

Parameters
element_ptr
x
y
time_msec
Returns
Whether the motion is considered within the element's pointer area. If it returns true, the caller should consider this element as having pointer focus.

The documentation for this struct was generated from the following file: