mirror of
https://github.com/labwc/labwc.git
synced 2026-02-05 04:06:33 -05:00
Chase wlroots: wlr_scene_surface
To update the wlroots subproject use meson subprojects update wlroots
This commit is contained in:
parent
3699a2a7f6
commit
163179dda1
9 changed files with 39 additions and 22 deletions
|
|
@ -3,3 +3,4 @@
|
|||
#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);
|
||||
|
|
|
|||
|
|
@ -9,3 +9,19 @@ lab_wlr_scene_get_rect(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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
#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)
|
||||
|
|
@ -34,7 +35,7 @@ cursor_rebase(struct seat *seat, uint32_t time_msec, bool force)
|
|||
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) {
|
||||
|
|
@ -218,7 +219,7 @@ process_cursor_motion(struct server *server, uint32_t time)
|
|||
|
||||
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 */
|
||||
|
|
@ -711,7 +712,7 @@ cursor_button(struct wl_listener *listener, void *data)
|
|||
|
||||
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 */
|
||||
|
|
|
|||
12
src/debug.c
12
src/debug.c
|
|
@ -4,6 +4,7 @@
|
|||
#include "buffer.h"
|
||||
#include "labwc.h"
|
||||
#include "node.h"
|
||||
#include "common/scene-helpers.h"
|
||||
|
||||
#define HEADER_CHARS "------------------------------"
|
||||
|
||||
|
|
@ -13,18 +14,19 @@
|
|||
#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";
|
||||
|
|
@ -123,7 +125,7 @@ get_special(struct server *server, struct wlr_scene_node *node,
|
|||
if (view_part) {
|
||||
return view_part;
|
||||
}
|
||||
return get_node_type(node->type);
|
||||
return get_node_type(node);
|
||||
}
|
||||
|
||||
struct pad {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include "layers.h"
|
||||
#include "node.h"
|
||||
#include "ssd.h"
|
||||
#include "common/scene-helpers.h"
|
||||
|
||||
static void
|
||||
move_to_front(struct view *view)
|
||||
|
|
@ -270,10 +271,9 @@ desktop_node_and_view_at(struct server *server, double lx, double ly,
|
|||
*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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include "labwc.h"
|
||||
#include "theme.h"
|
||||
#include "ssd.h"
|
||||
#include "common/scene-helpers.h"
|
||||
|
||||
struct border
|
||||
ssd_thickness(struct view *view)
|
||||
|
|
@ -53,7 +54,8 @@ ssd_get_part_type(struct view *view, struct wlr_scene_node *node)
|
|||
{
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// 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,
|
||||
|
|
@ -15,13 +16,7 @@ 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;
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ unmanaged_handle_map(struct wl_listener *listener, void *data)
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[wrap-git]
|
||||
url = https://gitlab.freedesktop.org/wlroots/wlroots.git
|
||||
revision = 8fe3aa29da56be16faa73aca947647bd60cd4a94
|
||||
revision = 1cb6b2cf673a5b580d7ad79ce2b37c14b14b0268
|
||||
|
||||
[provide]
|
||||
dependency_names = wlroots
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue