mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-23 02:05:33 +07:00
Clear on-demand layer-shell focus in more cases
This commit is contained in:
@@ -201,7 +201,9 @@ impl CompositorHandler for State {
|
|||||||
|
|
||||||
let new_focus = self.niri.layout.focus().map(|m| &m.window);
|
let new_focus = self.niri.layout.focus().map(|m| &m.window);
|
||||||
if new_focus == Some(&window) {
|
if new_focus == Some(&window) {
|
||||||
|
// We activated the newly opened window.
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.niri.queue_redraw(&output);
|
self.niri.queue_redraw(&output);
|
||||||
|
|||||||
@@ -317,6 +317,7 @@ impl ClientDndGrabHandler for State {
|
|||||||
if let Some((mapped, _)) = self.niri.layout.find_window_and_output(root) {
|
if let Some((mapped, _)) = self.niri.layout.find_window_and_output(root) {
|
||||||
let window = mapped.window.clone();
|
let window = mapped.window.clone();
|
||||||
self.niri.layout.activate_window(&window);
|
self.niri.layout.activate_window(&window);
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
activate_output = false;
|
activate_output = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -768,36 +768,42 @@ impl State {
|
|||||||
Action::FocusColumnLeft => {
|
Action::FocusColumnLeft => {
|
||||||
self.niri.layout.focus_left();
|
self.niri.layout.focus_left();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusColumnRight => {
|
Action::FocusColumnRight => {
|
||||||
self.niri.layout.focus_right();
|
self.niri.layout.focus_right();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusColumnFirst => {
|
Action::FocusColumnFirst => {
|
||||||
self.niri.layout.focus_column_first();
|
self.niri.layout.focus_column_first();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusColumnLast => {
|
Action::FocusColumnLast => {
|
||||||
self.niri.layout.focus_column_last();
|
self.niri.layout.focus_column_last();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusColumnRightOrFirst => {
|
Action::FocusColumnRightOrFirst => {
|
||||||
self.niri.layout.focus_column_right_or_first();
|
self.niri.layout.focus_column_right_or_first();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusColumnLeftOrLast => {
|
Action::FocusColumnLeftOrLast => {
|
||||||
self.niri.layout.focus_column_left_or_last();
|
self.niri.layout.focus_column_left_or_last();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
@@ -814,6 +820,7 @@ impl State {
|
|||||||
self.niri.layout.focus_up();
|
self.niri.layout.focus_up();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
|
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
@@ -831,6 +838,7 @@ impl State {
|
|||||||
self.niri.layout.focus_down();
|
self.niri.layout.focus_down();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
|
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
@@ -848,6 +856,7 @@ impl State {
|
|||||||
self.niri.layout.focus_left();
|
self.niri.layout.focus_left();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
|
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
@@ -865,6 +874,7 @@ impl State {
|
|||||||
self.niri.layout.focus_right();
|
self.niri.layout.focus_right();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
|
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
@@ -872,48 +882,56 @@ impl State {
|
|||||||
Action::FocusWindowDown => {
|
Action::FocusWindowDown => {
|
||||||
self.niri.layout.focus_down();
|
self.niri.layout.focus_down();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusWindowUp => {
|
Action::FocusWindowUp => {
|
||||||
self.niri.layout.focus_up();
|
self.niri.layout.focus_up();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusWindowDownOrColumnLeft => {
|
Action::FocusWindowDownOrColumnLeft => {
|
||||||
self.niri.layout.focus_down_or_left();
|
self.niri.layout.focus_down_or_left();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusWindowDownOrColumnRight => {
|
Action::FocusWindowDownOrColumnRight => {
|
||||||
self.niri.layout.focus_down_or_right();
|
self.niri.layout.focus_down_or_right();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusWindowUpOrColumnLeft => {
|
Action::FocusWindowUpOrColumnLeft => {
|
||||||
self.niri.layout.focus_up_or_left();
|
self.niri.layout.focus_up_or_left();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusWindowUpOrColumnRight => {
|
Action::FocusWindowUpOrColumnRight => {
|
||||||
self.niri.layout.focus_up_or_right();
|
self.niri.layout.focus_up_or_right();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusWindowOrWorkspaceDown => {
|
Action::FocusWindowOrWorkspaceDown => {
|
||||||
self.niri.layout.focus_window_or_workspace_down();
|
self.niri.layout.focus_window_or_workspace_down();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusWindowOrWorkspaceUp => {
|
Action::FocusWindowOrWorkspaceUp => {
|
||||||
self.niri.layout.focus_window_or_workspace_up();
|
self.niri.layout.focus_window_or_workspace_up();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
@@ -1042,12 +1060,14 @@ impl State {
|
|||||||
Action::FocusWorkspaceDown => {
|
Action::FocusWorkspaceDown => {
|
||||||
self.niri.layout.switch_workspace_down();
|
self.niri.layout.switch_workspace_down();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
Action::FocusWorkspaceUp => {
|
Action::FocusWorkspaceUp => {
|
||||||
self.niri.layout.switch_workspace_up();
|
self.niri.layout.switch_workspace_up();
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
@@ -1076,6 +1096,7 @@ impl State {
|
|||||||
}
|
}
|
||||||
self.maybe_warp_cursor_to_focus();
|
self.maybe_warp_cursor_to_focus();
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
|
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
@@ -1083,6 +1104,8 @@ impl State {
|
|||||||
}
|
}
|
||||||
Action::FocusWorkspacePrevious => {
|
Action::FocusWorkspacePrevious => {
|
||||||
self.niri.layout.switch_workspace_previous();
|
self.niri.layout.switch_workspace_previous();
|
||||||
|
self.maybe_warp_cursor_to_focus();
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
// FIXME: granular
|
// FIXME: granular
|
||||||
self.niri.queue_redraw_all();
|
self.niri.queue_redraw_all();
|
||||||
}
|
}
|
||||||
@@ -1160,6 +1183,7 @@ impl State {
|
|||||||
if !self.maybe_warp_cursor_to_focus_centered() {
|
if !self.maybe_warp_cursor_to_focus_centered() {
|
||||||
self.move_cursor_to_output(&output);
|
self.move_cursor_to_output(&output);
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Action::FocusMonitorRight => {
|
Action::FocusMonitorRight => {
|
||||||
@@ -1168,6 +1192,7 @@ impl State {
|
|||||||
if !self.maybe_warp_cursor_to_focus_centered() {
|
if !self.maybe_warp_cursor_to_focus_centered() {
|
||||||
self.move_cursor_to_output(&output);
|
self.move_cursor_to_output(&output);
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Action::FocusMonitorDown => {
|
Action::FocusMonitorDown => {
|
||||||
@@ -1176,6 +1201,7 @@ impl State {
|
|||||||
if !self.maybe_warp_cursor_to_focus_centered() {
|
if !self.maybe_warp_cursor_to_focus_centered() {
|
||||||
self.move_cursor_to_output(&output);
|
self.move_cursor_to_output(&output);
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Action::FocusMonitorUp => {
|
Action::FocusMonitorUp => {
|
||||||
@@ -1184,6 +1210,7 @@ impl State {
|
|||||||
if !self.maybe_warp_cursor_to_focus_centered() {
|
if !self.maybe_warp_cursor_to_focus_centered() {
|
||||||
self.move_cursor_to_output(&output);
|
self.move_cursor_to_output(&output);
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Action::FocusMonitorPrevious => {
|
Action::FocusMonitorPrevious => {
|
||||||
@@ -1192,6 +1219,7 @@ impl State {
|
|||||||
if !self.maybe_warp_cursor_to_focus_centered() {
|
if !self.maybe_warp_cursor_to_focus_centered() {
|
||||||
self.move_cursor_to_output(&output);
|
self.move_cursor_to_output(&output);
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Action::FocusMonitorNext => {
|
Action::FocusMonitorNext => {
|
||||||
@@ -1200,6 +1228,7 @@ impl State {
|
|||||||
if !self.maybe_warp_cursor_to_focus_centered() {
|
if !self.maybe_warp_cursor_to_focus_centered() {
|
||||||
self.move_cursor_to_output(&output);
|
self.move_cursor_to_output(&output);
|
||||||
}
|
}
|
||||||
|
self.niri.layer_shell_on_demand_focus = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Action::MoveWindowToMonitorLeft => {
|
Action::MoveWindowToMonitorLeft => {
|
||||||
|
|||||||
Reference in New Issue
Block a user