egui icon indicating copy to clipboard operation
egui copied to clipboard

Fix: Positioning issues with Slider and other Button.

Open rustbasic opened this issue 1 year ago • 0 comments

Fix Issue: Positioning issues with Slider and other Button. Fix Issue: When ui.slider() is inside ui.horizontal(), the DragValue button position moves down slightly. Improvement: .text_style_height(&ui.style().drag_value_text_style) Improvement: button_padding applied

  • Closes #4854

If there are multiple SliderOrientation::Verticals, things can get a little tricky to handle.

Before : https://github.com/user-attachments/assets/3f8120aa-cf92-4383-a038-c3af4b768ce0

After : https://github.com/user-attachments/assets/f0f037ff-5fd7-42bf-b9b6-277951232edc

Test Example :

use eframe::egui::*;

fn main() -> eframe::Result {
    let options = eframe::NativeOptions {
        viewport: egui::ViewportBuilder::default().with_inner_size([320.0, 240.0]),
        ..Default::default()
    };
    eframe::run_native(
        "My egui App",
        options,
        Box::new(|_cc| Ok(Box::<MyApp>::default())),
    )
}

#[derive(Default)]
struct MyApp {
    temp_value: usize,
    _text: String,
}

impl eframe::App for MyApp {
    fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
        egui::CentralPanel::default().show(ctx, |ui| {
            ui.separator();

            ui.horizontal(|ui| {
                ui.add(Slider::new(&mut self.temp_value, 0..=255));

                ui.add(DragValue::new(&mut self.temp_value));

                if ui.button("⟲").clicked() {
                    self.temp_value = 255;
                }

                ui.add(Slider::new(&mut self.temp_value, 0..=255));

                ui.add(DragValue::new(&mut self.temp_value));

                if ui.button("⟲").clicked() {
                    self.temp_value = 255;
                }
            });

            ui.separator();

            ui.horizontal(|ui| {
                ui.set_max_width(100.0);

                ui.vertical_centered(|ui| {
                    ui.add(Slider::new(&mut self.temp_value, 0..=255).vertical());

                    ui.add(DragValue::new(&mut self.temp_value));

                    if ui.button("⟲").clicked() {
                        self.temp_value = 255;
                    }
                });
                ui.vertical_centered(|ui| {
                    ui.add(Slider::new(&mut self.temp_value, 0..=255).vertical());

                    ui.add(DragValue::new(&mut self.temp_value));

                    if ui.button("⟲").clicked() {
                        self.temp_value = 255;
                    }
                });
            });

            ui.separator();

            ctx.settings_ui(ui);
        });
    }
}

rustbasic avatar Aug 08 '24 11:08 rustbasic