[spacing] simplify and tweak spacing
This commit is contained in:
parent
2164e37e39
commit
b081be11d1
5 changed files with 25 additions and 35 deletions
|
@ -193,7 +193,6 @@ impl CollapsingHeader {
|
||||||
);
|
);
|
||||||
desired_size = desired_size.at_least(ui.style().spacing.interact_size);
|
desired_size = desired_size.at_least(ui.style().spacing.interact_size);
|
||||||
let rect = ui.allocate_space(desired_size);
|
let rect = ui.allocate_space(desired_size);
|
||||||
let rect = rect.expand2(ui.style().spacing.button_expand);
|
|
||||||
|
|
||||||
let response = ui.interact(rect, id, Sense::click());
|
let response = ui.interact(rect, id, Sense::click());
|
||||||
let text_pos = pos2(text_pos.x, response.rect.center().y - galley.size.y / 2.0);
|
let text_pos = pos2(text_pos.x, response.rect.center().y - galley.size.y / 2.0);
|
||||||
|
|
|
@ -71,7 +71,7 @@ pub fn bar<R>(ui: &mut Ui, add_contents: impl FnOnce(&mut Ui) -> R) -> (R, Rect)
|
||||||
ui.set_style(style);
|
ui.set_style(style);
|
||||||
|
|
||||||
// Take full width and fixed height:
|
// Take full width and fixed height:
|
||||||
let height = ui.style().spacing.menu_bar_height;
|
let height = ui.style().spacing.interact_size.y;
|
||||||
ui.set_desired_height(height);
|
ui.set_desired_height(height);
|
||||||
ui.expand_to_size(vec2(ui.available().width(), height));
|
ui.expand_to_size(vec2(ui.available().width(), height));
|
||||||
|
|
||||||
|
|
|
@ -42,11 +42,6 @@ pub struct Spacing {
|
||||||
/// Button size is text size plus this on each side
|
/// Button size is text size plus this on each side
|
||||||
pub button_padding: Vec2,
|
pub button_padding: Vec2,
|
||||||
|
|
||||||
/// Expand buttons by this much *after* allocating them.
|
|
||||||
/// This is then mostly a visual change (but also makes them easier to hit with the mouse).
|
|
||||||
/// This allows for compact layout where buttons actually eat into item_spacing a bit
|
|
||||||
pub button_expand: Vec2, // TODO: remove
|
|
||||||
|
|
||||||
/// Indent collapsing regions etc by this much.
|
/// Indent collapsing regions etc by this much.
|
||||||
pub indent: f32,
|
pub indent: f32,
|
||||||
|
|
||||||
|
@ -59,10 +54,12 @@ pub struct Spacing {
|
||||||
pub slider_width: f32, // TODO: rename big_interact_size ?
|
pub slider_width: f32, // TODO: rename big_interact_size ?
|
||||||
|
|
||||||
/// Checkboxes, radio button and collapsing headers have an icon at the start.
|
/// Checkboxes, radio button and collapsing headers have an icon at the start.
|
||||||
/// The text starts after this many pixels.
|
/// This is the width/height of this icon.
|
||||||
pub icon_width: f32,
|
pub icon_width: f32,
|
||||||
|
|
||||||
pub menu_bar_height: f32,
|
/// Checkboxes, radio button and collapsing headers have an icon at the start.
|
||||||
|
/// This is the spacing between the icon and the text
|
||||||
|
pub icon_spacing: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Spacing {
|
impl Spacing {
|
||||||
|
@ -198,15 +195,14 @@ impl Default for Style {
|
||||||
impl Default for Spacing {
|
impl Default for Spacing {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
item_spacing: vec2(8.0, 5.0),
|
item_spacing: vec2(8.0, 3.0),
|
||||||
window_padding: vec2(6.0, 6.0),
|
window_padding: vec2(6.0, 6.0),
|
||||||
button_padding: vec2(4.0, 1.0),
|
button_padding: vec2(3.0, 1.0),
|
||||||
button_expand: vec2(0.0, 0.0), // TODO: remove
|
indent: 25.0,
|
||||||
indent: 21.0,
|
interact_size: vec2(40.0, 20.0),
|
||||||
interact_size: vec2(40.0, 20.0), // TODO: larger interact_size.y
|
|
||||||
slider_width: 140.0,
|
slider_width: 140.0,
|
||||||
icon_width: 20.0, // TODO: replace with interact_size.y ?
|
icon_width: 16.0,
|
||||||
menu_bar_height: 20.0, // TODO: replace with interact_size.y ?
|
icon_spacing: 1.0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -318,24 +314,22 @@ impl Spacing {
|
||||||
item_spacing,
|
item_spacing,
|
||||||
window_padding,
|
window_padding,
|
||||||
button_padding,
|
button_padding,
|
||||||
button_expand,
|
|
||||||
indent,
|
indent,
|
||||||
interact_size,
|
interact_size,
|
||||||
slider_width,
|
slider_width,
|
||||||
icon_width,
|
icon_width,
|
||||||
menu_bar_height,
|
icon_spacing,
|
||||||
} = self;
|
} = self;
|
||||||
|
|
||||||
ui_slider_vec2(ui, item_spacing, 0.0..=10.0, "item_spacing");
|
ui_slider_vec2(ui, item_spacing, 0.0..=10.0, "item_spacing");
|
||||||
ui_slider_vec2(ui, window_padding, 0.0..=10.0, "window_padding");
|
ui_slider_vec2(ui, window_padding, 0.0..=10.0, "window_padding");
|
||||||
ui_slider_vec2(ui, button_padding, 0.0..=10.0, "button_padding");
|
ui_slider_vec2(ui, button_padding, 0.0..=10.0, "button_padding");
|
||||||
ui_slider_vec2(ui, button_expand, 0.0..=10.0, "button_expand");
|
|
||||||
ui_slider_vec2(ui, interact_size, 0.0..=60.0, "interact_size")
|
ui_slider_vec2(ui, interact_size, 0.0..=60.0, "interact_size")
|
||||||
.tooltip_text("Minimum size of an interactive widget");
|
.tooltip_text("Minimum size of an interactive widget");
|
||||||
ui.add(Slider::f32(indent, 0.0..=100.0).text("indent"));
|
ui.add(Slider::f32(indent, 0.0..=100.0).text("indent"));
|
||||||
ui.add(Slider::f32(slider_width, 0.0..=1000.0).text("slider_width"));
|
ui.add(Slider::f32(slider_width, 0.0..=1000.0).text("slider_width"));
|
||||||
ui.add(Slider::f32(icon_width, 0.0..=60.0).text("icon_width"));
|
ui.add(Slider::f32(icon_width, 0.0..=60.0).text("icon_width"));
|
||||||
ui.add(Slider::f32(menu_bar_height, 0.0..=60.0).text("menu_bar_height"));
|
ui.add(Slider::f32(icon_spacing, 0.0..=10.0).text("icon_spacing"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,6 @@ fn show_srgba(ui: &mut Ui, srgba: Srgba, desired_size: Vec2) -> Response {
|
||||||
fn color_button(ui: &mut Ui, color: Srgba) -> Response {
|
fn color_button(ui: &mut Ui, color: Srgba) -> Response {
|
||||||
let desired_size = ui.style().spacing.interact_size;
|
let desired_size = ui.style().spacing.interact_size;
|
||||||
let rect = ui.allocate_space(desired_size);
|
let rect = ui.allocate_space(desired_size);
|
||||||
let rect = rect.expand2(ui.style().spacing.button_expand);
|
|
||||||
let id = ui.make_position_id();
|
let id = ui.make_position_id();
|
||||||
let response = ui.interact(rect, id, Sense::click());
|
let response = ui.interact(rect, id, Sense::click());
|
||||||
let visuals = ui.style().interact(&response);
|
let visuals = ui.style().interact(&response);
|
||||||
|
|
|
@ -293,18 +293,18 @@ impl Widget for Button {
|
||||||
let mut desired_size = galley.size + 2.0 * ui.style().spacing.button_padding;
|
let mut desired_size = galley.size + 2.0 * ui.style().spacing.button_padding;
|
||||||
desired_size = desired_size.at_least(ui.style().spacing.interact_size);
|
desired_size = desired_size.at_least(ui.style().spacing.interact_size);
|
||||||
let rect = ui.allocate_space(desired_size);
|
let rect = ui.allocate_space(desired_size);
|
||||||
let rect = rect.expand2(ui.style().spacing.button_expand);
|
|
||||||
|
|
||||||
let response = ui.interact(rect, id, sense);
|
let response = ui.interact(rect, id, sense);
|
||||||
|
let style = ui.style().interact(&response);
|
||||||
let text_cursor = response.rect.center() - 0.5 * galley.size;
|
let text_cursor = response.rect.center() - 0.5 * galley.size;
|
||||||
let fill = fill.unwrap_or(ui.style().interact(&response).bg_fill);
|
let fill = fill.unwrap_or(style.bg_fill);
|
||||||
ui.painter().add(PaintCmd::Rect {
|
ui.painter().add(PaintCmd::Rect {
|
||||||
rect: response.rect,
|
rect: response.rect,
|
||||||
corner_radius: ui.style().interact(&response).corner_radius,
|
corner_radius: style.corner_radius,
|
||||||
fill,
|
fill,
|
||||||
stroke: ui.style().interact(&response).bg_stroke,
|
stroke: style.bg_stroke,
|
||||||
});
|
});
|
||||||
let text_color = text_color.unwrap_or_else(|| ui.style().interact(&response).text_color());
|
let text_color = text_color.unwrap_or_else(|| style.text_color());
|
||||||
ui.painter()
|
ui.painter()
|
||||||
.galley(text_cursor, galley, text_style, text_color);
|
.galley(text_cursor, galley, text_style, text_color);
|
||||||
response
|
response
|
||||||
|
@ -352,13 +352,10 @@ impl<'a> Widget for Checkbox<'a> {
|
||||||
|
|
||||||
let spacing = &ui.style().spacing;
|
let spacing = &ui.style().spacing;
|
||||||
let icon_width = spacing.icon_width;
|
let icon_width = spacing.icon_width;
|
||||||
let horizontal_spacing = 0.0; //spacing.item_spacing.x
|
let icon_spacing = ui.style().spacing.icon_spacing;
|
||||||
let button_padding = spacing.button_padding;
|
let button_padding = spacing.button_padding;
|
||||||
let mut desired_size = button_padding
|
let mut desired_size =
|
||||||
+ vec2(icon_width, 0.0)
|
button_padding + vec2(icon_width + icon_spacing, 0.0) + galley.size + button_padding;
|
||||||
+ vec2(horizontal_spacing, 0.0)
|
|
||||||
+ galley.size
|
|
||||||
+ button_padding;
|
|
||||||
desired_size = desired_size.at_least(spacing.interact_size);
|
desired_size = desired_size.at_least(spacing.interact_size);
|
||||||
let rect = ui.allocate_space(desired_size);
|
let rect = ui.allocate_space(desired_size);
|
||||||
|
|
||||||
|
@ -369,7 +366,7 @@ impl<'a> Widget for Checkbox<'a> {
|
||||||
|
|
||||||
let visuals = ui.style().interact(&response);
|
let visuals = ui.style().interact(&response);
|
||||||
let text_cursor = pos2(
|
let text_cursor = pos2(
|
||||||
response.rect.min.x + button_padding.x + icon_width,
|
response.rect.min.x + button_padding.x + icon_width + icon_spacing,
|
||||||
response.rect.center().y - 0.5 * galley.size.y,
|
response.rect.center().y - 0.5 * galley.size.y,
|
||||||
);
|
);
|
||||||
let (small_icon_rect, big_icon_rect) = ui.style().spacing.icon_rectangles(response.rect);
|
let (small_icon_rect, big_icon_rect) = ui.style().spacing.icon_rectangles(response.rect);
|
||||||
|
@ -438,16 +435,17 @@ impl Widget for RadioButton {
|
||||||
let galley = font.layout_multiline(text, ui.available().width());
|
let galley = font.layout_multiline(text, ui.available().width());
|
||||||
|
|
||||||
let icon_width = ui.style().spacing.icon_width;
|
let icon_width = ui.style().spacing.icon_width;
|
||||||
|
let icon_spacing = ui.style().spacing.icon_spacing;
|
||||||
let button_padding = ui.style().spacing.button_padding;
|
let button_padding = ui.style().spacing.button_padding;
|
||||||
let mut desired_size =
|
let mut desired_size =
|
||||||
button_padding + vec2(icon_width, 0.0) + galley.size + button_padding;
|
button_padding + vec2(icon_width + icon_spacing, 0.0) + galley.size + button_padding;
|
||||||
desired_size = desired_size.at_least(ui.style().spacing.interact_size);
|
desired_size = desired_size.at_least(ui.style().spacing.interact_size);
|
||||||
let rect = ui.allocate_space(desired_size);
|
let rect = ui.allocate_space(desired_size);
|
||||||
|
|
||||||
let response = ui.interact(rect, id, Sense::click());
|
let response = ui.interact(rect, id, Sense::click());
|
||||||
|
|
||||||
let text_cursor = pos2(
|
let text_cursor = pos2(
|
||||||
response.rect.min.x + button_padding.x + icon_width,
|
response.rect.min.x + button_padding.x + icon_width + icon_spacing,
|
||||||
response.rect.center().y - 0.5 * galley.size.y,
|
response.rect.center().y - 0.5 * galley.size.y,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue