gui: scroll the host body and grow the default window for the QR

The QR panel pushed the Stop hosting button below the fold at the old
520x480 default. Wraps host_running/host_form in a vertical ScrollArea
(header stays pinned) and bumps the initial height to 640 so the common
case fits without scrolling.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-28 05:31:13 -04:00
parent 7a03dee12f
commit a7ea1fd9df
+15 -7
View File
@@ -66,8 +66,11 @@ use winit::window::{Window, WindowAttributes, WindowId};
use self::child::{ChildEvent, ChildProc};
use self::tray::{TrayAction, TrayHandle, TrayStatus};
/// Initial / minimum window size, in logical points.
const INNER_SIZE: [f64; 2] = [520.0, 480.0];
/// Initial / minimum window size, in logical points. Initial height fits the
/// host screen (ticket + Copy + QR + Stop) without needing to scroll on a 1080p
/// display; the host screen still wraps in a ScrollArea for the case where the
/// user shrinks the window below MIN_INNER_SIZE proportions.
const INNER_SIZE: [f64; 2] = [520.0, 640.0];
const MIN_INNER_SIZE: [f64; 2] = [460.0, 380.0];
/// Events delivered to the winit loop from off the UI thread (or from egui).
@@ -959,11 +962,16 @@ impl PixelPassApp {
});
ui.separator();
if running {
self.host_running(ui);
} else {
self.host_form(ui);
}
// Scroll the body, not the header — Menu/Host stay pinned at the top.
// Needed once the QR panel landed: ticket + Copy + QR + Stop overflows a
// shrunken window.
egui::ScrollArea::vertical().show(ui, |ui| {
if running {
self.host_running(ui);
} else {
self.host_form(ui);
}
});
}
fn host_form(&mut self, ui: &mut egui::Ui) {