From d75c63a8ce68eb36bf7da005208662ab6ee438a6 Mon Sep 17 00:00:00 2001 From: Jeena Date: Sun, 22 Mar 2026 04:20:02 +0000 Subject: [PATCH] window: fix sidebar snap-collapse when dragged narrow Remove shrink-start-child: false so the paned divider can actually be dragged below the sidebar's natural minimum width. Defer the snap-close via idle_add_local_once so widget visibility is not changed mid-drag. --- data/ui/window.blp | 1 - src/window.rs | 10 ++++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/data/ui/window.blp b/data/ui/window.blp index 99dcd62..28f0377 100644 --- a/data/ui/window.blp +++ b/data/ui/window.blp @@ -9,7 +9,6 @@ template $FeedTheMonkeyWindow : Adw.ApplicationWindow { Adw.ToastOverlay toast_overlay { Paned paned { focusable: false; - shrink-start-child: false; resize-start-child: false; start-child: Adw.ToolbarView sidebar_toolbar { diff --git a/src/window.rs b/src/window.rs index 26beaf9..cd61845 100644 --- a/src/window.rs +++ b/src/window.rs @@ -176,8 +176,14 @@ pub mod imp { let imp = win.imp(); if !imp.sidebar_toolbar.is_visible() { return; } let pos = paned.position(); - if pos < 120 { - imp.set_sidebar_visible(false); + if pos < 150 { + // Defer so we don't change widget visibility mid-drag. + let win_weak2 = win_weak.clone(); + glib::idle_add_local_once(move || { + if let Some(win) = win_weak2.upgrade() { + win.imp().set_sidebar_visible(false); + } + }); } else { s2.set_int("sidebar-width", pos).ok(); }