fix(ui): stop forward-wheel double-scroll on peers & console tabs
The inner scroll child (##PeersList / ConsoleOutput) uses NoScrollWithMouse + ApplySmoothScroll; ImGui forwards its wheel up to the outer scroll container, so the wheel scrolled both. Add NoScrollWithMouse to the outer containers (safe: both fill the remaining height and never overflow), matching the contacts/explorer fix. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -311,8 +311,12 @@ void ConsoleTab::render(ConsoleCommandExecutor& exec)
|
||||
computeVisibleLines(has_text_filter_, filter_lower_);
|
||||
|
||||
// Main console layout
|
||||
// NoScrollWithMouse: the inner ConsoleOutput owns wheel scrolling (via ApplySmoothScroll). Without
|
||||
// this, a wheel over the output would scroll BOTH the output (smooth-scroll) and this outer container
|
||||
// (ImGui forwards the NoScrollWithMouse child's wheel to its scrollable ancestor) — a double-scroll.
|
||||
// Safe because the output panel is sized to fill the remaining height, so this outer never overflows.
|
||||
ImGui::BeginChild("ConsoleContainer", ImVec2(0, 0), false,
|
||||
ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoScrollbar);
|
||||
ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse);
|
||||
|
||||
// Optional status header (lite: sync + last error) above the toolbar.
|
||||
renderStatusHeader(exec);
|
||||
|
||||
@@ -98,7 +98,12 @@ void RenderPeersTab(App* app)
|
||||
|
||||
// Scrollable child to contain all content within available space
|
||||
ImVec2 peersAvail = ImGui::GetContentRegionAvail();
|
||||
ImGui::BeginChild("##PeersScroll", peersAvail, false, ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoScrollbar);
|
||||
// NoScrollWithMouse: the inner ##PeersList owns wheel scrolling (via ApplySmoothScroll). Without
|
||||
// this, a wheel over the list would scroll BOTH the list (smooth-scroll) and this outer container
|
||||
// (ImGui forwards the NoScrollWithMouse child's wheel to its scrollable ancestor) — a double-scroll.
|
||||
// Safe because the peer panel is sized to fill the remaining height, so this outer never overflows.
|
||||
ImGui::BeginChild("##PeersScroll", peersAvail, false,
|
||||
ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse);
|
||||
|
||||
// Responsive: scale factors per frame
|
||||
float availWidth = ImGui::GetContentRegionAvail().x;
|
||||
|
||||
Reference in New Issue
Block a user