Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c6b69dcec2 |
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -1042,7 +1042,7 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "waydock"
|
name = "waydock"
|
||||||
version = "0.1.4"
|
version = "0.1.5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-channel",
|
"async-channel",
|
||||||
"gtk4",
|
"gtk4",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "waydock"
|
name = "waydock"
|
||||||
version = "0.1.4"
|
version = "0.1.5"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "Modern, resurssnål dock för Wayfire — transparent, JSON-konfigurerad, per-skärm"
|
description = "Modern, resurssnål dock för Wayfire — transparent, JSON-konfigurerad, per-skärm"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|||||||
15
src/dock.rs
15
src/dock.rs
@@ -468,7 +468,13 @@ fn set_dock_hidden(ctx: &Ctx, dock: &Rc<Dock>, hidden: bool) {
|
|||||||
|
|
||||||
fn should_hide(ctx: &Ctx, dock: &Dock) -> bool {
|
fn should_hide(ctx: &Ctx, dock: &Dock) -> bool {
|
||||||
let cfg = ctx.cfg.borrow().for_output(&dock.connector);
|
let cfg = ctx.cfg.borrow().for_output(&dock.connector);
|
||||||
if !cfg.autohide.enabled || dock.hover.get() || dock.sensor_hover.get() {
|
// en öppen meny/fönsterlista håller dockan uppe — pekaren i en popup
|
||||||
|
// (egen yta) räknas annars som "lämnat dockan"
|
||||||
|
if !cfg.autohide.enabled
|
||||||
|
|| dock.hover.get()
|
||||||
|
|| dock.sensor_hover.get()
|
||||||
|
|| ctx.open_popovers.get() > 0
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
match cfg.autohide.mode {
|
match cfg.autohide.mode {
|
||||||
@@ -490,6 +496,13 @@ pub fn update_autohide(ctx: &Rc<Ctx>) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Starta göm-fördröjningen för alla dockor (körs när sista menyn stängts).
|
||||||
|
pub fn schedule_hide_all(ctx: &Rc<Ctx>) {
|
||||||
|
for dock in ctx.docks.borrow().iter() {
|
||||||
|
schedule_hide(ctx, dock);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn schedule_hide(ctx: &Rc<Ctx>, dock: &Rc<Dock>) {
|
fn schedule_hide(ctx: &Rc<Ctx>, dock: &Rc<Dock>) {
|
||||||
let delay = ctx.cfg.borrow().for_output(&dock.connector).autohide.hide_delay_ms;
|
let delay = ctx.cfg.borrow().for_output(&dock.connector).autohide.hide_delay_ms;
|
||||||
let generation = dock.hide_generation.get() + 1;
|
let generation = dock.hide_generation.get() + 1;
|
||||||
|
|||||||
@@ -198,9 +198,13 @@ fn register_popover(ctx: &Rc<Ctx>, popover: &impl IsA<gtk::Popover>) {
|
|||||||
let ctx2 = ctx.clone();
|
let ctx2 = ctx.clone();
|
||||||
glib::idle_add_local_once(move || {
|
glib::idle_add_local_once(move || {
|
||||||
p.unparent();
|
p.unparent();
|
||||||
if ctx2.open_popovers.get() == 0 && ctx2.refresh_pending.get() {
|
if ctx2.open_popovers.get() == 0 {
|
||||||
|
if ctx2.refresh_pending.get() {
|
||||||
crate::dock::refresh_items(&ctx2);
|
crate::dock::refresh_items(&ctx2);
|
||||||
}
|
}
|
||||||
|
// sista menyn stängd: autohide får ta vid igen (med delay)
|
||||||
|
crate::dock::schedule_hide_all(&ctx2);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user