From 8326784b5fa046c27148d4ef8727b6c00378de71 Mon Sep 17 00:00:00 2001 From: wjian23 Date: Mon, 16 Dec 2024 10:26:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(core):=20=F0=9F=90=9B=20Fix=20setting?= =?UTF-8?q?=20opacity=20to=20zero=20not=20applying=20to=20child=20elements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++++ core/src/builtin_widgets/opacity.rs | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0b5f1aa1..4ac962a02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ Please only add new entries below the [Unreleased](#unreleased---releasedate) he ## [@Unreleased] - @ReleaseDate +### Fixed + +- **core**: fix set opacity zero no work to it's children. (#pr @wjian23) + ## [0.4.0-alpha.19] - 2024-12-18 ### Features diff --git a/core/src/builtin_widgets/opacity.rs b/core/src/builtin_widgets/opacity.rs index ac5abb226..964e309a2 100644 --- a/core/src/builtin_widgets/opacity.rs +++ b/core/src/builtin_widgets/opacity.rs @@ -24,8 +24,8 @@ impl WrapRender for Opacity { } fn paint(&self, host: &dyn Render, ctx: &mut PaintingCtx) { + ctx.painter().apply_alpha(self.opacity); if self.opacity > 0. { - ctx.painter().apply_alpha(self.opacity); host.paint(ctx) } } From 5769d4455cc53ad43d9fd16d876f17f159271f5f Mon Sep 17 00:00:00 2001 From: wjian23 Date: Mon, 16 Dec 2024 11:27:06 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(core):=20=F0=9F=90=9B=20Fix=20TextStyle?= =?UTF-8?q?=20cause=20providers=20mismatched?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- core/src/builtin_widgets/class.rs | 13 ++++--------- core/src/builtin_widgets/text_style.rs | 9 +++------ 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ac962a02..6a36ad210 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,7 +27,8 @@ Please only add new entries below the [Unreleased](#unreleased---releasedate) he ### Fixed -- **core**: fix set opacity zero no work to it's children. (#pr @wjian23) +- **core**: fix set opacity zero no work to it's children. (#671 @wjian23) +- **core**: Fix TextStyle cause providers mismatched (#671 @wjian23) ## [0.4.0-alpha.19] - 2024-12-18 diff --git a/core/src/builtin_widgets/class.rs b/core/src/builtin_widgets/class.rs index 6414d623a..1e2abca1d 100644 --- a/core/src/builtin_widgets/class.rs +++ b/core/src/builtin_widgets/class.rs @@ -160,15 +160,10 @@ impl<'c> ComposeChild<'c> for OverrideClass { let cls_override = this.try_into_value().unwrap_or_else(|_| { panic!("Attempting to use `OverrideClass` as a reader or writer is not allowed.") }); - let f = move || { - BuildCtx::get_mut() - .current_providers - .push(Box::new(Queryable(cls_override))); - let id = child.build(); - BuildCtx::get_mut().current_providers.pop(); - Widget::from_id(id) - }; - f.into_widget() + + Provider::new(Box::new(Queryable(cls_override))) + .with_child(fn_widget! { child }) + .into_widget() } } diff --git a/core/src/builtin_widgets/text_style.rs b/core/src/builtin_widgets/text_style.rs index 4a395936b..6549df2f8 100644 --- a/core/src/builtin_widgets/text_style.rs +++ b/core/src/builtin_widgets/text_style.rs @@ -28,12 +28,9 @@ impl<'c> ComposeChild<'c> for TextStyleWidget { } }; - let ctx = BuildCtx::get_mut(); - ctx.current_providers.push(provider); - child.into_widget().on_build(|id| { - let provider = ctx.current_providers.pop().unwrap(); - id.attach_data(provider, ctx.tree_mut()); - }) + Provider::new(provider) + .with_child(fn_widget! { child }) + .into_widget() } }