Add some minor improvements for debugging id clashes
This commit is contained in:
parent
e613315866
commit
c8771cd13e
3 changed files with 41 additions and 18 deletions
|
@ -215,6 +215,7 @@ impl SidePanel {
|
||||||
}
|
}
|
||||||
width = clamp_to_range(width, width_range.clone()).at_most(available_rect.width());
|
width = clamp_to_range(width, width_range.clone()).at_most(available_rect.width());
|
||||||
side.set_rect_width(&mut panel_rect, width);
|
side.set_rect_width(&mut panel_rect, width);
|
||||||
|
ui.ctx().check_for_id_clash(id, panel_rect, "SidePanel");
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut resize_hover = false;
|
let mut resize_hover = false;
|
||||||
|
@ -642,6 +643,8 @@ impl TopBottomPanel {
|
||||||
};
|
};
|
||||||
height = clamp_to_range(height, height_range.clone()).at_most(available_rect.height());
|
height = clamp_to_range(height, height_range.clone()).at_most(available_rect.height());
|
||||||
side.set_rect_height(&mut panel_rect, height);
|
side.set_rect_height(&mut panel_rect, height);
|
||||||
|
ui.ctx()
|
||||||
|
.check_for_id_clash(id, panel_rect, "TopBottomPanel");
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut resize_hover = false;
|
let mut resize_hover = false;
|
||||||
|
|
|
@ -279,16 +279,45 @@ impl Context {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let show_error = |pos: Pos2, text: String| {
|
let show_error = |widget_rect: Rect, text: String| {
|
||||||
|
let text = format!("🔥 {}", text);
|
||||||
|
let color = self.style().visuals.error_fg_color;
|
||||||
let painter = self.debug_painter();
|
let painter = self.debug_painter();
|
||||||
let rect = painter.error(pos, text);
|
painter.rect_stroke(widget_rect, 0.0, (1.0, color));
|
||||||
|
|
||||||
|
let below = widget_rect.bottom() + 32.0 < self.input().screen_rect.bottom();
|
||||||
|
|
||||||
|
let text_rect = if below {
|
||||||
|
painter.debug_text(
|
||||||
|
widget_rect.left_bottom() + vec2(0.0, 2.0),
|
||||||
|
Align2::LEFT_TOP,
|
||||||
|
color,
|
||||||
|
text,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
painter.debug_text(
|
||||||
|
widget_rect.left_top() - vec2(0.0, 2.0),
|
||||||
|
Align2::LEFT_BOTTOM,
|
||||||
|
color,
|
||||||
|
text,
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
if let Some(pointer_pos) = self.pointer_hover_pos() {
|
if let Some(pointer_pos) = self.pointer_hover_pos() {
|
||||||
if rect.contains(pointer_pos) {
|
if text_rect.contains(pointer_pos) {
|
||||||
|
let tooltip_pos = if below {
|
||||||
|
text_rect.left_bottom() + vec2(2.0, 4.0)
|
||||||
|
} else {
|
||||||
|
text_rect.left_top() + vec2(2.0, -4.0)
|
||||||
|
};
|
||||||
|
|
||||||
painter.error(
|
painter.error(
|
||||||
rect.left_bottom() + vec2(2.0, 4.0),
|
tooltip_pos,
|
||||||
"ID clashes happens when things like Windows or CollapsingHeaders share names,\n\
|
format!("Widget is {} this text.\n\n\
|
||||||
|
ID clashes happens when things like Windows or CollapsingHeaders share names,\n\
|
||||||
or when things like Plot and Grid:s aren't given unique id_source:s.\n\n\
|
or when things like Plot and Grid:s aren't given unique id_source:s.\n\n\
|
||||||
Sometimes the solution is to use ui.push_id.",
|
Sometimes the solution is to use ui.push_id.",
|
||||||
|
if below { "above" } else { "below" })
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -297,19 +326,10 @@ impl Context {
|
||||||
let id_str = id.short_debug_format();
|
let id_str = id.short_debug_format();
|
||||||
|
|
||||||
if prev_rect.min.distance(new_rect.min) < 4.0 {
|
if prev_rect.min.distance(new_rect.min) < 4.0 {
|
||||||
show_error(
|
show_error(new_rect, format!("Double use of {} ID {}", what, id_str));
|
||||||
new_rect.min,
|
|
||||||
format!("Double use of {} ID {}", what, id_str),
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
show_error(
|
show_error(prev_rect, format!("First use of {} ID {}", what, id_str));
|
||||||
prev_rect.min,
|
show_error(new_rect, format!("Second use of {} ID {}", what, id_str));
|
||||||
format!("First use of {} ID {}", what, id_str),
|
|
||||||
);
|
|
||||||
show_error(
|
|
||||||
new_rect.min,
|
|
||||||
format!("Second use of {} ID {}", what, id_str),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -243,7 +243,7 @@ impl Painter {
|
||||||
self.add(Shape::rect_filled(
|
self.add(Shape::rect_filled(
|
||||||
frame_rect,
|
frame_rect,
|
||||||
0.0,
|
0.0,
|
||||||
Color32::from_black_alpha(240),
|
Color32::from_black_alpha(150),
|
||||||
));
|
));
|
||||||
self.galley(rect.min, galley);
|
self.galley(rect.min, galley);
|
||||||
frame_rect
|
frame_rect
|
||||||
|
|
Loading…
Reference in a new issue