feat: make vertical separator in GUI adjustable

This commit is contained in:
2026-01-27 23:51:14 +03:00
parent 74a436b171
commit cdf306cfe9
2 changed files with 29 additions and 4 deletions
+27 -4
View File
@@ -1,7 +1,7 @@
use crate::gui::{SUPPORTED_EXTENSIONS, SoundpadGui}; use crate::gui::{SUPPORTED_EXTENSIONS, SoundpadGui};
use egui::{ use egui::{
Align, AtomExt, Button, Color32, ComboBox, FontFamily, Label, Layout, RichText, ScrollArea, Align, AtomExt, Button, Color32, ComboBox, CursorIcon, FontFamily, Label, Layout, RichText,
Slider, TextEdit, Ui, Vec2, ScrollArea, Sense, Slider, TextEdit, Ui, Vec2,
}; };
use egui_material_icons::icons; use egui_material_icons::icons;
use pwsp::types::audio_player::TrackInfo; use pwsp::types::audio_player::TrackInfo;
@@ -260,11 +260,34 @@ impl SoundpadGui {
} }
fn draw_body(&mut self, ui: &mut Ui) { fn draw_body(&mut self, ui: &mut Ui) {
let dirs_size = Vec2::new(ui.available_width() / 4.0, ui.available_height() - 40.0); let left_panel_width = (ui.available_width() / 4.0 + self.config.vertical_separator_width)
.max(100.0)
.min(ui.available_width() - 100.0);
let dirs_size = Vec2::new(left_panel_width, ui.available_height() - 40.0);
ui.horizontal(|ui| { ui.horizontal(|ui| {
self.draw_dirs(ui, dirs_size); self.draw_dirs(ui, dirs_size);
ui.separator();
let (rect, response) = ui.allocate_at_least(
Vec2::new(ui.spacing().item_spacing.x, ui.available_height()),
Sense::click_and_drag(),
);
if ui.is_rect_visible(rect) {
let stroke = ui.visuals().widgets.noninteractive.bg_stroke;
ui.painter().vline(rect.center().x, rect.y_range(), stroke);
}
let vertical_separator_response =
response.on_hover_and_drag_cursor(CursorIcon::ResizeHorizontal);
if vertical_separator_response.dragged() {
self.config.vertical_separator_width += vertical_separator_response.drag_delta().x;
}
if vertical_separator_response.drag_stopped() {
self.config.save_to_file().ok();
}
let files_size = Vec2::new(ui.available_width(), ui.available_height() - 40.0); let files_size = Vec2::new(ui.available_width(), ui.available_height() - 40.0);
self.draw_files(ui, files_size); self.draw_files(ui, files_size);
+2
View File
@@ -34,6 +34,7 @@ impl DaemonConfig {
#[serde(default)] #[serde(default)]
pub struct GuiConfig { pub struct GuiConfig {
pub scale_factor: f32, pub scale_factor: f32,
pub vertical_separator_width: f32,
pub save_volume: bool, pub save_volume: bool,
pub save_input: bool, pub save_input: bool,
@@ -47,6 +48,7 @@ impl Default for GuiConfig {
fn default() -> Self { fn default() -> Self {
GuiConfig { GuiConfig {
scale_factor: 1.0, scale_factor: 1.0,
vertical_separator_width: 0.0,
save_volume: false, save_volume: false,
save_input: false, save_input: false,