wlmaker
Loading...
Searching...
No Matches
Classes | Typedefs | Functions | Variables
root.h File Reference
#include <libbase/libbase.h>
#include <stdbool.h>
#include <stdint.h>
#include <wayland-server-core.h>
#include "element.h"
#include "input.h"
#include "surface.h"
#include "workspace.h"
Include dependency graph for root.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  wlmtk_root_events_t
 

Typedefs

typedef struct _wlmtk_root_t wlmtk_root_t
 

Functions

wlmtk_root_twlmtk_root_create (struct wlr_scene *wlr_scene_ptr, struct wlr_output_layout *wlr_output_layout_ptr)
 
void wlmtk_root_destroy (wlmtk_root_t *root_ptr)
 
wlmtk_root_events_twlmtk_root_events (wlmtk_root_t *root_ptr)
 
bool wlmtk_root_pointer_motion (wlmtk_root_t *root_ptr, double x, double y, uint32_t time_msec, wlmtk_pointer_t *pointer_ptr)
 
bool wlmtk_root_pointer_button (wlmtk_root_t *root_ptr, const struct wlr_pointer_button_event *event_ptr)
 
bool wlmtk_root_pointer_axis (wlmtk_root_t *root_ptr, struct wlr_pointer_axis_event *wlr_pointer_axis_event_ptr)
 
void wlmtk_root_add_workspace (wlmtk_root_t *root_ptr, wlmtk_workspace_t *workspace_ptr)
 
void wlmtk_root_remove_workspace (wlmtk_root_t *root_ptr, wlmtk_workspace_t *workspace_ptr)
 
wlmtk_workspace_twlmtk_root_get_current_workspace (wlmtk_root_t *root_ptr)
 
void wlmtk_root_switch_to_next_workspace (wlmtk_root_t *root_ptr)
 
void wlmtk_root_switch_to_previous_workspace (wlmtk_root_t *root_ptr)
 
void wlmtk_root_for_each_workspace (wlmtk_root_t *root_ptr, void(*func)(bs_dllist_node_t *dlnode_ptr, void *ud_ptr), void *ud_ptr)
 
bool wlmtk_root_lock (wlmtk_root_t *root_ptr, wlmtk_element_t *element_ptr)
 
bool wlmtk_root_unlock (wlmtk_root_t *root_ptr, wlmtk_element_t *element_ptr)
 
bool wlmtk_root_locked (wlmtk_root_t *root_ptr)
 
void wlmtk_root_lock_unreference (wlmtk_root_t *root_ptr, wlmtk_element_t *element_ptr)
 
wlmtk_element_twlmtk_root_element (wlmtk_root_t *root_ptr)
 

Variables

const bs_test_case_t wlmtk_root_test_cases []
 

Detailed Description

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Typedef Documentation

◆ wlmtk_root_t

typedef struct _wlmtk_root_t wlmtk_root_t

Forward declaration: Root element (technically: container).

Function Documentation

◆ wlmtk_root_add_workspace()

void wlmtk_root_add_workspace ( wlmtk_root_t root_ptr,
wlmtk_workspace_t workspace_ptr 
)

Adds a workspace.

Parameters
root_ptr
workspace_ptr

◆ wlmtk_root_create()

wlmtk_root_t * wlmtk_root_create ( struct wlr_scene *  wlr_scene_ptr,
struct wlr_output_layout *  wlr_output_layout_ptr 
)

Creates the root element.

Parameters
wlr_scene_ptr
wlr_output_layout_ptr
Returns
Handle of the root element or NULL on error.

◆ wlmtk_root_destroy()

void wlmtk_root_destroy ( wlmtk_root_t root_ptr)

Destroys the root element.

Parameters
root_ptr

◆ wlmtk_root_element()

wlmtk_element_t * wlmtk_root_element ( wlmtk_root_t root_ptr)
Returns
pointer to the root's wlmtk_element_t. (Temporary)

◆ wlmtk_root_events()

wlmtk_root_events_t * wlmtk_root_events ( wlmtk_root_t root_ptr)

Gets the set of events available in root. To bind listeners to.

Parameters
root_ptr
Returns
Pointer to wlmtk_root_t::events.

◆ wlmtk_root_for_each_workspace()

void wlmtk_root_for_each_workspace ( wlmtk_root_t root_ptr,
void(*)(bs_dllist_node_t *dlnode_ptr, void *ud_ptr)  func,
void *  ud_ptr 
)

Runs |func()| for each workspace.

Parameters
root_ptr
func
ud_ptr

◆ wlmtk_root_get_current_workspace()

wlmtk_workspace_t * wlmtk_root_get_current_workspace ( wlmtk_root_t root_ptr)

Returns a pointer to the currently-active workspace.

Parameters
root_ptr

◆ wlmtk_root_lock()

bool wlmtk_root_lock ( wlmtk_root_t root_ptr,
wlmtk_element_t element_ptr 
)

Locks the root, using the provided element.

The root must not be locked already. If locked successfully, the root will keep a reference to element_ptr. The lock must call wlmtk_root_unlock to unlock root, and for releasing the reference.

Parameters
root_ptr
element_ptr
Returns
Whether the lock was established.

◆ wlmtk_root_lock_unreference()

void wlmtk_root_lock_unreference ( wlmtk_root_t root_ptr,
wlmtk_element_t element_ptr 
)

Releases the lock reference, but keeps the root locked.

This is in accordance with the session lock protocol specification [1], stating the session should remain locked if the client dies. This call is a no-op if element_ptr is not currently the lock of root_ptr.

[1] https://wayland.app/protocols/ext-session-lock-v1

Parameters
root_ptr
element_ptr

◆ wlmtk_root_locked()

bool wlmtk_root_locked ( wlmtk_root_t root_ptr)
Returns
Whether root is locked.

◆ wlmtk_root_pointer_axis()

bool wlmtk_root_pointer_axis ( wlmtk_root_t root_ptr,
struct wlr_pointer_axis_event *  wlr_pointer_axis_event_ptr 
)

Handles a pointer axis event.

Parameters
root_ptr
wlr_pointer_axis_event_ptr
Returns
Whether the axis event was consumed.

◆ wlmtk_root_pointer_button()

bool wlmtk_root_pointer_button ( wlmtk_root_t root_ptr,
const struct wlr_pointer_button_event *  event_ptr 
)

Handles a button event: Translates to button down/up/click/dblclick events.

Each button activity (button pressed or released) will directly trigger a corresponding BUTTON_DOWN or BUTTON_UP event. Depending on timing and motion, a "released" event may also triccer a CLICK, DOUBLE_CLICK or DRAG event. These events will be forwarded to the event currently having pointer focus.

TODO(kaese.nosp@m.r@gu.nosp@m.bbe.c.nosp@m.h): Implement DOUBLE_CLICK and DRAG events, and make it well tested.

Parameters
root_ptr
event_ptr
Returns
Whether the button was consumed.

◆ wlmtk_root_pointer_motion()

bool wlmtk_root_pointer_motion ( wlmtk_root_t root_ptr,
double  x,
double  y,
uint32_t  time_msec,
wlmtk_pointer_t pointer_ptr 
)

Handles a pointer motion event.

Parameters
root_ptr
x
y
time_msec
pointer_ptr
Returns
Whether there was an element under the pointer.

◆ wlmtk_root_remove_workspace()

void wlmtk_root_remove_workspace ( wlmtk_root_t root_ptr,
wlmtk_workspace_t workspace_ptr 
)

Removes the workspace.

Parameters
root_ptr
workspace_ptr

◆ wlmtk_root_switch_to_next_workspace()

void wlmtk_root_switch_to_next_workspace ( wlmtk_root_t root_ptr)

Switches to the next workspace.

Parameters
root_ptr

◆ wlmtk_root_switch_to_previous_workspace()

void wlmtk_root_switch_to_previous_workspace ( wlmtk_root_t root_ptr)

Switches to the previous workspace.

Parameters
root_ptr

◆ wlmtk_root_unlock()

bool wlmtk_root_unlock ( wlmtk_root_t root_ptr,
wlmtk_element_t element_ptr 
)

Unlocks the root, and releases the reference from wlmtk_root_lock.

Unlocking can only be done with element_ptr matching the element_ptr argument from wlmtk_root_lock.

Parameters
root_ptr
element_ptr
Returns
Whether the lock was lifted.

Variable Documentation

◆ wlmtk_root_test_cases

const bs_test_case_t wlmtk_root_test_cases[]
extern

Unit test cases.