mirror of
https://github.com/NickHu/sway
synced 2024-12-27 21:58:11 +01:00
input/seat: inline seat_set_exclusive_client() with NULL client
This commit is contained in:
parent
7ad8c80bfe
commit
607b8aed0c
2 changed files with 8 additions and 10 deletions
|
@ -1371,15 +1371,6 @@ void seat_set_focus_layer(struct sway_seat *seat,
|
||||||
|
|
||||||
void seat_set_exclusive_client(struct sway_seat *seat,
|
void seat_set_exclusive_client(struct sway_seat *seat,
|
||||||
struct wl_client *client) {
|
struct wl_client *client) {
|
||||||
if (!client) {
|
|
||||||
// Triggers a refocus of the topmost surface layer if necessary
|
|
||||||
// TODO: Make layer surface focus per-output based on cursor position
|
|
||||||
for (int i = 0; i < root->outputs->length; ++i) {
|
|
||||||
struct sway_output *output = root->outputs->items[i];
|
|
||||||
arrange_layers(output);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (seat->focused_layer) {
|
if (seat->focused_layer) {
|
||||||
if (wl_resource_get_client(seat->focused_layer->resource) != client) {
|
if (wl_resource_get_client(seat->focused_layer->resource) != client) {
|
||||||
seat_set_focus_layer(seat, NULL);
|
seat_set_focus_layer(seat, NULL);
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include "sway/input/cursor.h"
|
#include "sway/input/cursor.h"
|
||||||
#include "sway/input/keyboard.h"
|
#include "sway/input/keyboard.h"
|
||||||
#include "sway/input/seat.h"
|
#include "sway/input/seat.h"
|
||||||
|
#include "sway/layers.h"
|
||||||
#include "sway/output.h"
|
#include "sway/output.h"
|
||||||
#include "sway/server.h"
|
#include "sway/server.h"
|
||||||
#include "sway/surface.h"
|
#include "sway/surface.h"
|
||||||
|
@ -129,7 +130,6 @@ static void handle_unlock(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
struct sway_seat *seat;
|
struct sway_seat *seat;
|
||||||
wl_list_for_each(seat, &server.input->seats, link) {
|
wl_list_for_each(seat, &server.input->seats, link) {
|
||||||
seat_set_exclusive_client(seat, NULL);
|
|
||||||
// copied from seat_set_focus_layer -- deduplicate?
|
// copied from seat_set_focus_layer -- deduplicate?
|
||||||
struct sway_node *previous = seat_get_focus_inactive(seat, &root->node);
|
struct sway_node *previous = seat_get_focus_inactive(seat, &root->node);
|
||||||
if (previous) {
|
if (previous) {
|
||||||
|
@ -139,6 +139,13 @@ static void handle_unlock(struct wl_listener *listener, void *data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Triggers a refocus of the topmost surface layer if necessary
|
||||||
|
// TODO: Make layer surface focus per-output based on cursor position
|
||||||
|
for (int i = 0; i < root->outputs->length; ++i) {
|
||||||
|
struct sway_output *output = root->outputs->items[i];
|
||||||
|
arrange_layers(output);
|
||||||
|
}
|
||||||
|
|
||||||
// redraw everything
|
// redraw everything
|
||||||
for (int i = 0; i < root->outputs->length; ++i) {
|
for (int i = 0; i < root->outputs->length; ++i) {
|
||||||
struct sway_output *output = root->outputs->items[i];
|
struct sway_output *output = root->outputs->items[i];
|
||||||
|
|
Loading…
Reference in a new issue