Merge PR #201 (Bump egui versions)

https://github.com/robbert-vdh/nih-plug/pull/201
This commit is contained in:
Robbert van der Helm
2025-02-23 22:27:58 +01:00
6 changed files with 1022 additions and 465 deletions

View File

@@ -12,6 +12,15 @@ state is to list breaking changes.
## [2024-02-23]
### Breaking changes
- `nih_plug_egui` now uses egui 0.31.
### Added
- `nih_plug_egui` has a new `ResizableWindow` widget that can be used to resize
the plugin's editor.
### Changed
- The CLAP bindings were updated to 1.2.2. The only noticeable difference is

1455
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -18,9 +18,9 @@ rayon = ["egui-baseview/rayon"]
[dependencies]
nih_plug = { path = "..", default-features = false }
raw-window-handle = "0.5"
baseview = { git = "https://github.com/RustAudio/baseview.git", rev = "45465c5f46abed6c6ce370fffde5edc8e4cd5aa3" }
baseview = { git = "https://github.com/RustAudio/baseview.git", rev = "9a0b42c09d712777b2edb4c5e0cb6baf21e988f0" }
crossbeam = "0.8"
egui-baseview = { git = "https://github.com/BillyDM/egui-baseview.git", rev = "87a6cbead6cf89ca27c2f0448e480e901cc2754d", default-features = false }
egui-baseview = { git = "https://github.com/BillyDM/egui-baseview.git", rev = "ec70c3fe6b2f070dcacbc22924431edbe24bd1c0" }
parking_lot = "0.12"
# To make the state persistable
serde = { version = "1.0", features = ["derive"] }

View File

@@ -101,6 +101,7 @@ where
..Default::default()
}),
},
Default::default(),
state,
move |egui_ctx, _queue, state| build(egui_ctx, &mut state.write()),
move |egui_ctx, queue, state| {

View File

@@ -1,10 +1,10 @@
//! Resizable window wrapper for Egui editor.
//!
//!
use egui_baseview::egui::emath::GuiRounding;
use egui_baseview::egui::{InnerResponse, UiBuilder};
use crate::egui::{pos2, CentralPanel, Context, Id, Rect, Response, Sense, Ui, Vec2};
use crate::EguiState;
use egui_baseview::egui::InnerResponse;
/// Adds a corner to the plugin window that can be dragged in order to resize it.
/// Resizing happens through plugin API, hence a custom implementation is needed.
@@ -36,7 +36,8 @@ impl ResizableWindow {
) -> InnerResponse<R> {
CentralPanel::default().show(context, move |ui| {
let ui_rect = ui.clip_rect();
let mut content_ui = ui.child_ui(ui_rect, *ui.layout());
let mut content_ui =
ui.new_child(UiBuilder::new().max_rect(ui_rect).layout(*ui.layout()));
let ret = add_contents(&mut content_ui);
@@ -69,7 +70,7 @@ pub fn paint_resize_corner(ui: &Ui, response: &Response) {
let painter = ui.painter();
let rect = response.rect.translate(-Vec2::splat(2.0)); // move away from the corner
let cp = painter.round_pos_to_pixels(rect.max);
let cp = rect.max.round_to_pixels(painter.pixels_per_point());
let mut w = 2.0;

View File

@@ -1,5 +1,6 @@
use std::sync::{Arc, LazyLock};
use egui_baseview::egui::emath::GuiRounding;
use egui_baseview::egui::{
self, emath, vec2, Key, Response, Sense, Stroke, TextEdit, TextStyle, Ui, Vec2, Widget,
WidgetText,
@@ -236,6 +237,7 @@ impl<'a, P: Param> ParamSlider<'a, P> {
response.rect,
0.0,
Stroke::new(1.0, ui.visuals().widgets.active.bg_fill),
egui::StrokeKind::Middle,
);
}
}
@@ -291,9 +293,10 @@ impl<'a, P: Param> ParamSlider<'a, P> {
let stroke = visuals.bg_stroke;
ui.painter().rect(
response.rect.expand(visuals.expansion),
visuals.rounding,
visuals.corner_radius,
fill,
stroke,
egui::StrokeKind::Middle,
);
}
@@ -323,7 +326,7 @@ impl<P: Param> Widget for ParamSlider<'_, P> {
let height = ui
.text_style_height(&TextStyle::Body)
.max(ui.spacing().interact_size.y * 0.8);
let slider_height = ui.painter().round_to_pixel(height * 0.8);
let slider_height = (height * 0.8).round_to_pixels(ui.painter().pixels_per_point());
let mut response = ui
.vertical(|ui| {
ui.allocate_space(vec2(slider_width, (height - slider_height) / 2.0));