fix(input): match layer keyboard focus to fullscreen visibility (#49)

* fix(input): require mapped layers for keyboard focus

* fix(input): match layer keyboard focus to fullscreen visibility

---------

Co-authored-by: Samuel Onoja <[email protected]>
This commit is contained in:
Samuel OnojaandSamuel Onoja authored and GitHub committed 2026-10-14 13:30:14 +01:00
1 parent b5f7793870
commit 9251522a69
8 files changed
+314 -6

No files matched your search

+4
View File
@@ -519,9 +519,13 @@ impl Ferese {
if !self.overview.is_active() {
self.retarget_overview();
}
let overview_was_presenting = self.overview.is_presenting();
active_animation |= self
.overview
.advance(delta, self.spring_config, self.animations_enabled);
if overview_was_presenting != self.overview.is_presenting() {
self.reconcile_layer_keyboard_focus();
}
self.refresh_workspace_slide_offsets();
self.sync_window_stacking();
+8
View File
@@ -173,6 +173,14 @@ impl Ferese {
.is_some_and(|workspace| workspace.fullscreen.is_some())
}
pub(crate) fn layer_visible_on_output(&self, output: &Output, layer: Layer) -> bool {
layer != Layer::Top || !self.output_has_fullscreen(output)
}
pub(crate) fn layer_visible_for_frame(&self, output: &Output, layer: Layer, overview: bool) -> bool {
layer != Layer::Top || !self.output_has_fullscreen_for_frame(output, overview)
}
pub fn set_window_fullscreen(&mut self, window: WindowId, enabled: bool) {
match self.workspaces.set_fullscreen(window, enabled) {
Ok(true) => self.relayout_window(window),
+1 -1
View File
@@ -104,7 +104,7 @@ impl Ferese {
let map = layer_map_for_output(output);
for requested in layers {
if *requested == Layer::Top && self.output_has_fullscreen(output) {
if !self.layer_visible_on_output(output, *requested) {
continue;
}
for layer in map.layers_on(*requested).rev() {
+1
View File
@@ -641,6 +641,7 @@ impl Ferese {
self.sync_window_stacking();
self.retarget_overview();
self.reconcile_tab_indicator();
self.reconcile_layer_keyboard_focus();
if !finalize {
return;
}