From 899675e08eba377c27c969b6c353cccdf485bedc Mon Sep 17 00:00:00 2001
From: Louis Capitanchik <contact@louiscap.co>
Date: Wed, 13 Sep 2023 23:14:46 +0100
Subject: [PATCH] Update widget registration params

---
 Cargo.toml       |  2 +-
 src/utilities.rs | 48 +++++++++---------------------------------------
 2 files changed, 10 insertions(+), 40 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index a4612d0..f2db930 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "advent_ui"
-version = "0.2.0"
+version = "0.2.1"
 edition = "2021"
 
 [features]
diff --git a/src/utilities.rs b/src/utilities.rs
index f38511f..4820f7a 100644
--- a/src/utilities.rs
+++ b/src/utilities.rs
@@ -3,15 +3,14 @@ use std::marker::PhantomData;
 use bevy::asset::Assets;
 use bevy::ecs::system::SystemParam;
 use bevy::prelude::{
-	Commands, Component, DespawnRecursiveExt, DetectChanges, Entity, In, ParamSet, Query, Res,
-	ResMut, Resource, With,
+	Commands, Component, DespawnRecursiveExt, DetectChanges, Entity, In, Query, Res, ResMut,
+	Resource, With,
 };
 use kayak_font::{Alignment, KayakFont, TextProperties};
 use kayak_ui::prelude::{
 	EventDispatcherContext, EventType, FontMapping, KEvent, KayakRootContext, KayakWidgetContext,
 	OnEvent, WidgetParam, WidgetState,
 };
-use kayak_ui::widgets::KayakApp;
 use micro_musicbox::prelude::MusicBox;
 
 use crate::theme::ThemeMapping;
@@ -140,7 +139,8 @@ macro_rules! register_widget_with_many_resources {
 		$ctx.add_widget_system(
 			$crate::kayak_ui::prelude::Widget::get_name(&$props::default()),
 			|
-				$crate::bevy::prelude::In((widget_context, entity, previous_entity)): $crate::bevy::prelude::In<($crate::kayak_ui::prelude::KayakWidgetContext, $crate::bevy::prelude::Entity, $crate::bevy::prelude::Entity)>,
+				$crate::bevy::prelude::In((entity, previous_entity)): $crate::bevy::prelude::In<($crate::bevy::prelude::Entity, $crate::bevy::prelude::Entity)>,
+				widget_context: $crate::kayak_ui::prelude::KayakWidgetContext,
 				$( $name: $crate::bevy::prelude::Res<$resource> ),+,
 				widget_param: $crate::kayak_ui::prelude::WidgetParam<$props, $state>,
 			| {
@@ -159,8 +159,8 @@ macro_rules! register_complex_widget {
 		$ctx.add_widget_system(
 			$crate::kayak_ui::prelude::Widget::get_name(&$props::default()),
 			|
-				$crate::bevy::prelude::In((widget_context, entity, previous_entity)): $crate::bevy::prelude::In<($crate::kayak_ui::prelude::KayakWidgetContext, $crate::bevy::prelude::Entity, $crate::bevy::prelude::Entity)>,
-				$( $r_name: $crate::bevy::prelude::Res<$resource> ),*,
+				$crate::bevy::prelude::In((entity, previous_entity)): $crate::bevy::prelude::In<($crate::bevy::prelude::Entity, $crate::bevy::prelude::Entity)>,
+				widget_context: $crate::kayak_ui::prelude::KayakWidgetContext,$( $r_name: $crate::bevy::prelude::Res<$resource> ),*,
 				$( $c_name: $crate::bevy::prelude::Query<$crate::bevy::prelude::Entity, $crate::bevy::prelude::Changed<$context>> ),*,
 				widget_param: $crate::kayak_ui::prelude::WidgetParam<$props, $state>,
 			| {
@@ -185,9 +185,10 @@ pub fn widget_update_with_resource<
 	State: PartialEq + Component + Clone,
 	External: Resource,
 >(
-	In((widget_context, entity, previous_entity)): In<(KayakWidgetContext, Entity, Entity)>,
-	resource: Res<External>,
+	In((entity, previous_entity)): In<(Entity, Entity)>,
+	widget_context: Res<KayakWidgetContext>,
 	widget_param: WidgetParam<Props, State>,
+	resource: Res<External>,
 ) -> bool {
 	widget_param.has_changed(&widget_context, entity, previous_entity) || resource.is_changed()
 }
@@ -264,37 +265,6 @@ pub mod context {
 	}
 }
 
-pub type OnEventParams = In<(EventDispatcherContext, WidgetState, KEvent, Entity)>;
-
-#[macro_export]
-macro_rules! on_button_click {
-	($param_type: ty, $func_body: expr) => {
-		$crate::kayak_ui::prelude::OnEvent::new(
-			move |$crate::bevy::prelude::In((
-				event_dispatcher_context,
-				_widget_state,
-				event,
-				_entity,
-			)): $crate::bevy::prelude::In<(
-				$crate::kayak_ui::prelude::EventDispatcherContext,
-				$crate::kayak_ui::prelude::WidgetState,
-				$crate::kayak_ui::prelude::KEvent,
-				$crate::bevy::prelude::Entity,
-			)>,
-			      params: $param_type| {
-				match event.event_type {
-					$crate::kayak_ui::prelude::EventType::Click(..) => {
-						$func_body(params);
-					}
-					_ => {}
-				}
-
-				(event_dispatcher_context, event)
-			},
-		)
-	};
-}
-
 pub trait HasDisabledState {
 	fn is_disabled(&self) -> bool;
 	fn set_disabled(&mut self, value: bool);
-- 
GitLab