diff options
author | Robin Jarry <robin@jarry.cc> | 2023-01-25 21:54:16 +0100 |
---|---|---|
committer | Ronan Pigott <ronan@rjp.ie> | 2023-02-22 11:41:43 -0700 |
commit | 9498e4d2614fce6b29b64fd8a3861c1fb5be4b87 (patch) | |
tree | 68c572ccf83b868bece2443ed6fd95b8831558ad | |
parent | 16b0afd4331dbd8ed6bb1df49e8309d05f4488dd (diff) |
Allow windows in scratchpad to set the urgent flag
When a window in the scratchpad container requests for
xdg_activation_v1, it is ignored no matter what the value of
focus_on_window_activation is.
At least allow windows in the scratchpad to set the urgent flag. When
focus_on_window_activation is set to "focus", show the parent scratchpad
where the contained requested for xdg_activation_v1.
-rw-r--r-- | sway/tree/view.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c index fcb78de3..ec54fed8 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -369,16 +369,13 @@ void view_set_activated(struct sway_view *view, bool activated) { void view_request_activate(struct sway_view *view, struct sway_seat *seat) { struct sway_workspace *ws = view->container->pending.workspace; - if (!ws) { // hidden scratchpad container - return; - } if (!seat) { seat = input_manager_current_seat(); } switch (config->focus_on_window_activation) { case FOWA_SMART: - if (workspace_is_visible(ws)) { + if (ws && workspace_is_visible(ws)) { seat_set_focus_container(seat, view->container); container_raise_floating(view->container); } else { @@ -389,8 +386,12 @@ void view_request_activate(struct sway_view *view, struct sway_seat *seat) { view_set_urgent(view, true); break; case FOWA_FOCUS: - seat_set_focus_container(seat, view->container); - container_raise_floating(view->container); + if (container_is_scratchpad_hidden_or_child(view->container)) { + root_scratchpad_show(view->container); + } else { + seat_set_focus_container(seat, view->container); + container_raise_floating(view->container); + } break; case FOWA_NONE: break; |