[button] Use singleline in horizontal layouts, else multiline

This commit is contained in:
Emil Ernerfeldt 2020-12-12 19:32:58 +01:00
parent b0d0d5dd55
commit 84f06ed09a

View file

@ -363,7 +363,14 @@ impl Widget for Button {
} }
let font = &ui.fonts()[text_style]; let font = &ui.fonts()[text_style];
let galley = font.layout_multiline(text, ui.available_width());
let single_line = ui.layout().is_horizontal();
let galley = if single_line {
font.layout_single_line(text)
} else {
font.layout_multiline(text, ui.available_width())
};
let mut desired_size = galley.size + 2.0 * button_padding; let mut desired_size = galley.size + 2.0 * button_padding;
if !small { if !small {
desired_size.y = desired_size.y.at_least(ui.style().spacing.interact_size.y); desired_size.y = desired_size.y.at_least(ui.style().spacing.interact_size.y);
@ -436,8 +443,12 @@ impl<'a> Widget for Checkbox<'a> {
let button_padding = spacing.button_padding; let button_padding = spacing.button_padding;
let total_extra = button_padding + vec2(icon_width + icon_spacing, 0.0) + button_padding; let total_extra = button_padding + vec2(icon_width + icon_spacing, 0.0) + button_padding;
let galley = font.layout_single_line(text); let single_line = ui.layout().is_horizontal();
// let galley = font.layout_multiline(text, ui.available_width() - total_extra.x); let galley = if single_line {
font.layout_single_line(text)
} else {
font.layout_multiline(text, ui.available_width() - total_extra.x)
};
let mut desired_size = total_extra + galley.size; let mut desired_size = total_extra + galley.size;
desired_size = desired_size.at_least(spacing.interact_size); desired_size = desired_size.at_least(spacing.interact_size);
@ -526,7 +537,12 @@ impl Widget for RadioButton {
let button_padding = ui.style().spacing.button_padding; let button_padding = ui.style().spacing.button_padding;
let total_extra = button_padding + vec2(icon_width + icon_spacing, 0.0) + button_padding; let total_extra = button_padding + vec2(icon_width + icon_spacing, 0.0) + button_padding;
let galley = font.layout_multiline(text, ui.available_width() - total_extra.x); let single_line = ui.layout().is_horizontal();
let galley = if single_line {
font.layout_single_line(text)
} else {
font.layout_multiline(text, ui.available_width() - total_extra.x)
};
let mut desired_size = total_extra + galley.size; let mut desired_size = total_extra + galley.size;
desired_size = desired_size.at_least(ui.style().spacing.interact_size); desired_size = desired_size.at_least(ui.style().spacing.interact_size);