magnifique

This commit is contained in:
Tiago Batista Cardoso
2026-01-25 01:39:15 +01:00
parent 2283ef5f33
commit 929c386b09

View File

@@ -5,7 +5,7 @@ use client_network::{
};
use crossbeam_channel::{Receiver, Sender};
use egui::{
Align, CentralPanel, CollapsingHeader, Color32, Context, CornerRadius, Frame, Layout,
Align, CentralPanel, CollapsingHeader, Color32, Context, CornerRadius, Frame, Id, Layout,
ProgressBar, Response, ScrollArea, SidePanel, Stroke, TopBottomPanel, Ui, Vec2,
ViewportCommand,
};
@@ -372,8 +372,28 @@ impl eframe::App for P2PClientApp {
}
if self.show_choose_server_window {
let full_rect = ctx.input(|i| i.screen_rect());
let modal_size = egui::vec2(400.0, 160.0);
let modal_pos = (full_rect.center() - modal_size * 0.5).to_vec2();
// 1) blocker (background order) — captures input except modal area
egui::Area::new(Id::new("modal_blocker_bg"))
.order(egui::Order::Background)
.show(ctx, |ui| {
let painter = ui.painter();
painter.rect_filled(full_rect, 0.0, egui::Color32::from_black_alpha(160));
// create an interactable that covers the full rect so clicks are eaten
// but leave the modal rect uncovered by marking it non-interactive below.
let sense = egui::Sense::click_and_drag();
ui.allocate_exact_size(full_rect.size(), sense);
});
egui::Window::new("Choose the server")
.resizable(false)
.collapsible(false)
.title_bar(true)
.anchor(egui::Align2::CENTER_CENTER, egui::Vec2::ZERO)
.fixed_size(modal_size)
.show(ctx, |ui| {
ScrollArea::vertical()
.auto_shrink([false; 2])