Skroll-stegning i fönsterlistan + klick/launch-debugloggar
All checks were successful
check / check (push) Successful in 1m34s
All checks were successful
check / check (push) Successful in 1m34s
Med en grupps lista öppen stegar skroll (på gruppikonen eller över listan) markeringen mellan raderna — markerad rad får accentbakgrund och triggar samma förhandsvisning som hover (peek/fokus enligt list_hover). Funkar i både hover- och klickläge; utan öppen lista beter sig skroll som förut (cykla fönster). Watchdogen räknar stegning som aktivitet så listan inte stängs mitt i. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
19
src/dock.rs
19
src/dock.rs
@@ -47,6 +47,8 @@ pub struct Ctx {
|
||||
pub refresh_pending: Cell<bool>,
|
||||
/// den enda popover som får vara öppen åt gången
|
||||
pub current_popover: RefCell<Option<gtk::Popover>>,
|
||||
/// öppen fönsterlista (för skroll-stegning från gruppikonen)
|
||||
pub group_list: RefCell<Option<menu::GroupList>>,
|
||||
}
|
||||
|
||||
pub struct Dock {
|
||||
@@ -730,6 +732,17 @@ fn build_item_widget(ctx: &Rc<Ctx>, connector: &str, item: Rc<Item>) -> gtk::But
|
||||
let item = item.clone();
|
||||
let conn2 = connector.to_string();
|
||||
scroll.connect_scroll(move |_, _, dy| {
|
||||
// om den här gruppens lista är öppen: stega markeringen i den
|
||||
let step = ctx
|
||||
.group_list
|
||||
.borrow()
|
||||
.as_ref()
|
||||
.filter(|h| h.key == item.meta.key && h.connector == conn2)
|
||||
.map(|h| h.step.clone());
|
||||
if let Some(step) = step {
|
||||
step(dy);
|
||||
return glib::Propagation::Stop;
|
||||
}
|
||||
if ctx.cfg.borrow().for_output(&conn2).behavior.scroll == ScrollAction::CycleWindows {
|
||||
let live = live_item(&ctx, &conn2, &item);
|
||||
cycle_windows(&ctx, &live, dy > 0.0);
|
||||
@@ -745,6 +758,12 @@ fn build_item_widget(ctx: &Rc<Ctx>, connector: &str, item: Rc<Item>) -> gtk::But
|
||||
}
|
||||
|
||||
fn primary_action(ctx: &Rc<Ctx>, connector: &str, item: &Rc<Item>, anchor: >k::Button) {
|
||||
debug!(
|
||||
"vänsterklick: {} ({} fönster, pinnad={})",
|
||||
item.meta.display_name,
|
||||
item.windows.len(),
|
||||
item.pinned
|
||||
);
|
||||
let service = ctx.service.borrow();
|
||||
let Some(service) = service.as_ref() else {
|
||||
icons::launch(&item.meta);
|
||||
|
||||
Reference in New Issue
Block a user