egui: Fix custom `Window` `Frame`s (#4009)
Fix #4002 
This commit is contained in:
parent
12b5d51325
commit
cd34a47dd6
|
|
@ -390,11 +390,13 @@ impl<'open> Window<'open> {
|
||||||
with_title_bar,
|
with_title_bar,
|
||||||
} = self;
|
} = 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_explicitly_closed = matches!(open, Some(false));
|
||||||
let is_open = !is_explicitly_closed || ctx.memory(|mem| mem.everything_is_visible());
|
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 {
|
if !is_open {
|
||||||
return None;
|
return None;
|
||||||
|
|
@ -419,7 +421,7 @@ impl<'open> Window<'open> {
|
||||||
// Calculate roughly how much larger the window size is compared to the inner rect
|
// 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 (title_bar_height, title_content_spacing) = if with_title_bar {
|
||||||
let style = ctx.style();
|
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 spacing = window_margin.top + window_margin.bottom;
|
||||||
let height = ctx.fonts(|f| title.font_height(f, &style)) + spacing;
|
let height = ctx.fonts(|f| title.font_height(f, &style)) + spacing;
|
||||||
(height, spacing)
|
(height, spacing)
|
||||||
|
|
@ -438,8 +440,8 @@ impl<'open> Window<'open> {
|
||||||
last_frame_outer_rect,
|
last_frame_outer_rect,
|
||||||
)
|
)
|
||||||
.and_then(|window_interaction| {
|
.and_then(|window_interaction| {
|
||||||
let margins = frame.outer_margin.sum()
|
let margins = window_frame.outer_margin.sum()
|
||||||
+ frame.inner_margin.sum()
|
+ window_frame.inner_margin.sum()
|
||||||
+ vec2(0.0, title_bar_height);
|
+ vec2(0.0, title_bar_height);
|
||||||
|
|
||||||
interact(
|
interact(
|
||||||
|
|
@ -460,8 +462,8 @@ impl<'open> Window<'open> {
|
||||||
|
|
||||||
let content_inner = {
|
let content_inner = {
|
||||||
// BEGIN FRAME --------------------------------
|
// BEGIN FRAME --------------------------------
|
||||||
let frame_stroke = frame.stroke;
|
let frame_stroke = window_frame.stroke;
|
||||||
let mut frame = frame.begin(&mut area_content_ui);
|
let mut frame = window_frame.begin(&mut area_content_ui);
|
||||||
|
|
||||||
let show_close_button = open.is_some();
|
let show_close_button = open.is_some();
|
||||||
|
|
||||||
|
|
@ -518,12 +520,12 @@ impl<'open> Window<'open> {
|
||||||
y: title_bar_height,
|
y: title_bar_height,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
let mut round = area_content_ui.visuals().window_rounding;
|
|
||||||
|
let mut round = window_frame.rounding;
|
||||||
if !is_collapsed {
|
if !is_collapsed {
|
||||||
round.se = 0.0;
|
round.se = 0.0;
|
||||||
round.sw = 0.0;
|
round.sw = 0.0;
|
||||||
}
|
}
|
||||||
let header_color = area_content_ui.visuals().widgets.open.weak_bg_fill;
|
|
||||||
|
|
||||||
area_content_ui.painter().set(
|
area_content_ui.painter().set(
|
||||||
*where_to_put_header_background,
|
*where_to_put_header_background,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue