mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-04-25 10:08:33 +02:00
wip
This commit is contained in:
@@ -1296,6 +1296,12 @@ impl WindowManager {
|
|||||||
window.lower()?;
|
window.lower()?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(container) = workspace.monocle_container() {
|
||||||
|
if let Some(window) = container.focused_window() {
|
||||||
|
window.lower()?;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
WorkspaceLayer::Floating => {
|
WorkspaceLayer::Floating => {
|
||||||
workspace.set_layer(WorkspaceLayer::Tiling);
|
workspace.set_layer(WorkspaceLayer::Tiling);
|
||||||
|
|||||||
@@ -339,11 +339,10 @@ impl WindowManager {
|
|||||||
WindowManagerEvent::Show(_, window)
|
WindowManagerEvent::Show(_, window)
|
||||||
| WindowManagerEvent::Manage(window)
|
| WindowManagerEvent::Manage(window)
|
||||||
| WindowManagerEvent::Uncloak(_, window) => {
|
| WindowManagerEvent::Uncloak(_, window) => {
|
||||||
if matches!(event, WindowManagerEvent::Uncloak(_, _))
|
if matches!(event, WindowManagerEvent::Uncloak(_, _)) && self.uncloak_to_ignore >= 1
|
||||||
&& self.uncloack_to_ignore >= 1
|
|
||||||
{
|
{
|
||||||
tracing::info!("ignoring uncloak after monocle move by mouse across monitors");
|
tracing::info!("ignoring uncloak after monocle move by mouse across monitors");
|
||||||
self.uncloack_to_ignore = self.uncloack_to_ignore.saturating_sub(1);
|
self.uncloak_to_ignore = self.uncloak_to_ignore.saturating_sub(1);
|
||||||
} else {
|
} else {
|
||||||
let focused_monitor_idx = self.focused_monitor_idx();
|
let focused_monitor_idx = self.focused_monitor_idx();
|
||||||
let focused_workspace_idx =
|
let focused_workspace_idx =
|
||||||
@@ -402,6 +401,7 @@ impl WindowManager {
|
|||||||
let workspace = self.focused_workspace_mut()?;
|
let workspace = self.focused_workspace_mut()?;
|
||||||
let workspace_contains_window = workspace.contains_window(window.hwnd);
|
let workspace_contains_window = workspace.contains_window(window.hwnd);
|
||||||
let monocle_container = workspace.monocle_container().clone();
|
let monocle_container = workspace.monocle_container().clone();
|
||||||
|
let mut workspace_layer = *workspace.layer();
|
||||||
|
|
||||||
if !workspace_contains_window && needs_reconciliation.is_none() {
|
if !workspace_contains_window && needs_reconciliation.is_none() {
|
||||||
let floating_applications = FLOATING_APPLICATIONS.lock();
|
let floating_applications = FLOATING_APPLICATIONS.lock();
|
||||||
@@ -445,6 +445,7 @@ impl WindowManager {
|
|||||||
placement.should_center() && workspace.tile;
|
placement.should_center() && workspace.tile;
|
||||||
workspace.floating_windows_mut().push_back(window);
|
workspace.floating_windows_mut().push_back(window);
|
||||||
workspace.set_layer(WorkspaceLayer::Floating);
|
workspace.set_layer(WorkspaceLayer::Floating);
|
||||||
|
workspace_layer = *workspace.layer();
|
||||||
if center_spawned_floats {
|
if center_spawned_floats {
|
||||||
let mut floating_window = window;
|
let mut floating_window = window;
|
||||||
floating_window.center(
|
floating_window.center(
|
||||||
@@ -458,6 +459,7 @@ impl WindowManager {
|
|||||||
WindowContainerBehaviour::Create => {
|
WindowContainerBehaviour::Create => {
|
||||||
workspace.new_container_for_window(window);
|
workspace.new_container_for_window(window);
|
||||||
workspace.set_layer(WorkspaceLayer::Tiling);
|
workspace.set_layer(WorkspaceLayer::Tiling);
|
||||||
|
workspace_layer = *workspace.layer();
|
||||||
self.update_focused_workspace(false, false)?;
|
self.update_focused_workspace(false, false)?;
|
||||||
}
|
}
|
||||||
WindowContainerBehaviour::Append => {
|
WindowContainerBehaviour::Append => {
|
||||||
@@ -468,6 +470,7 @@ impl WindowManager {
|
|||||||
})?
|
})?
|
||||||
.add_window(window);
|
.add_window(window);
|
||||||
workspace.set_layer(WorkspaceLayer::Tiling);
|
workspace.set_layer(WorkspaceLayer::Tiling);
|
||||||
|
workspace_layer = *workspace.layer();
|
||||||
self.update_focused_workspace(true, false)?;
|
self.update_focused_workspace(true, false)?;
|
||||||
stackbar_manager::send_notification();
|
stackbar_manager::send_notification();
|
||||||
}
|
}
|
||||||
@@ -500,7 +503,10 @@ impl WindowManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !monocle_window_event && monocle_container.is_some() {
|
if !monocle_window_event
|
||||||
|
&& monocle_container.is_some()
|
||||||
|
&& matches!(workspace_layer, WorkspaceLayer::Tiling)
|
||||||
|
{
|
||||||
window.hide();
|
window.hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1299,7 +1299,7 @@ impl StaticConfig {
|
|||||||
has_pending_raise_op: false,
|
has_pending_raise_op: false,
|
||||||
pending_move_op: Arc::new(None),
|
pending_move_op: Arc::new(None),
|
||||||
already_moved_window_handles: Arc::new(Mutex::new(HashSet::new())),
|
already_moved_window_handles: Arc::new(Mutex::new(HashSet::new())),
|
||||||
uncloack_to_ignore: 0,
|
uncloak_to_ignore: 0,
|
||||||
known_hwnds: HashMap::new(),
|
known_hwnds: HashMap::new(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ pub struct WindowManager {
|
|||||||
pub has_pending_raise_op: bool,
|
pub has_pending_raise_op: bool,
|
||||||
pub pending_move_op: Arc<Option<(usize, usize, isize)>>,
|
pub pending_move_op: Arc<Option<(usize, usize, isize)>>,
|
||||||
pub already_moved_window_handles: Arc<Mutex<HashSet<isize>>>,
|
pub already_moved_window_handles: Arc<Mutex<HashSet<isize>>>,
|
||||||
pub uncloack_to_ignore: usize,
|
pub uncloak_to_ignore: usize,
|
||||||
/// Maps each known window hwnd to the (monitor, workspace) index pair managing it
|
/// Maps each known window hwnd to the (monitor, workspace) index pair managing it
|
||||||
pub known_hwnds: HashMap<isize, (usize, usize)>,
|
pub known_hwnds: HashMap<isize, (usize, usize)>,
|
||||||
}
|
}
|
||||||
@@ -447,7 +447,7 @@ impl WindowManager {
|
|||||||
has_pending_raise_op: false,
|
has_pending_raise_op: false,
|
||||||
pending_move_op: Arc::new(None),
|
pending_move_op: Arc::new(None),
|
||||||
already_moved_window_handles: Arc::new(Mutex::new(HashSet::new())),
|
already_moved_window_handles: Arc::new(Mutex::new(HashSet::new())),
|
||||||
uncloack_to_ignore: 0,
|
uncloak_to_ignore: 0,
|
||||||
known_hwnds: HashMap::new(),
|
known_hwnds: HashMap::new(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -1234,7 +1234,7 @@ impl WindowManager {
|
|||||||
// That workspace reconciliation would focus the window on the origin monitor.
|
// That workspace reconciliation would focus the window on the origin monitor.
|
||||||
// So we need to ignore the uncloak events produced by the origin workspace
|
// So we need to ignore the uncloak events produced by the origin workspace
|
||||||
// restore to avoid that issue.
|
// restore to avoid that issue.
|
||||||
self.uncloack_to_ignore = uncloack_amount;
|
self.uncloak_to_ignore = uncloack_amount;
|
||||||
}
|
}
|
||||||
} else if origin_workspace
|
} else if origin_workspace
|
||||||
.maximized_window()
|
.maximized_window()
|
||||||
|
|||||||
Reference in New Issue
Block a user