mirror of
https://github.com/swaywm/sway.git
synced 2026-04-17 06:46:32 -04:00
ext-foreign-toplevel-request-v1: new protocol
Signed-off-by: Anna (navi) Figueiredo Gomes <navi@vlhl.dev>
This commit is contained in:
parent
604197c513
commit
64648de067
4 changed files with 41 additions and 2 deletions
|
|
@ -103,6 +103,11 @@ struct sway_server {
|
||||||
struct wlr_input_method_manager_v2 *input_method;
|
struct wlr_input_method_manager_v2 *input_method;
|
||||||
struct wlr_text_input_manager_v3 *text_input;
|
struct wlr_text_input_manager_v3 *text_input;
|
||||||
struct wlr_ext_foreign_toplevel_list_v1 *foreign_toplevel_list;
|
struct wlr_ext_foreign_toplevel_list_v1 *foreign_toplevel_list;
|
||||||
|
struct wlr_ext_foreign_toplevel_request_manager_v1 *foreign_toplevel_request_manager;
|
||||||
|
struct wl_listener foreign_toplevel_request;
|
||||||
|
struct wlr_ext_foreign_toplevel_request_source_v1 *foreign_toplevel_request_source;
|
||||||
|
struct wl_listener foreign_toplevel_response_toplevel;
|
||||||
|
struct wl_listener foreign_toplevel_response_cancel;
|
||||||
struct wlr_foreign_toplevel_manager_v1 *foreign_toplevel_manager;
|
struct wlr_foreign_toplevel_manager_v1 *foreign_toplevel_manager;
|
||||||
struct wlr_content_type_manager_v1 *content_type_manager_v1;
|
struct wlr_content_type_manager_v1 *content_type_manager_v1;
|
||||||
struct wlr_data_control_manager_v1 *wlr_data_control_manager_v1;
|
struct wlr_data_control_manager_v1 *wlr_data_control_manager_v1;
|
||||||
|
|
|
||||||
|
|
@ -351,4 +351,10 @@ void view_send_frame_done(struct sway_view *view);
|
||||||
|
|
||||||
bool view_can_tear(struct sway_view *view);
|
bool view_can_tear(struct sway_view *view);
|
||||||
|
|
||||||
|
void handle_foreign_toplevel_response_toplevel(struct wl_listener *listener, void *data);
|
||||||
|
|
||||||
|
void handle_foreign_toplevel_response_cancel(struct wl_listener *listener, void *data);
|
||||||
|
|
||||||
|
void handle_foreign_toplevel_request(struct wl_listener *listener, void *data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
#include <wlr/types/wlr_data_device.h>
|
#include <wlr/types/wlr_data_device.h>
|
||||||
#include <wlr/types/wlr_export_dmabuf_v1.h>
|
#include <wlr/types/wlr_export_dmabuf_v1.h>
|
||||||
#include <wlr/types/wlr_ext_foreign_toplevel_list_v1.h>
|
#include <wlr/types/wlr_ext_foreign_toplevel_list_v1.h>
|
||||||
|
#include <wlr/types/wlr_ext_foreign_toplevel_request_v1.h>
|
||||||
#include <wlr/types/wlr_foreign_toplevel_management_v1.h>
|
#include <wlr/types/wlr_foreign_toplevel_management_v1.h>
|
||||||
#include <wlr/types/wlr_ext_image_capture_source_v1.h>
|
#include <wlr/types/wlr_ext_image_capture_source_v1.h>
|
||||||
#include <wlr/types/wlr_ext_image_copy_capture_v1.h>
|
#include <wlr/types/wlr_ext_image_copy_capture_v1.h>
|
||||||
|
|
@ -72,6 +73,7 @@
|
||||||
#define SWAY_XDG_SHELL_VERSION 5
|
#define SWAY_XDG_SHELL_VERSION 5
|
||||||
#define SWAY_LAYER_SHELL_VERSION 4
|
#define SWAY_LAYER_SHELL_VERSION 4
|
||||||
#define SWAY_FOREIGN_TOPLEVEL_LIST_VERSION 1
|
#define SWAY_FOREIGN_TOPLEVEL_LIST_VERSION 1
|
||||||
|
#define SWAY_FOREIGN_TOPLEVEL_REQUEST_VERSION 1
|
||||||
#define SWAY_PRESENTATION_VERSION 2
|
#define SWAY_PRESENTATION_VERSION 2
|
||||||
|
|
||||||
bool allow_unsupported_gpu = false;
|
bool allow_unsupported_gpu = false;
|
||||||
|
|
@ -107,6 +109,7 @@ static bool is_privileged(const struct wl_global *global) {
|
||||||
global == server.output_power_manager_v1->global ||
|
global == server.output_power_manager_v1->global ||
|
||||||
global == server.input_method->global ||
|
global == server.input_method->global ||
|
||||||
global == server.foreign_toplevel_list->global ||
|
global == server.foreign_toplevel_list->global ||
|
||||||
|
global == server.foreign_toplevel_request_source->global ||
|
||||||
global == server.foreign_toplevel_manager->global ||
|
global == server.foreign_toplevel_manager->global ||
|
||||||
global == server.wlr_data_control_manager_v1->global ||
|
global == server.wlr_data_control_manager_v1->global ||
|
||||||
global == server.ext_data_control_manager_v1->global ||
|
global == server.ext_data_control_manager_v1->global ||
|
||||||
|
|
@ -364,8 +367,17 @@ bool server_init(struct sway_server *server) {
|
||||||
server->text_input = wlr_text_input_manager_v3_create(server->wl_display);
|
server->text_input = wlr_text_input_manager_v3_create(server->wl_display);
|
||||||
server->foreign_toplevel_list =
|
server->foreign_toplevel_list =
|
||||||
wlr_ext_foreign_toplevel_list_v1_create(server->wl_display, SWAY_FOREIGN_TOPLEVEL_LIST_VERSION);
|
wlr_ext_foreign_toplevel_list_v1_create(server->wl_display, SWAY_FOREIGN_TOPLEVEL_LIST_VERSION);
|
||||||
server->foreign_toplevel_manager =
|
server->foreign_toplevel_manager = wlr_foreign_toplevel_manager_v1_create(server->wl_display);
|
||||||
wlr_foreign_toplevel_manager_v1_create(server->wl_display);
|
server->foreign_toplevel_request_manager =
|
||||||
|
wlr_ext_foreign_toplevel_request_manager_v1_create(server->wl_display, SWAY_FOREIGN_TOPLEVEL_REQUEST_VERSION);
|
||||||
|
server->foreign_toplevel_request.notify = handle_foreign_toplevel_request;
|
||||||
|
wl_signal_add(&server->foreign_toplevel_request_manager->events.request, &server->foreign_toplevel_request);
|
||||||
|
server->foreign_toplevel_request_source =
|
||||||
|
wlr_ext_foreign_toplevel_request_source_v1_create(server->wl_display, SWAY_FOREIGN_TOPLEVEL_REQUEST_VERSION);
|
||||||
|
server->foreign_toplevel_response_toplevel.notify = handle_foreign_toplevel_response_toplevel;
|
||||||
|
wl_signal_add(&server->foreign_toplevel_request_source->events.toplevel, &server->foreign_toplevel_response_toplevel);
|
||||||
|
server->foreign_toplevel_response_cancel.notify = handle_foreign_toplevel_response_cancel;
|
||||||
|
wl_signal_add(&server->foreign_toplevel_request_source->events.cancel, &server->foreign_toplevel_response_cancel);
|
||||||
|
|
||||||
sway_session_lock_init();
|
sway_session_lock_init();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
#include <wlr/render/wlr_renderer.h>
|
#include <wlr/render/wlr_renderer.h>
|
||||||
#include <wlr/types/wlr_buffer.h>
|
#include <wlr/types/wlr_buffer.h>
|
||||||
#include <wlr/types/wlr_ext_foreign_toplevel_list_v1.h>
|
#include <wlr/types/wlr_ext_foreign_toplevel_list_v1.h>
|
||||||
|
#include <wlr/types/wlr_ext_foreign_toplevel_request_v1.h>
|
||||||
#include <wlr/types/wlr_foreign_toplevel_management_v1.h>
|
#include <wlr/types/wlr_foreign_toplevel_management_v1.h>
|
||||||
#include <wlr/types/wlr_fractional_scale_v1.h>
|
#include <wlr/types/wlr_fractional_scale_v1.h>
|
||||||
#include <wlr/types/wlr_output_layout.h>
|
#include <wlr/types/wlr_output_layout.h>
|
||||||
|
|
@ -669,6 +670,21 @@ static bool should_focus(struct sway_view *view) {
|
||||||
return len == 0;
|
return len == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void handle_foreign_toplevel_response_toplevel(struct wl_listener *listener, void *data) {
|
||||||
|
struct wlr_ext_foreign_toplevel_request_pending_v1 *response = data;
|
||||||
|
wlr_ext_foreign_toplevel_request_v1_send_toplevel(response->request, response->handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handle_foreign_toplevel_response_cancel(struct wl_listener *listener, void *data) {
|
||||||
|
struct wlr_ext_foreign_toplevel_request_pending_v1 *response = data;
|
||||||
|
wlr_ext_foreign_toplevel_request_v1_cancel(response->request);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handle_foreign_toplevel_request(struct wl_listener *listener, void *data) {
|
||||||
|
struct sway_server *server = wl_container_of(listener, server, foreign_toplevel_request);
|
||||||
|
wlr_ext_foreign_toplevel_request_source_v1_request(server->foreign_toplevel_request_source, data);
|
||||||
|
}
|
||||||
|
|
||||||
static void handle_foreign_activate_request(
|
static void handle_foreign_activate_request(
|
||||||
struct wl_listener *listener, void *data) {
|
struct wl_listener *listener, void *data) {
|
||||||
struct sway_view *view = wl_container_of(
|
struct sway_view *view = wl_container_of(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue