mirror of
https://github.com/swaywm/sway.git
synced 2026-04-17 06:46:32 -04:00
Merge 64648de067 into 25ea1a0af2
This commit is contained in:
commit
b86c6a684e
4 changed files with 45 additions and 3 deletions
|
|
@ -103,6 +103,11 @@ struct sway_server {
|
|||
struct wlr_input_method_manager_v2 *input_method;
|
||||
struct wlr_text_input_manager_v3 *text_input;
|
||||
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_content_type_manager_v1 *content_type_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);
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include <wlr/types/wlr_data_device.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_request_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_copy_capture_v1.h>
|
||||
|
|
@ -72,6 +73,7 @@
|
|||
#define SWAY_XDG_SHELL_VERSION 5
|
||||
#define SWAY_LAYER_SHELL_VERSION 4
|
||||
#define SWAY_FOREIGN_TOPLEVEL_LIST_VERSION 1
|
||||
#define SWAY_FOREIGN_TOPLEVEL_REQUEST_VERSION 1
|
||||
#define SWAY_PRESENTATION_VERSION 2
|
||||
|
||||
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.input_method->global ||
|
||||
global == server.foreign_toplevel_list->global ||
|
||||
global == server.foreign_toplevel_request_source->global ||
|
||||
global == server.foreign_toplevel_manager->global ||
|
||||
global == server.wlr_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->foreign_toplevel_list =
|
||||
wlr_ext_foreign_toplevel_list_v1_create(server->wl_display, SWAY_FOREIGN_TOPLEVEL_LIST_VERSION);
|
||||
server->foreign_toplevel_manager =
|
||||
wlr_foreign_toplevel_manager_v1_create(server->wl_display);
|
||||
server->foreign_toplevel_manager = 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();
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include <wlr/render/wlr_renderer.h>
|
||||
#include <wlr/types/wlr_buffer.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_fractional_scale_v1.h>
|
||||
#include <wlr/types/wlr_output_layout.h>
|
||||
|
|
@ -38,6 +39,8 @@
|
|||
#include "sway/xdg_decoration.h"
|
||||
#include "stringop.h"
|
||||
|
||||
#define SWAY_FOREIGN_TOPLEVEL_HANDLE_VERSION 1
|
||||
|
||||
bool view_init(struct sway_view *view, enum sway_view_type type,
|
||||
const struct sway_view_impl *impl) {
|
||||
bool failed = false;
|
||||
|
|
@ -669,6 +672,21 @@ static bool should_focus(struct sway_view *view) {
|
|||
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(
|
||||
struct wl_listener *listener, void *data) {
|
||||
struct sway_view *view = wl_container_of(
|
||||
|
|
@ -814,7 +832,8 @@ void view_map(struct sway_view *view, struct wlr_surface *wlr_surface,
|
|||
.title = view_get_title(view),
|
||||
};
|
||||
view->ext_foreign_toplevel =
|
||||
wlr_ext_foreign_toplevel_handle_v1_create(server.foreign_toplevel_list, &foreign_toplevel_state);
|
||||
wlr_ext_foreign_toplevel_handle_v1_create(server.foreign_toplevel_list,
|
||||
&foreign_toplevel_state, SWAY_FOREIGN_TOPLEVEL_HANDLE_VERSION);
|
||||
|
||||
view->foreign_toplevel =
|
||||
wlr_foreign_toplevel_handle_v1_create(server.foreign_toplevel_manager);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue