wlmaker
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations | Functions
view.h File Reference
#include <stdbool.h>
#include <stdint.h>
#include <libbase/libbase.h>
#include <wayland-server-core.h>
#include <wlr/types/wlr_scene.h>
#include "iconified.h"
#include "interactive.h"
#include "server.h"
#include "workspace.h"
Include dependency graph for view.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  wlmaker_client_t
 
struct  wlmaker_view_impl_t
 
struct  _wlmaker_view_t
 

Typedefs

typedef struct _wlmaker_view_t wlmaker_view_t
 
typedef uint32_t(* wlmaker_view_activate_callback_t) (wlmaker_view_t *view_ptr, bool activated)
 
typedef void(* wlmaker_view_send_close_callback_t) (wlmaker_view_t *view_ptr)
 
typedef void(* wlmaker_view_set_size_callback_t) (wlmaker_view_t *view_ptr, int width, int height)
 

Enumerations

enum  wlmaker_view_anchor_t { WLMAKER_VIEW_ANCHOR_TOP = (UINT32_C(1) << 0) , WLMAKER_VIEW_ANCHOR_BOTTOM = (UINT32_C(1) << 1) , WLMAKER_VIEW_ANCHOR_LEFT = (UINT32_C(1) << 2) , WLMAKER_VIEW_ANCHOR_RIGHT = (UINT32_C(1) << 3) }
 

Functions

void wlmaker_view_init (wlmaker_view_t *view_ptr, const wlmaker_view_impl_t *view_impl_ptr, wlmaker_server_t *server_ptr, struct wlr_surface *wlr_surface_ptr, struct wlr_scene_tree *wlr_scene_tree_ptr, wlmaker_view_send_close_callback_t send_close_callback)
 
void wlmaker_view_fini (wlmaker_view_t *view_ptr)
 
void wlmaker_view_raise_to_top (wlmaker_view_t *view_ptr)
 
void wlmaker_view_set_active (wlmaker_view_t *view_ptr, bool active)
 
wlmaker_view_twlmaker_view_from_dlnode (bs_dllist_node_t *node_ptr)
 
bs_dllist_node_t * wlmaker_dlnode_from_view (wlmaker_view_t *view_ptr)
 
struct wlr_scene_node * wlmaker_wlr_scene_node_from_view (wlmaker_view_t *view_ptr)
 
struct wlr_surface * wlmaker_view_get_wlr_surface (wlmaker_view_t *view_ptr)
 
wlmaker_view_twlmaker_view_at (wlmaker_server_t *server_ptr, double x, double y, struct wlr_surface **wlr_surface_ptr_ptr, double *rel_x_ptr, double *rel_y_ptr)
 
void wlmaker_view_handle_motion (wlmaker_view_t *view_ptr, double x, double y)
 
void wlmaker_view_handle_button (wlmaker_view_t *view_ptr, double x, double y, struct wlr_pointer_button_event *event_ptr)
 
void wlmaker_view_handle_axis (wlmaker_view_t *view_ptr, double x, double y, struct wlr_pointer_axis_event *event_ptr)
 
void wlmaker_view_window_menu_show (wlmaker_view_t *view_ptr)
 
void wlmaker_view_window_menu_hide (wlmaker_view_t *view_ptr)
 
void wlmaker_view_cursor_leave (wlmaker_view_t *view_ptr)
 
void wlmaker_view_shade (wlmaker_view_t *view_ptr)
 
void wlmaker_view_get_size (wlmaker_view_t *view_ptr, uint32_t *width_ptr, uint32_t *height_ptr)
 
void wlmaker_view_set_size (wlmaker_view_t *view_ptr, int width, int height)
 
void wlmaker_view_set_maximized (wlmaker_view_t *view_ptr, bool maximize)
 
void wlmaker_view_set_fullscreen (wlmaker_view_t *view_ptr, bool fullscreen)
 
void wlmaker_view_set_iconified (wlmaker_view_t *view_ptr, bool iconified)
 
void wlmaker_view_get_position (wlmaker_view_t *view_ptr, int *x_ptr, int *y_ptr)
 
void wlmaker_view_set_position (wlmaker_view_t *view_ptr, int x, int y)
 
void wlmaker_view_set_title (wlmaker_view_t *view_ptr, const char *title_ptr)
 
const char * wlmaker_view_get_title (wlmaker_view_t *view_ptr)
 
void wlmaker_view_set_app_id (wlmaker_view_t *view_ptr, const char *app_id_ptr)
 
const char * wlmaker_view_get_app_id (wlmaker_view_t *view_ptr)
 
void wlmaker_view_map (wlmaker_view_t *view_ptr, wlmaker_workspace_t *workspace_ptr, wlmaker_workspace_layer_t layer)
 
void wlmaker_view_unmap (wlmaker_view_t *view_ptr)
 
uint32_t wlmaker_view_get_anchor (wlmaker_view_t *view_ptr)
 
struct wlr_output * wlmaker_view_get_wlr_output (wlmaker_view_t *view_ptr)
 
const wlmaker_client_twlmaker_view_get_client (wlmaker_view_t *view_ptr)
 

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.

The view is an abstraction to handle windows, eg. XDG shells.

A view has the following properties:

TODO: finalize.

Should have a state, which can be:

Typedef Documentation

◆ wlmaker_view_activate_callback_t

typedef uint32_t(* wlmaker_view_activate_callback_t) (wlmaker_view_t *view_ptr, bool activated)

Callback: Activate the view.

◆ wlmaker_view_send_close_callback_t

typedef void(* wlmaker_view_send_close_callback_t) (wlmaker_view_t *view_ptr)

Callback: Close the view.

◆ wlmaker_view_set_size_callback_t

typedef void(* wlmaker_view_set_size_callback_t) (wlmaker_view_t *view_ptr, int width, int height)

Callback: Set size.

◆ wlmaker_view_t

Type definition of the state of a view.

Enumeration Type Documentation

◆ wlmaker_view_anchor_t

Anchor bitfield.

Enumerator
WLMAKER_VIEW_ANCHOR_TOP 

Anchored to the top edge.

WLMAKER_VIEW_ANCHOR_BOTTOM 

Anchored to the bottom edge.

WLMAKER_VIEW_ANCHOR_LEFT 

Anchored to the left edge.

WLMAKER_VIEW_ANCHOR_RIGHT 

Anchored to the right edge.

Function Documentation

◆ wlmaker_dlnode_from_view()

bs_dllist_node_t * wlmaker_dlnode_from_view ( wlmaker_view_t * view_ptr)

Type conversion: Gets the bs_dllist_node_t from the given wlmaker_view_t.

Parameters
view_ptr
Returns
The pointer to the bs_dllist_node_t.

◆ wlmaker_view_at()

wlmaker_view_t * wlmaker_view_at ( wlmaker_server_t * server_ptr,
double x,
double y,
struct wlr_surface ** wlr_surface_ptr_ptr,
double * rel_x_ptr,
double * rel_y_ptr )

Returns the view that has a surface at the given position. Updates wlr_surface_ptr_ptr to point to the surface.

Parameters
server_ptr
x
y
wlr_surface_ptr_ptr
rel_x_ptr
rel_y_ptr
Returns
The view or NULL if there is no view there.

◆ wlmaker_view_cursor_leave()

void wlmaker_view_cursor_leave ( wlmaker_view_t * view_ptr)

Handles when the |view_ptr| loses pointer focus.

Used to update control surfaces of server side decoration. Will not be passed to the client: wlr_seat_pointer_notify_enter does that.

Parameters
view_ptr

◆ wlmaker_view_fini()

void wlmaker_view_fini ( wlmaker_view_t * view_ptr)

Un-initializes the |view_ptr| state.

Parameters
view_ptr

◆ wlmaker_view_from_dlnode()

wlmaker_view_t * wlmaker_view_from_dlnode ( bs_dllist_node_t * node_ptr)

Type conversion: Gets the wlmaker_view_t from the given bs_dllist_node_t.

Parameters
node_ptr
Returns
The pointer to wlmaker_view_t holding that node.

◆ wlmaker_view_get_anchor()

uint32_t wlmaker_view_get_anchor ( wlmaker_view_t * view_ptr)

Returns the anchoring edges for this view.

Parameters
view_ptr
Returns
The anchoring edges, as a bitmask. See wlmaker_view_anchor_t.

◆ wlmaker_view_get_app_id()

const char * wlmaker_view_get_app_id ( wlmaker_view_t * view_ptr)

Gets the application ID of the veiw.

Will point to a memory area that remains valid until either the view is destroyed, or wlmaker_view_set_app_id is called again.

Parameters
view_ptr
Returns
Pointer to the application ID as a string. May be NULL if no application ID has been set.
See also
wlmaker_view_set_app_id.

◆ wlmaker_view_get_client()

const wlmaker_client_t * wlmaker_view_get_client ( wlmaker_view_t * view_ptr)

Returns a pointer to details about the client, if available.

Parameters
view_ptr
Returns
Pointer to client details. Will remain valid throughout the lifetime of view_ptr.

◆ wlmaker_view_get_position()

void wlmaker_view_get_position ( wlmaker_view_t * view_ptr,
int * x_ptr,
int * y_ptr )

Retrieves the position of the view, including server-side decoration (if any).

Parameters
view_ptr
x_ptr
y_ptr

◆ wlmaker_view_get_size()

void wlmaker_view_get_size ( wlmaker_view_t * view_ptr,
uint32_t * width_ptr,
uint32_t * height_ptr )

Retrieves the dimensions of the view, including server-side decoration (if any).

Parameters
view_ptr
width_ptrMay be NULL.
height_ptrMay be NULL.

◆ wlmaker_view_get_title()

const char * wlmaker_view_get_title ( wlmaker_view_t * view_ptr)

Gets the title string.

Will point to a memory area that remains valid until either the view is destroyed, or wlmaker_view_set_title is called again.

Parameters
view_ptr
Returns
Pointer to the title string. May be NULL if no title has been set.
See also
wlmaker_view_set_title.

◆ wlmaker_view_get_wlr_output()

struct wlr_output * wlmaker_view_get_wlr_output ( wlmaker_view_t * view_ptr)

Returns the struct wlr_output that the wlmaker_view_t is on.

Parameters
view_ptr
Returns
A pointer to the struct wlr_output.

◆ wlmaker_view_get_wlr_surface()

struct wlr_surface * wlmaker_view_get_wlr_surface ( wlmaker_view_t * view_ptr)

Gets the struct wlr_surface associated with this view.

Parameters
view_ptr

◆ wlmaker_view_handle_axis()

void wlmaker_view_handle_axis ( wlmaker_view_t * view_ptr,
double x,
double y,
struct wlr_pointer_axis_event * event_ptr )

Handles an axis event for the view.

Axis events are eg. scroll-wheel actions. Some of the wlmaker elements (eg. Clip) will take scroll-wheel events.

Parameters
view_ptr
x
y
event_ptr

◆ wlmaker_view_handle_button()

void wlmaker_view_handle_button ( wlmaker_view_t * view_ptr,
double x,
double y,
struct wlr_pointer_button_event * event_ptr )

Handles a button event for the view.

Any button press on the view will trigger "raise_to_top" and "activate". If server-side decorations are enabled: Button events on the decoration control surfaces may trigger respective events.

Parameters
view_ptr
x
y
event_ptr

◆ wlmaker_view_handle_motion()

void wlmaker_view_handle_motion ( wlmaker_view_t * view_ptr,
double x,
double y )

Handles cursor motion for the view, ie. for the decoration elements.

Parameters
view_ptr
x
y

◆ wlmaker_view_init()

void wlmaker_view_init ( wlmaker_view_t * view_ptr,
const wlmaker_view_impl_t * view_impl_ptr,
wlmaker_server_t * server_ptr,
struct wlr_surface * wlr_surface_ptr,
struct wlr_scene_tree * wlr_scene_tree_ptr,
wlmaker_view_send_close_callback_t send_close_callback )

Initializes the |view_ptr| state.

Parameters
view_ptr
view_impl_ptr
server_ptr
wlr_surface_ptr
wlr_scene_tree_ptr
send_close_callback

◆ wlmaker_view_map()

void wlmaker_view_map ( wlmaker_view_t * view_ptr,
wlmaker_workspace_t * workspace_ptr,
wlmaker_workspace_layer_t layer )

Maps the view to the specified layer of the given workspace.

Parameters
view_ptr
workspace_ptr
layer

◆ wlmaker_view_raise_to_top()

void wlmaker_view_raise_to_top ( wlmaker_view_t * view_ptr)

Raises the view to the top of the stack.

Parameters
view_ptr

◆ wlmaker_view_set_active()

void wlmaker_view_set_active ( wlmaker_view_t * view_ptr,
bool active )

Sets the state of the view. Active == focussed, inactive == blurred.

Parameters
view_ptr
active

◆ wlmaker_view_set_app_id()

void wlmaker_view_set_app_id ( wlmaker_view_t * view_ptr,
const char * app_id_ptr )

Sets the application ID for the view.

Parameters
view_ptr
app_id_ptr

◆ wlmaker_view_set_fullscreen()

void wlmaker_view_set_fullscreen ( wlmaker_view_t * view_ptr,
bool fullscreen )

Sets, respectively unsets this view as fullscreen.

Parameters
view_ptr
fullscreen

◆ wlmaker_view_set_iconified()

void wlmaker_view_set_iconified ( wlmaker_view_t * view_ptr,
bool iconified )

Sets, respectively unsets this view as iconified.

Parameters
view_ptr
iconified

◆ wlmaker_view_set_maximized()

void wlmaker_view_set_maximized ( wlmaker_view_t * view_ptr,
bool maximize )

Sets, respectively unsets this view as maximized.

Parameters
view_ptr
maximize

◆ wlmaker_view_set_position()

void wlmaker_view_set_position ( wlmaker_view_t * view_ptr,
int x,
int y )

Sets the position of the view, including server-side decoration (if any).

Parameters
view_ptr
x
y

◆ wlmaker_view_set_size()

void wlmaker_view_set_size ( wlmaker_view_t * view_ptr,
int width,
int height )

Sets the size of the view, including server-side decoration (if any).

Parameters
view_ptr
width
height

◆ wlmaker_view_set_title()

void wlmaker_view_set_title ( wlmaker_view_t * view_ptr,
const char * title_ptr )

Sets the title string.

Parameters
view_ptr
title_ptr

◆ wlmaker_view_shade()

void wlmaker_view_shade ( wlmaker_view_t * view_ptr)

Shades (rolls up) the view.

Parameters
view_ptr

◆ wlmaker_view_unmap()

void wlmaker_view_unmap ( wlmaker_view_t * view_ptr)

Unmaps the view.

Parameters
view_ptr

◆ wlmaker_view_window_menu_hide()

void wlmaker_view_window_menu_hide ( wlmaker_view_t * view_ptr)

Hides the "window menu" for this view.

Actually destroys the window menu interactive and scene buffer.

Parameters
view_ptr

◆ wlmaker_view_window_menu_show()

void wlmaker_view_window_menu_show ( wlmaker_view_t * view_ptr)

Shows the "window menu" for this view.

Creates the struct wlr_scene_buffer and wlmaker_menu_t and wires it up for event-processing. Will not do anything in case a window menu already exists.

Parameters
view_ptr

◆ wlmaker_wlr_scene_node_from_view()

struct wlr_scene_node * wlmaker_wlr_scene_node_from_view ( wlmaker_view_t * view_ptr)

Type conversion: Gets the struct wr_scene_node for the view.

Parameters
view_ptr
Returns
The pointer to wlr_scene_tree_ptr->node.