mirror of
https://github.com/emilk/egui.git
synced 2026-06-26 22:53:14 -04:00
egui: Fix custom Window Frames (#4009)
Fix #4002 
This commit is contained in:
@@ -390,11 +390,13 @@ impl<'open> Window<'open> {
|
||||
with_title_bar,
|
||||
} = self;
|
||||
|
||||
let frame = frame.unwrap_or_else(|| Frame::window(&ctx.style()));
|
||||
let header_color =
|
||||
frame.map_or_else(|| ctx.style().visuals.widgets.open.weak_bg_fill, |f| f.fill);
|
||||
let window_frame = frame.unwrap_or_else(|| Frame::window(&ctx.style()));
|
||||
|
||||
let is_explicitly_closed = matches!(open, Some(false));
|
||||
let is_open = !is_explicitly_closed || ctx.memory(|mem| mem.everything_is_visible());
|
||||
area.show_open_close_animation(ctx, &frame, is_open);
|
||||
area.show_open_close_animation(ctx, &window_frame, is_open);
|
||||
|
||||
if !is_open {
|
||||
return None;
|
||||
@@ -419,7 +421,7 @@ impl<'open> Window<'open> {
|
||||
// Calculate roughly how much larger the window size is compared to the inner rect
|
||||
let (title_bar_height, title_content_spacing) = if with_title_bar {
|
||||
let style = ctx.style();
|
||||
let window_margin = style.spacing.window_margin;
|
||||
let window_margin = window_frame.inner_margin;
|
||||
let spacing = window_margin.top + window_margin.bottom;
|
||||
let height = ctx.fonts(|f| title.font_height(f, &style)) + spacing;
|
||||
(height, spacing)
|
||||
@@ -438,8 +440,8 @@ impl<'open> Window<'open> {
|
||||
last_frame_outer_rect,
|
||||
)
|
||||
.and_then(|window_interaction| {
|
||||
let margins = frame.outer_margin.sum()
|
||||
+ frame.inner_margin.sum()
|
||||
let margins = window_frame.outer_margin.sum()
|
||||
+ window_frame.inner_margin.sum()
|
||||
+ vec2(0.0, title_bar_height);
|
||||
|
||||
interact(
|
||||
@@ -460,8 +462,8 @@ impl<'open> Window<'open> {
|
||||
|
||||
let content_inner = {
|
||||
// BEGIN FRAME --------------------------------
|
||||
let frame_stroke = frame.stroke;
|
||||
let mut frame = frame.begin(&mut area_content_ui);
|
||||
let frame_stroke = window_frame.stroke;
|
||||
let mut frame = window_frame.begin(&mut area_content_ui);
|
||||
|
||||
let show_close_button = open.is_some();
|
||||
|
||||
@@ -518,12 +520,12 @@ impl<'open> Window<'open> {
|
||||
y: title_bar_height,
|
||||
},
|
||||
);
|
||||
let mut round = area_content_ui.visuals().window_rounding;
|
||||
|
||||
let mut round = window_frame.rounding;
|
||||
if !is_collapsed {
|
||||
round.se = 0.0;
|
||||
round.sw = 0.0;
|
||||
}
|
||||
let header_color = area_content_ui.visuals().widgets.open.weak_bg_fill;
|
||||
|
||||
area_content_ui.painter().set(
|
||||
*where_to_put_header_background,
|
||||
|
||||
Reference in New Issue
Block a user