wgui: prevent data copy, parser data
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use std::{cell::RefCell, rc::Rc, sync::Arc};
|
||||
|
||||
use button::setup_custom_button;
|
||||
use glam::{vec2, Affine2, Vec2};
|
||||
use glam::{Affine2, Vec2, vec2};
|
||||
use label::setup_custom_label;
|
||||
use vulkano::{command_buffer::CommandBufferUsage, image::view::ImageView};
|
||||
use wgui::{
|
||||
@@ -20,7 +20,7 @@ use wgui::{
|
||||
use crate::{
|
||||
backend::{
|
||||
input::{Haptics, PointerHit, PointerMode},
|
||||
overlay::{ui_transform, FrameMeta, OverlayBackend, ShouldRender},
|
||||
overlay::{FrameMeta, OverlayBackend, ShouldRender, ui_transform},
|
||||
},
|
||||
graphics::{CommandBuffers, ExtentExt},
|
||||
state::AppState,
|
||||
@@ -93,7 +93,7 @@ impl<S> GuiPanel<S> {
|
||||
)?;
|
||||
|
||||
if let Some(on_element_id) = on_custom_id {
|
||||
let ids = parser_state.ids.clone();
|
||||
let ids = parser_state.data.ids.clone(); // FIXME: copying all ids?
|
||||
|
||||
for (id, widget) in ids {
|
||||
on_element_id(
|
||||
|
||||
@@ -18,7 +18,7 @@ where
|
||||
let state = BarState {};
|
||||
let mut panel = GuiPanel::new_from_template(app, "gui/bar.xml", state, None)?;
|
||||
|
||||
for (id, _widget_id) in &panel.parser_state.ids {
|
||||
for (id, _widget_id) in &panel.parser_state.data.ids {
|
||||
match id.as_ref() {
|
||||
"lock" => {}
|
||||
"anchor" => {}
|
||||
|
||||
@@ -172,13 +172,13 @@ where
|
||||
params,
|
||||
)?;
|
||||
|
||||
if let Some(widget_id) = gui_state_key.ids.get(&*my_id) {
|
||||
if let Some(widget_id) = gui_state_key.get_widget_id(&*my_id).ok() {
|
||||
let key_state = {
|
||||
let rect = panel
|
||||
.layout
|
||||
.state
|
||||
.widgets
|
||||
.get_as::<WidgetRectangle>(*widget_id)
|
||||
.get_as::<WidgetRectangle>(widget_id)
|
||||
.unwrap(); // want panic
|
||||
|
||||
Rc::new(KeyState {
|
||||
@@ -192,7 +192,7 @@ where
|
||||
|
||||
panel.listeners.register(
|
||||
&mut panel.listener_handles,
|
||||
*widget_id,
|
||||
widget_id,
|
||||
EventListenerKind::MouseEnter,
|
||||
Box::new({
|
||||
let k = key_state.clone();
|
||||
@@ -205,7 +205,7 @@ where
|
||||
);
|
||||
panel.listeners.register(
|
||||
&mut panel.listener_handles,
|
||||
*widget_id,
|
||||
widget_id,
|
||||
EventListenerKind::MouseLeave,
|
||||
Box::new({
|
||||
let k = key_state.clone();
|
||||
@@ -218,7 +218,7 @@ where
|
||||
);
|
||||
panel.listeners.register(
|
||||
&mut panel.listener_handles,
|
||||
*widget_id,
|
||||
widget_id,
|
||||
EventListenerKind::MousePress,
|
||||
Box::new({
|
||||
let k = key_state.clone();
|
||||
@@ -235,7 +235,7 @@ where
|
||||
);
|
||||
panel.listeners.register(
|
||||
&mut panel.listener_handles,
|
||||
*widget_id,
|
||||
widget_id,
|
||||
EventListenerKind::MouseRelease,
|
||||
Box::new({
|
||||
let k = key_state.clone();
|
||||
@@ -251,7 +251,7 @@ where
|
||||
if let Some(modifier) = my_modifier {
|
||||
panel.listeners.register(
|
||||
&mut panel.listener_handles,
|
||||
*widget_id,
|
||||
widget_id,
|
||||
EventListenerKind::InternalStateChange,
|
||||
Box::new({
|
||||
let k = key_state.clone();
|
||||
|
||||
Reference in New Issue
Block a user