@@ -87,7 +87,7 @@ namespace ekg::core {
8787 ekg_core_widget_call_impl (descriptor_t , widget_descriptor_at, todo); \
8888 }
8989
90- #define ekg_registry_widget (widget_descriptor_t, register_widget_pool, register_property_pool, is_container, register_settings ) \
90+ #define ekg_registry_widget_impl (widget_descriptor_t, register_widget_pool, register_property_pool, is_container, register_settings ) \
9191 widget_descriptor_t &widget { \
9292 register_widget_pool.push_back ( \
9393 ekg::io::any_static_cast<widget_descriptor_t >(&descriptor) \
@@ -115,13 +115,13 @@ namespace ekg::core {
115115 ekg::property_t &parent {ekg::query<ekg::property_t >(ekg::gui.bind .parent_at )}; \
116116 if (is_container) { \
117117 if (parent != ekg::property_t ::not_found && widget.dock != ekg::dock::none) { \
118+ property.parent_at = parent.at ; \
118119 parent.children .push_back (widget.at ); \
119- property.parent_at = ekg::gui.bind .parent_at ; \
120120 property.abs_parent_at = parent.abs_parent_at ; \
121- } else { \
122- ekg::gui.bind .parent_at = property.at ; \
121+ } else if (parent == ekg::property_t ::not_found) { \
123122 property.abs_parent_at = property.at ; \
124123 } \
124+ ekg::gui.bind .parent_at = property.at ; \
125125 } else if (parent != ekg::property_t ::not_found) { \
126126 property.parent_at = ekg::gui.bind .parent_at ; \
127127 property.abs_parent_at = parent.abs_parent_at ; \
@@ -236,7 +236,7 @@ namespace ekg {
236236 ) {
237237 switch (t::type) {
238238 case ekg::type::frame: {
239- ekg_registry_widget (
239+ ekg_registry_widget_impl (
240240 ekg::frame_t ,
241241 ekg::pools.frame ,
242242 ekg::pools.frame_property ,
@@ -250,7 +250,7 @@ namespace ekg {
250250 }
251251
252252 case ekg::type::button: {
253- ekg_registry_widget (
253+ ekg_registry_widget_impl (
254254 ekg::button_t ,
255255 ekg::pools.button ,
256256 ekg::pools.button_property ,
@@ -264,7 +264,7 @@ namespace ekg {
264264 }
265265
266266 case ekg::type::label: {
267- ekg_registry_widget (
267+ ekg_registry_widget_impl (
268268 ekg::label_t ,
269269 ekg::pools.label ,
270270 ekg::pools.label_property ,
@@ -278,7 +278,7 @@ namespace ekg {
278278 }
279279
280280 case ekg::type::scrollbar: {
281- ekg_registry_widget (
281+ ekg_registry_widget_impl (
282282 ekg::scrollbar_t ,
283283 ekg::pools.scrollbar ,
284284 ekg::pools.scrollbar_property ,
@@ -292,7 +292,7 @@ namespace ekg {
292292 }
293293
294294 case ekg::type::slider: {
295- ekg_registry_widget (
295+ ekg_registry_widget_impl (
296296 ekg::slider_t ,
297297 ekg::pools.slider ,
298298 ekg::pools.slider_property ,
@@ -306,7 +306,7 @@ namespace ekg {
306306 }
307307
308308 case ekg::type::popup: {
309- ekg_registry_widget (
309+ ekg_registry_widget_impl (
310310 ekg::popup_t ,
311311 ekg::pools.popup ,
312312 ekg::pools.popup_property ,
@@ -359,13 +359,13 @@ namespace ekg {
359359 ekg::gui.bind .stack_at = ekg::at_t ::not_found;
360360 break ;
361361 case ekg::type::property:
362- ekg::gui.bind .parent_at = ekg::at_t ::not_found ;
362+ ekg::gui.bind .parent_at = ekg::query<ekg:: property_t >(ekg::gui. bind . parent_at ). parent_at ;
363363 break ;
364364 case ekg::type::frame:
365- ekg::gui.bind .parent_at = ekg::at_t ::not_found ;
365+ ekg::gui.bind .parent_at = ekg::query<ekg:: property_t >(ekg::gui. bind . parent_at ). parent_at ;
366366 break ;
367367 case ekg::type::popup:
368- ekg::gui.bind .parent_at = ekg::at_t ::not_found ;
368+ ekg::gui.bind .parent_at = ekg::query<ekg:: property_t >(ekg::gui. bind . parent_at ). parent_at ;
369369 break ;
370370 }
371371 }
0 commit comments