feat(app-list): middle click app button to launch new window

This commit is contained in:
Ryan Brue 2024-04-04 06:51:21 -05:00 committed by GitHub
parent 1475f8f32b
commit 3e80dcdca8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -257,18 +257,7 @@ impl DockItem {
mouse_area(
icon_button
.on_press_maybe(if toplevels.is_empty() {
let gpu_idx = gpus.map(|gpus| {
if desktop_info.prefers_dgpu {
gpus.iter().position(|gpu| !gpu.default).unwrap_or(0)
} else {
gpus.iter().position(|gpu| gpu.default).unwrap_or(0)
}
});
desktop_info
.exec
.clone()
.map(|exec| Message::Exec(exec, gpu_idx))
launch_on_preferred_gpu(desktop_info, gpus)
} else if toplevels.len() == 1 {
toplevels.first().map(|t| Message::Toggle(t.0.clone()))
} else {
@ -277,7 +266,11 @@ impl DockItem {
.width(Length::Shrink)
.height(Length::Shrink),
)
.on_right_release(Message::Popup(desktop_info.id.clone())),
.on_right_release(Message::Popup(desktop_info.id.clone()))
.on_middle_release({
launch_on_preferred_gpu(desktop_info, gpus)
.unwrap_or_else(|| Message::Popup(desktop_info.id.clone()))
}),
)
.on_drag(|_| Message::StartDrag(desktop_info.id.clone()))
.on_cancelled(Message::DragFinished)
@ -1579,3 +1572,22 @@ impl CosmicAppList {
None
}
}
fn launch_on_preferred_gpu(
desktop_info: &DesktopEntryData,
gpus: Option<&[Gpu]>,
) -> Option<Message> {
let Some(exec) = desktop_info.exec.clone() else {
return None;
};
let gpu_idx = gpus.map(|gpus| {
if desktop_info.prefers_dgpu {
gpus.iter().position(|gpu| !gpu.default).unwrap_or(0)
} else {
gpus.iter().position(|gpu| gpu.default).unwrap_or(0)
}
});
Some(Message::Exec(exec, gpu_idx))
}