feat(app-list): middle click app button to launch new window
This commit is contained in:
parent
1475f8f32b
commit
3e80dcdca8
1 changed files with 25 additions and 13 deletions
|
|
@ -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))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue