toplevel-management: Wire up more actions

This commit is contained in:
Victoria Brekenfeld 2024-02-08 20:29:16 +01:00 committed by Victoria Brekenfeld
parent 068b70d4bc
commit 13be507093
2 changed files with 56 additions and 0 deletions

View file

@ -992,6 +992,9 @@ impl Shell {
vec![
ManagementCapabilities::Close,
ManagementCapabilities::Activate,
ManagementCapabilities::Maximize,
ManagementCapabilities::Minimize,
ManagementCapabilities::MoveToWorkspace,
],
client_should_see_privileged_protocols,
);

View file

@ -94,6 +94,59 @@ impl ToplevelManagementHandler for State {
return;
}
}
fn fullscreen(
&mut self,
_dh: &DisplayHandle,
window: &<Self as ToplevelInfoHandler>::Window,
output: Option<Output>,
) {
if let Some(mapped) = self.common.shell.element_for_surface(window).cloned() {
if let Some(output) = output {
let workspace = self.common.shell.workspaces.active_mut(&output);
workspace.fullscreen_request(window, None);
} else if let Some(workspace) = self.common.shell.space_for_mut(&mapped) {
workspace.fullscreen_request(window, None);
}
}
}
fn unfullscreen(
&mut self,
_dh: &DisplayHandle,
window: &<Self as ToplevelInfoHandler>::Window,
) {
if let Some(mapped) = self.common.shell.element_for_surface(window).cloned() {
if let Some(workspace) = self.common.shell.space_for_mut(&mapped) {
let previous = workspace.unfullscreen_request(window);
assert!(previous.is_none());
}
}
}
fn maximize(&mut self, _dh: &DisplayHandle, window: &<Self as ToplevelInfoHandler>::Window) {
if let Some(mapped) = self.common.shell.element_for_surface(window).cloned() {
self.common.shell.maximize_request(&mapped);
}
}
fn unmaximize(&mut self, _dh: &DisplayHandle, window: &<Self as ToplevelInfoHandler>::Window) {
if let Some(mapped) = self.common.shell.element_for_surface(window).cloned() {
self.common.shell.unmaximize_request(&mapped);
}
}
fn minimize(&mut self, _dh: &DisplayHandle, window: &<Self as ToplevelInfoHandler>::Window) {
if let Some(mapped) = self.common.shell.element_for_surface(window).cloned() {
self.common.shell.minimize_request(&mapped);
}
}
fn unminimize(&mut self, _dh: &DisplayHandle, window: &<Self as ToplevelInfoHandler>::Window) {
if let Some(mapped) = self.common.shell.element_for_surface(window).cloned() {
self.common.shell.unminimize_request(&mapped);
}
}
}
impl ManagementWindow for CosmicSurface {