diff options
Diffstat (limited to 'rootston')
| -rw-r--r-- | rootston/desktop.c | 19 | ||||
| -rw-r--r-- | rootston/meson.build | 1 | ||||
| -rw-r--r-- | rootston/output.c | 1 | ||||
| -rw-r--r-- | rootston/wl_shell.c | 312 | 
4 files changed, 0 insertions, 333 deletions
| diff --git a/rootston/desktop.c b/rootston/desktop.c index 880849be..96063995 100644 --- a/rootston/desktop.c +++ b/rootston/desktop.c @@ -21,7 +21,6 @@  #include <wlr/types/wlr_primary_selection_v1.h>  #include <wlr/types/wlr_server_decoration.h>  #include <wlr/types/wlr_tablet_v2.h> -#include <wlr/types/wlr_wl_shell.h>  #include <wlr/types/wlr_xcursor_manager.h>  #include <wlr/types/wlr_xdg_output_v1.h>  #include <wlr/types/wlr_xdg_output_v1.h> @@ -38,13 +37,6 @@  static bool view_at(struct roots_view *view, double lx, double ly,  		struct wlr_surface **surface, double *sx, double *sy) { -	if (view->type == ROOTS_WL_SHELL_VIEW) { -		struct wlr_wl_shell_surface *wl_shell_surface = -			roots_wl_shell_surface_from_view(view)->wl_shell_surface; -		if (wl_shell_surface->state == WLR_WL_SHELL_SURFACE_STATE_POPUP) { -			return false; -		} -	}  	if (view->wlr_surface == NULL) {  		return false;  	} @@ -69,12 +61,6 @@ static bool view_at(struct roots_view *view, double lx, double ly,  		_surface = wlr_xdg_surface_surface_at(xdg_surface->xdg_surface,  			view_sx, view_sy, &_sx, &_sy);  		break; -	case ROOTS_WL_SHELL_VIEW:; -		struct roots_wl_shell_surface *wl_shell_surface = -			roots_wl_shell_surface_from_view(view); -		_surface = wlr_wl_shell_surface_surface_at( -			wl_shell_surface->wl_shell_surface, view_sx, view_sy, &_sx, &_sy); -		break;  #if WLR_HAS_XWAYLAND  	case ROOTS_XWAYLAND_VIEW:  		_surface = wlr_surface_surface_at(view->wlr_surface, @@ -330,11 +316,6 @@ struct roots_desktop *desktop_create(struct roots_server *server,  		&desktop->xdg_shell_surface);  	desktop->xdg_shell_surface.notify = handle_xdg_shell_surface; -	desktop->wl_shell = wlr_wl_shell_create(server->wl_display); -	wl_signal_add(&desktop->wl_shell->events.new_surface, -		&desktop->wl_shell_surface); -	desktop->wl_shell_surface.notify = handle_wl_shell_surface; -  	desktop->layer_shell = wlr_layer_shell_v1_create(server->wl_display);  	wl_signal_add(&desktop->layer_shell->events.new_surface,  		&desktop->layer_shell_surface); diff --git a/rootston/meson.build b/rootston/meson.build index c2f9a250..853fecc8 100644 --- a/rootston/meson.build +++ b/rootston/meson.build @@ -15,7 +15,6 @@ sources = [  	'text_input.c',  	'view.c',  	'virtual_keyboard.c', -	'wl_shell.c',  	'xdg_shell_v6.c',  	'xdg_shell.c',  ] diff --git a/rootston/output.c b/rootston/output.c index 32300c9e..66a43694 100644 --- a/rootston/output.c +++ b/rootston/output.c @@ -8,7 +8,6 @@  #include <wlr/types/wlr_compositor.h>  #include <wlr/types/wlr_output_layout.h>  #include <wlr/types/wlr_presentation_time.h> -#include <wlr/types/wlr_wl_shell.h>  #include <wlr/types/wlr_xdg_shell_v6.h>  #include <wlr/types/wlr_xdg_shell.h>  #include <wlr/util/log.h> diff --git a/rootston/wl_shell.c b/rootston/wl_shell.c deleted file mode 100644 index 1590378c..00000000 --- a/rootston/wl_shell.c +++ /dev/null @@ -1,312 +0,0 @@ -#include <assert.h> -#include <stdbool.h> -#include <stdlib.h> -#include <wayland-server.h> -#include <wlr/types/wlr_box.h> -#include <wlr/types/wlr_surface.h> -#include <wlr/types/wlr_wl_shell.h> -#include <wlr/util/log.h> -#include "rootston/desktop.h" -#include "rootston/input.h" -#include "rootston/server.h" - -static const struct roots_view_child_interface popup_impl; - -static void popup_destroy(struct roots_view_child *child) { -	assert(child->impl == &popup_impl); -	struct roots_wl_shell_popup *popup = (struct roots_wl_shell_popup *)child; -	wl_list_remove(&popup->destroy.link); -	wl_list_remove(&popup->set_state.link); -	wl_list_remove(&popup->new_popup.link); -	free(popup); -} - -static const struct roots_view_child_interface popup_impl = { -	.destroy = popup_destroy, -}; - -static void popup_handle_destroy(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_popup *popup = -		wl_container_of(listener, popup, destroy); -	view_child_destroy(&popup->view_child); -} - -static void popup_handle_set_state(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_popup *popup = -		wl_container_of(listener, popup, set_state); -	view_child_destroy(&popup->view_child); -} - -static struct roots_wl_shell_popup *popup_create(struct roots_view *view, -	struct wlr_wl_shell_surface *wlr_wl_shell_surface); - -static void popup_handle_new_popup(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_popup *popup = -		wl_container_of(listener, popup, new_popup); -	struct wlr_wl_shell_surface *wlr_wl_shell_surface = data; -	popup_create(popup->view_child.view, wlr_wl_shell_surface); -} - -static struct roots_wl_shell_popup *popup_create(struct roots_view *view, -		struct wlr_wl_shell_surface *wlr_wl_shell_surface) { -	struct roots_wl_shell_popup *popup = -		calloc(1, sizeof(struct roots_wl_shell_popup)); -	if (popup == NULL) { -		return NULL; -	} -	popup->wlr_wl_shell_surface = wlr_wl_shell_surface; -	view_child_init(&popup->view_child, &popup_impl, -		view, wlr_wl_shell_surface->surface); -	popup->destroy.notify = popup_handle_destroy; -	wl_signal_add(&wlr_wl_shell_surface->events.destroy, &popup->destroy); -	popup->set_state.notify = popup_handle_set_state; -	wl_signal_add(&wlr_wl_shell_surface->events.set_state, &popup->set_state); -	popup->new_popup.notify = popup_handle_new_popup; -	wl_signal_add(&wlr_wl_shell_surface->events.new_popup, &popup->new_popup); -	return popup; -} - - -static void resize(struct roots_view *view, uint32_t width, uint32_t height) { -	struct wlr_wl_shell_surface *surf = -		roots_wl_shell_surface_from_view(view)->wl_shell_surface; -	wlr_wl_shell_surface_configure(surf, WL_SHELL_SURFACE_RESIZE_NONE, width, -		height); -} - -static void close(struct roots_view *view) { -	struct wlr_wl_shell_surface *surf = -		roots_wl_shell_surface_from_view(view)->wl_shell_surface; -	wl_client_destroy(surf->client); -} - -static void for_each_surface(struct roots_view *view, -		wlr_surface_iterator_func_t iterator, void *user_data) { -	struct wlr_wl_shell_surface *surf = -		roots_wl_shell_surface_from_view(view)->wl_shell_surface; -	wlr_wl_shell_surface_for_each_surface(surf, iterator, user_data); -} - -static void destroy(struct roots_view *view) { -	struct roots_wl_shell_surface *roots_surface = -		roots_wl_shell_surface_from_view(view); -	wl_list_remove(&roots_surface->destroy.link); -	wl_list_remove(&roots_surface->request_move.link); -	wl_list_remove(&roots_surface->request_resize.link); -	wl_list_remove(&roots_surface->request_maximize.link); -	wl_list_remove(&roots_surface->request_fullscreen.link); -	wl_list_remove(&roots_surface->set_state.link); -	wl_list_remove(&roots_surface->set_title.link); -	wl_list_remove(&roots_surface->set_class.link); -	wl_list_remove(&roots_surface->surface_commit.link); -	free(roots_surface); -} - -static const struct roots_view_interface view_impl = { -	.resize = resize, -	.close = close, -	.for_each_surface = for_each_surface, -	.destroy = destroy, -}; - -static void handle_request_move(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_surface *roots_surface = -		wl_container_of(listener, roots_surface, request_move); -	struct roots_view *view = &roots_surface->view; -	struct roots_input *input = view->desktop->server->input; -	struct wlr_wl_shell_surface_move_event *e = data; -	struct roots_seat *seat = input_seat_from_wlr_seat(input, e->seat->seat); -	if (!seat || seat->cursor->mode != ROOTS_CURSOR_PASSTHROUGH) { -		return; -	} -	roots_seat_begin_move(seat, view); -} - -static void handle_request_resize(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_surface *roots_surface = -		wl_container_of(listener, roots_surface, request_resize); -	struct roots_view *view = &roots_surface->view; -	struct roots_input *input = view->desktop->server->input; -	struct wlr_wl_shell_surface_resize_event *e = data; -	struct roots_seat *seat = input_seat_from_wlr_seat(input, e->seat->seat); -	if (!seat || seat->cursor->mode != ROOTS_CURSOR_PASSTHROUGH) { -		return; -	} -	roots_seat_begin_resize(seat, view, e->edges); -} - -static void handle_request_maximize(struct wl_listener *listener, -		void *data) { -	struct roots_wl_shell_surface *roots_surface = -		wl_container_of(listener, roots_surface, request_maximize); -	struct roots_view *view = &roots_surface->view; -	//struct wlr_wl_shell_surface_maximize_event *e = data; -	view_maximize(view, true); -} - -static void handle_request_fullscreen(struct wl_listener *listener, -		void *data) { -	struct roots_wl_shell_surface *roots_surface = -		wl_container_of(listener, roots_surface, request_fullscreen); -	struct roots_view *view = &roots_surface->view; -	struct wlr_wl_shell_surface_set_fullscreen_event *e = data; -	view_set_fullscreen(view, true, e->output); -} - -static void handle_set_state(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_surface *roots_surface = -		wl_container_of(listener, roots_surface, set_state); -	struct roots_view *view = &roots_surface->view; -	struct wlr_wl_shell_surface *surface = roots_surface->wl_shell_surface; -	if (view->maximized && -			surface->state != WLR_WL_SHELL_SURFACE_STATE_MAXIMIZED) { -		view_maximize(view, false); -	} -	if (view->fullscreen_output != NULL && -			surface->state != WLR_WL_SHELL_SURFACE_STATE_FULLSCREEN) { -		view_set_fullscreen(view, false, NULL); -	} -} - -static void handle_set_title(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_surface *roots_surface = -		wl_container_of(listener, roots_surface, set_state); -	view_set_title(&roots_surface->view, -		roots_surface->wl_shell_surface->title); -} - -static void handle_set_class(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_surface *roots_surface = -		wl_container_of(listener, roots_surface, set_state); -	view_set_app_id(&roots_surface->view, -		roots_surface->wl_shell_surface->class); -} - -static void handle_surface_commit(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_surface *roots_surface = -		wl_container_of(listener, roots_surface, surface_commit); -	struct roots_view *view = &roots_surface->view; -	struct wlr_surface *wlr_surface = view->wlr_surface; - -	view_apply_damage(view); - -	int width = wlr_surface->current.width; -	int height = wlr_surface->current.height; -	view_update_size(view, width, height); - -	double x = view->box.x; -	double y = view->box.y; -	if (view->pending_move_resize.update_x) { -		x = view->pending_move_resize.x + view->pending_move_resize.width - -			width; -		view->pending_move_resize.update_x = false; -	} -	if (view->pending_move_resize.update_y) { -		y = view->pending_move_resize.y + view->pending_move_resize.height - -			height; -		view->pending_move_resize.update_y = false; -	} -	view_update_position(view, x, y); -} - -static void handle_new_popup(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_surface *roots_surface = -		wl_container_of(listener, roots_surface, new_popup); -	struct wlr_wl_shell_surface *wlr_wl_shell_surface = data; -	popup_create(&roots_surface->view, wlr_wl_shell_surface); -} - -static void handle_destroy(struct wl_listener *listener, void *data) { -	struct roots_wl_shell_surface *roots_surface = -		wl_container_of(listener, roots_surface, destroy); -	view_destroy(&roots_surface->view); -} - -void handle_wl_shell_surface(struct wl_listener *listener, void *data) { -	struct roots_desktop *desktop = -		wl_container_of(listener, desktop, wl_shell_surface); -	struct wlr_wl_shell_surface *surface = data; - -	if (surface->state == WLR_WL_SHELL_SURFACE_STATE_POPUP) { -		wlr_log(WLR_DEBUG, "new wl shell popup"); -		return; -	} - -	wlr_log(WLR_DEBUG, "new wl shell surface: title=%s, class=%s", -		surface->title, surface->class); -	wlr_wl_shell_surface_ping(surface); - -	struct roots_wl_shell_surface *roots_surface = -		calloc(1, sizeof(struct roots_wl_shell_surface)); -	if (!roots_surface) { -		return; -	} - -	view_init(&roots_surface->view, &view_impl, ROOTS_WL_SHELL_VIEW, desktop); -	roots_surface->view.box.width = surface->surface->current.width; -	roots_surface->view.box.height = surface->surface->current.height; -	roots_surface->wl_shell_surface = surface; - -	roots_surface->destroy.notify = handle_destroy; -	wl_signal_add(&surface->events.destroy, &roots_surface->destroy); -	roots_surface->new_popup.notify = handle_new_popup; -	wl_signal_add(&surface->events.new_popup, &roots_surface->new_popup); -	roots_surface->request_move.notify = handle_request_move; -	wl_signal_add(&surface->events.request_move, &roots_surface->request_move); -	roots_surface->request_resize.notify = handle_request_resize; -	wl_signal_add(&surface->events.request_resize, -		&roots_surface->request_resize); -	roots_surface->request_maximize.notify = handle_request_maximize; -	wl_signal_add(&surface->events.request_maximize, -		&roots_surface->request_maximize); -	roots_surface->request_fullscreen.notify = -		handle_request_fullscreen; -	wl_signal_add(&surface->events.request_fullscreen, -		&roots_surface->request_fullscreen); - -	roots_surface->set_state.notify = handle_set_state; -	wl_signal_add(&surface->events.set_state, &roots_surface->set_state); -	roots_surface->set_title.notify = handle_set_title; -	wl_signal_add(&surface->events.set_title, &roots_surface->set_title); -	roots_surface->set_class.notify = handle_set_class; -	wl_signal_add(&surface->events.set_class, &roots_surface->set_class); -	roots_surface->surface_commit.notify = handle_surface_commit; -	wl_signal_add(&surface->surface->events.commit, &roots_surface->surface_commit); - -	view_map(&roots_surface->view, surface->surface); -	view_setup(&roots_surface->view); - -	wlr_foreign_toplevel_handle_v1_set_title(roots_surface->view.toplevel_handle, -		surface->title ?: "none"); -	wlr_foreign_toplevel_handle_v1_set_app_id(roots_surface->view.toplevel_handle, -		surface->class ?: "none"); - -	if (surface->state == WLR_WL_SHELL_SURFACE_STATE_TRANSIENT) { -		// We need to map it relative to the parent -		bool found = false; -		struct roots_view *parent; -		wl_list_for_each(parent, &desktop->views, link) { -			if (parent->type != ROOTS_WL_SHELL_VIEW) { -				continue; -			} - -			struct roots_wl_shell_surface *parent_surf = -				roots_wl_shell_surface_from_view(parent); -			if (parent_surf->wl_shell_surface == surface->parent) { -				found = true; -				break; -			} -		} -		if (found) { -			view_move(&roots_surface->view, -				parent->box.x + surface->transient_state->x, -				parent->box.y + surface->transient_state->y); -		} -	} -} - -struct roots_wl_shell_surface *roots_wl_shell_surface_from_view( -		struct roots_view *view) { -	assert(view->impl == &view_impl); -	return (struct roots_wl_shell_surface *)view; -} | 
