Add ui.set_row_height

This commit is contained in:
Emil Ernerfeldt 2021-03-21 14:44:59 +01:00
parent e20e3baa98
commit 953d2bb39b
5 changed files with 25 additions and 3 deletions

View file

@ -8,7 +8,9 @@ pub fn easy_mark(ui: &mut Ui, easy_mark: &str) {
pub fn easy_mark_it<'em>(ui: &mut Ui, items: impl Iterator<Item = easy_mark::Item<'em>>) { pub fn easy_mark_it<'em>(ui: &mut Ui, items: impl Iterator<Item = easy_mark::Item<'em>>) {
ui.horizontal_wrapped(|ui| { ui.horizontal_wrapped(|ui| {
ui.spacing_mut().item_spacing = Vec2::ZERO; ui.spacing_mut().item_spacing = Vec2::new(0.0, 0.0);
ui.set_row_height(ui.fonts()[TextStyle::Body].row_height());
for item in items { for item in items {
item_ui(ui, item); item_ui(ui, item);
} }
@ -24,6 +26,7 @@ pub fn item_ui(ui: &mut Ui, item: easy_mark::Item<'_>) {
// ui.label("\n"); // too much spacing (paragraph spacing) // ui.label("\n"); // too much spacing (paragraph spacing)
ui.allocate_exact_size(vec2(0.0, row_height), Sense::hover()); // make sure we take up some height ui.allocate_exact_size(vec2(0.0, row_height), Sense::hover()); // make sure we take up some height
ui.end_row(); ui.end_row();
ui.set_row_height(row_height);
} }
easy_mark::Item::Text(style, text) => { easy_mark::Item::Text(style, text) => {

View file

@ -698,6 +698,13 @@ impl Layout {
} }
} }
} }
/// Set row height in horizontal wrapping layout.
pub(crate) fn set_row_height(&mut self, region: &mut Region, height: f32) {
if self.main_wrap && self.is_horizontal() {
region.cursor.max.y = region.cursor.min.y + height;
}
}
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View file

@ -177,6 +177,11 @@ impl Placer {
self.layout.end_row(&mut self.region, item_spacing) self.layout.end_row(&mut self.region, item_spacing)
} }
} }
/// Set row height in horizontal wrapping layout.
pub(crate) fn set_row_height(&mut self, height: f32) {
self.layout.set_row_height(&mut self.region, height);
}
} }
impl Placer { impl Placer {

View file

@ -1386,6 +1386,11 @@ impl Ui {
.end_row(self.spacing().item_spacing, &self.painter().clone()); .end_row(self.spacing().item_spacing, &self.painter().clone());
} }
/// Set row height in horizontal wrapping layout.
pub fn set_row_height(&mut self, height: f32) {
self.placer.set_row_height(height);
}
/// Temporarily split split an Ui into several columns. /// Temporarily split split an Ui into several columns.
/// ///
/// ``` /// ```

View file

@ -238,8 +238,10 @@ impl ColoredText {
pub fn ui(&self, ui: &mut egui::Ui) { pub fn ui(&self, ui: &mut egui::Ui) {
for line in &self.0 { for line in &self.0 {
ui.horizontal_wrapped_for_text(egui::TextStyle::Monospace, |ui| { ui.horizontal_wrapped(|ui| {
ui.spacing_mut().item_spacing.x = 0.0; ui.spacing_mut().item_spacing = egui::Vec2::ZERO;
ui.set_row_height(ui.fonts()[egui::TextStyle::Body].row_height());
for (style, range) in line { for (style, range) in line {
let fg = style.foreground; let fg = style.foreground;
let text_color = egui::Color32::from_rgb(fg.r, fg.g, fg.b); let text_color = egui::Color32::from_rgb(fg.r, fg.g, fg.b);