mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -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
				
			
		| 
						 | 
				
			
			@ -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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue