#include <wlr/types/wlr_scene.h>
struct wlr_scene_rect *lab_wlr_scene_get_rect(struct wlr_scene_node *node);
+struct wlr_surface *lab_wlr_surface_from_node(struct wlr_scene_node *node);
assert(node->type == WLR_SCENE_NODE_RECT);
return (struct wlr_scene_rect *)node;
}
+
+struct wlr_surface *
+lab_wlr_surface_from_node(struct wlr_scene_node *node)
+{
+ struct wlr_scene_buffer *buffer;
+ struct wlr_scene_surface *scene_surface;
+
+ if (node && node->type == WLR_SCENE_NODE_BUFFER) {
+ buffer = wlr_scene_buffer_from_node(node);
+ scene_surface = wlr_scene_surface_from_buffer(buffer);
+ if (scene_surface) {
+ return scene_surface->surface;
+ }
+ }
+ return NULL;
+}
#include "resistance.h"
#include "ssd.h"
#include "config/mousebind.h"
+#include "common/scene-helpers.h"
static bool
is_surface(enum ssd_part_type view_area)
desktop_node_and_view_at(seat->server, seat->cursor->x,
seat->cursor->y, &node, &sx, &sy, &view_area);
if (is_surface(view_area)) {
- surface = wlr_scene_surface_from_node(node)->surface;
+ surface = lab_wlr_surface_from_node(node);
}
if (surface) {
struct wlr_surface *surface = NULL;
if (is_surface(view_area)) {
- surface = wlr_scene_surface_from_node(node)->surface;
+ surface = lab_wlr_surface_from_node(node);
}
/* resize handles */
struct wlr_surface *surface = NULL;
if (is_surface(view_area)) {
- surface = wlr_scene_surface_from_node(node)->surface;
+ surface = lab_wlr_surface_from_node(node);
}
/* get modifiers */
#include "buffer.h"
#include "labwc.h"
#include "node.h"
+#include "common/scene-helpers.h"
#define HEADER_CHARS "------------------------------"
#define LEFT_COL_SPACE 35
static const char *
-get_node_type(enum wlr_scene_node_type type)
+get_node_type(struct wlr_scene_node *node)
{
- switch (type) {
+ switch (node->type) {
case WLR_SCENE_NODE_ROOT:
return "root";
case WLR_SCENE_NODE_TREE:
return "tree";
- case WLR_SCENE_NODE_SURFACE:
- return "surface";
case WLR_SCENE_NODE_RECT:
return "rect";
case WLR_SCENE_NODE_BUFFER:
+ if (lab_wlr_surface_from_node(node)) {
+ return "surface";
+ }
return "buffer";
}
return "error";
if (view_part) {
return view_part;
}
- return get_node_type(node->type);
+ return get_node_type(node);
}
struct pad {
#include "layers.h"
#include "node.h"
#include "ssd.h"
+#include "common/scene-helpers.h"
static void
move_to_front(struct view *view)
*view_area = LAB_SSD_ROOT;
return NULL;
}
- if (node->type == WLR_SCENE_NODE_SURFACE) {
- struct wlr_surface *surface =
- wlr_scene_surface_from_node(node)->surface;
- if (wlr_surface_is_layer_surface(surface)) {
+ if (node->type == WLR_SCENE_NODE_BUFFER) {
+ struct wlr_surface *surface = lab_wlr_surface_from_node(node);
+ if (surface && wlr_surface_is_layer_surface(surface)) {
*view_area = LAB_SSD_LAYER_SURFACE;
return NULL;
}
#include "labwc.h"
#include "theme.h"
#include "ssd.h"
+#include "common/scene-helpers.h"
struct border
ssd_thickness(struct view *view)
{
if (!node) {
return LAB_SSD_NONE;
- } else if (node->type == WLR_SCENE_NODE_SURFACE) {
+ } else if (node->type == WLR_SCENE_NODE_BUFFER
+ && lab_wlr_surface_from_node(node)) {
return LAB_SSD_CLIENT;
} else if (!view->ssd.tree) {
return LAB_SSD_NONE;
// SPDX-License-Identifier: GPL-2.0-only
#include <wlr/types/wlr_touch.h>
#include "labwc.h"
+#include "common/scene-helpers.h"
static struct wlr_surface*
touch_get_coords(struct seat *seat, struct wlr_touch *touch, double x, double y,
wlr_scene_node_at(&seat->server->scene->node, lx, ly, sx, sy);
/* Find the surface and return it if it accepts touch events. */
- struct wlr_surface *surface = NULL;
-
- if (node && node->type == WLR_SCENE_NODE_SURFACE) {
- struct wlr_scene_surface *scene_surface =
- wlr_scene_surface_from_node(node);
- surface = scene_surface->surface;
- }
+ struct wlr_surface *surface = lab_wlr_surface_from_node(node);
if (surface && !wlr_surface_accepts_touch(seat->seat, surface)) {
surface = NULL;
parent = &view->scene_tree->node;
}
/* node will be destroyed automatically once surface is destroyed */
- node = &wlr_scene_surface_create(parent, xsurface->surface)->node;
+ node = &wlr_scene_surface_create(parent, xsurface->surface)->buffer->node;
wlr_scene_node_set_position(node, lx, ly);
}
[wrap-git]
url = https://gitlab.freedesktop.org/wlroots/wlroots.git
-revision = 8fe3aa29da56be16faa73aca947647bd60cd4a94
+revision = 1cb6b2cf673a5b580d7ad79ce2b37c14b14b0268
[provide]
dependency_names = wlroots