mirror of
https://github.com/swaywm/sway.git
synced 2024-11-16 05:03:17 +00:00
launcher: support external launcher tokens
This commit is contained in:
parent
dbc1eec850
commit
4cda9ee3a3
|
@ -114,6 +114,7 @@ struct sway_server {
|
||||||
|
|
||||||
struct wlr_xdg_activation_v1 *xdg_activation_v1;
|
struct wlr_xdg_activation_v1 *xdg_activation_v1;
|
||||||
struct wl_listener xdg_activation_v1_request_activate;
|
struct wl_listener xdg_activation_v1_request_activate;
|
||||||
|
struct wl_listener xdg_activation_v1_new_token;
|
||||||
|
|
||||||
struct wl_list pending_launcher_ctxs; // launcher_ctx::link
|
struct wl_list pending_launcher_ctxs; // launcher_ctx::link
|
||||||
|
|
||||||
|
@ -175,6 +176,8 @@ void handle_xdg_decoration(struct wl_listener *listener, void *data);
|
||||||
void handle_pointer_constraint(struct wl_listener *listener, void *data);
|
void handle_pointer_constraint(struct wl_listener *listener, void *data);
|
||||||
void xdg_activation_v1_handle_request_activate(struct wl_listener *listener,
|
void xdg_activation_v1_handle_request_activate(struct wl_listener *listener,
|
||||||
void *data);
|
void *data);
|
||||||
|
void xdg_activation_v1_handle_new_token(struct wl_listener *listener,
|
||||||
|
void *data);
|
||||||
|
|
||||||
void set_rr_scheduling(void);
|
void set_rr_scheduling(void);
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,10 @@ bool server_init(struct sway_server *server) {
|
||||||
xdg_activation_v1_handle_request_activate;
|
xdg_activation_v1_handle_request_activate;
|
||||||
wl_signal_add(&server->xdg_activation_v1->events.request_activate,
|
wl_signal_add(&server->xdg_activation_v1->events.request_activate,
|
||||||
&server->xdg_activation_v1_request_activate);
|
&server->xdg_activation_v1_request_activate);
|
||||||
|
server->xdg_activation_v1_new_token.notify =
|
||||||
|
xdg_activation_v1_handle_new_token;
|
||||||
|
wl_signal_add(&server->xdg_activation_v1->events.new_token,
|
||||||
|
&server->xdg_activation_v1_new_token);
|
||||||
|
|
||||||
wl_list_init(&server->pending_launcher_ctxs);
|
wl_list_init(&server->pending_launcher_ctxs);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include <wlr/types/wlr_xdg_activation_v1.h>
|
#include <wlr/types/wlr_xdg_activation_v1.h>
|
||||||
#include "sway/desktop/launcher.h"
|
#include "sway/desktop/launcher.h"
|
||||||
#include "sway/tree/view.h"
|
#include "sway/tree/view.h"
|
||||||
|
#include "sway/tree/workspace.h"
|
||||||
|
|
||||||
void xdg_activation_v1_handle_request_activate(struct wl_listener *listener,
|
void xdg_activation_v1_handle_request_activate(struct wl_listener *listener,
|
||||||
void *data) {
|
void *data) {
|
||||||
|
@ -38,3 +39,15 @@ void xdg_activation_v1_handle_request_activate(struct wl_listener *listener,
|
||||||
view_request_activate(view, seat);
|
view_request_activate(view, seat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void xdg_activation_v1_handle_new_token(struct wl_listener *listener, void *data) {
|
||||||
|
struct wlr_xdg_activation_token_v1 *token = data;
|
||||||
|
struct sway_seat *seat = token->seat ? token->seat->data :
|
||||||
|
input_manager_current_seat();
|
||||||
|
|
||||||
|
struct sway_workspace *ws = seat_get_focused_workspace(seat);
|
||||||
|
if (ws) {
|
||||||
|
launcher_ctx_create(token, &ws->node);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue