mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
wallet: fix issue with chatview swallowing input events
This commit is contained in:
@@ -168,8 +168,8 @@ impl App {
|
||||
Window::new(me, self.render_api.clone(), self.event_pub.clone(), self.ex.clone())
|
||||
})
|
||||
.await;
|
||||
self.sg_root.link(window.clone());
|
||||
schema::make_test(&self, window).await;
|
||||
self.sg_root.clone().link(window.clone());
|
||||
schema::make(&self, window).await;
|
||||
|
||||
debug!(target: "app", "Schema loaded");
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@ pub(super) async fn make_test(app: &App, window: SceneNodePtr) {
|
||||
);
|
||||
let node =
|
||||
node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Create button bg
|
||||
let node = create_vector_art("btnbg");
|
||||
@@ -157,7 +157,7 @@ pub(super) async fn make_test(app: &App, window: SceneNodePtr) {
|
||||
let shape = VectorShape { verts, indices };
|
||||
let node =
|
||||
node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Create the button
|
||||
let node = create_button("btn");
|
||||
@@ -174,7 +174,7 @@ pub(super) async fn make_test(app: &App, window: SceneNodePtr) {
|
||||
//node.register("click", slot_click).unwrap();
|
||||
|
||||
let node = node.setup(|me| Button::new(me, app.ex.clone())).await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Create another mesh
|
||||
let node = create_vector_art("box");
|
||||
@@ -205,7 +205,7 @@ pub(super) async fn make_test(app: &App, window: SceneNodePtr) {
|
||||
let shape = VectorShape { verts, indices };
|
||||
let node =
|
||||
node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Debugging tool
|
||||
let node = create_vector_art("debugtool");
|
||||
@@ -235,7 +235,7 @@ pub(super) async fn make_test(app: &App, window: SceneNodePtr) {
|
||||
);
|
||||
let node =
|
||||
node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Create KING GNU!
|
||||
let node = create_image("king");
|
||||
@@ -247,7 +247,7 @@ pub(super) async fn make_test(app: &App, window: SceneNodePtr) {
|
||||
node.set_property_str(Role::App, "path", KING_PATH).unwrap();
|
||||
node.set_property_u32(Role::App, "z_index", 1).unwrap();
|
||||
let node = node.setup(|me| Image::new(me, app.render_api.clone(), app.ex.clone())).await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Create some text
|
||||
let node = create_text("label");
|
||||
@@ -278,11 +278,12 @@ pub(super) async fn make_test(app: &App, window: SceneNodePtr) {
|
||||
)
|
||||
})
|
||||
.await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Text edit
|
||||
let node = create_editbox("editz");
|
||||
node.set_property_bool(Role::App, "is_active", true).unwrap();
|
||||
node.set_property_bool(Role::App, "is_focused", true).unwrap();
|
||||
let prop = node.get_property("rect").unwrap();
|
||||
prop.set_f32(Role::App, 0, 150.).unwrap();
|
||||
prop.set_f32(Role::App, 1, 150.).unwrap();
|
||||
@@ -368,7 +369,7 @@ pub(super) async fn make_test(app: &App, window: SceneNodePtr) {
|
||||
)
|
||||
})
|
||||
.await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// ChatView
|
||||
let node = create_chatview("chatty");
|
||||
@@ -452,7 +453,7 @@ pub(super) async fn make_test(app: &App, window: SceneNodePtr) {
|
||||
)
|
||||
})
|
||||
.await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
}
|
||||
|
||||
pub(super) async fn make(app: &App, window: SceneNodePtr) {
|
||||
@@ -498,7 +499,7 @@ pub(super) async fn make(app: &App, window: SceneNodePtr) {
|
||||
);
|
||||
let node =
|
||||
node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Create the toolbar bg
|
||||
let node = create_vector_art("toolbar_bg");
|
||||
@@ -520,7 +521,7 @@ pub(super) async fn make(app: &App, window: SceneNodePtr) {
|
||||
|
||||
let node =
|
||||
node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Create some text
|
||||
let node = create_text("channel_label");
|
||||
@@ -552,7 +553,7 @@ pub(super) async fn make(app: &App, window: SceneNodePtr) {
|
||||
)
|
||||
})
|
||||
.await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// ChatView
|
||||
let node = create_chatview("chatty");
|
||||
@@ -642,7 +643,7 @@ pub(super) async fn make(app: &App, window: SceneNodePtr) {
|
||||
)
|
||||
})
|
||||
.await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Create the editbox bg
|
||||
let node = create_vector_art("editbox_bg");
|
||||
@@ -678,7 +679,7 @@ pub(super) async fn make(app: &App, window: SceneNodePtr) {
|
||||
);
|
||||
let node =
|
||||
node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Create some text
|
||||
let node = create_text("send_label");
|
||||
@@ -711,7 +712,7 @@ pub(super) async fn make(app: &App, window: SceneNodePtr) {
|
||||
)
|
||||
})
|
||||
.await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Text edit
|
||||
let node = create_editbox("editz");
|
||||
@@ -795,7 +796,7 @@ pub(super) async fn make(app: &App, window: SceneNodePtr) {
|
||||
)
|
||||
})
|
||||
.await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
|
||||
// Create the send button
|
||||
let node = create_button("send_btn");
|
||||
@@ -809,5 +810,5 @@ pub(super) async fn make(app: &App, window: SceneNodePtr) {
|
||||
prop.set_f32(Role::App, 3, EDITCHAT_HEIGHT).unwrap();
|
||||
|
||||
let node = node.setup(|me| Button::new(me, app.ex.clone())).await;
|
||||
layer_node.link(node);
|
||||
layer_node.clone().link(node);
|
||||
}
|
||||
|
||||
@@ -142,7 +142,6 @@ fn main() {
|
||||
let cv_started = app.is_started.clone();
|
||||
let sg_root = app.sg_root.clone();
|
||||
let ex2 = ex.clone();
|
||||
/*
|
||||
let darkirc_task = ex.spawn(async move {
|
||||
cv_started.wait().await;
|
||||
let darkirc_evgr = LocalDarkIRC::new(sg_root.clone(), ex2.clone()).await.unwrap();
|
||||
@@ -152,7 +151,6 @@ fn main() {
|
||||
}
|
||||
});
|
||||
async_runtime.push_task(darkirc_task);
|
||||
*/
|
||||
|
||||
/*
|
||||
// Nice to see which events exist
|
||||
|
||||
@@ -160,10 +160,10 @@ impl SceneNode {
|
||||
self_
|
||||
}
|
||||
|
||||
pub fn link(&self, child: SceneNodePtr) {
|
||||
pub fn link(self: Arc<Self>, child: SceneNodePtr) {
|
||||
let mut childs_parent = child.parent.write().unwrap();
|
||||
assert!(childs_parent.is_none());
|
||||
*childs_parent = Some(Arc::downgrade(&child));
|
||||
*childs_parent = Some(Arc::downgrade(&self));
|
||||
drop(childs_parent);
|
||||
|
||||
let mut children = self.children.write().unwrap();
|
||||
@@ -349,11 +349,32 @@ impl SceneNode {
|
||||
let method_sub = method.pubsub.clone().subscribe();
|
||||
Ok(method_sub)
|
||||
}
|
||||
|
||||
pub fn get_full_path(&self) -> Option<String> {
|
||||
if self.typ == SceneNodeType::Root {
|
||||
return Some("/".to_string())
|
||||
}
|
||||
|
||||
let mut self_name = self.name.clone();
|
||||
|
||||
let parent = self.parent.read().unwrap().clone()?;
|
||||
let Some(parent) = parent.upgrade() else { return None };
|
||||
|
||||
let parent_path = parent.get_full_path()?;
|
||||
if parent_path == "/" {
|
||||
return Some(format!("/{self_name}"))
|
||||
}
|
||||
Some(format!("{parent_path}/{self_name}"))
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Debug for SceneNode {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "'{}':{}", self.name, self.id)
|
||||
if let Some(path) = self.get_full_path() {
|
||||
write!(f, "{path}")
|
||||
} else {
|
||||
write!(f, "{}:{}", self.name, self.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -741,15 +741,17 @@ impl UIObject for ChatView {
|
||||
KeyCode::PageUp => {
|
||||
let scroll = self.scroll.get() + 200.;
|
||||
self.scrollview(scroll).await;
|
||||
return true
|
||||
}
|
||||
KeyCode::PageDown => {
|
||||
let scroll = self.scroll.get() - 200.;
|
||||
self.scrollview(scroll).await;
|
||||
return true
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
true
|
||||
false
|
||||
}
|
||||
|
||||
async fn handle_mouse_btn_down(&self, btn: MouseButton, mouse_pos: Point) -> bool {
|
||||
|
||||
@@ -110,7 +110,6 @@ impl PressedKeysSmoothRepeat {
|
||||
/*
|
||||
fn key_up(&mut self, key: &PressedKey) {
|
||||
//debug!(target: "PressedKeysSmoothRepeat", "key_up({:?})", key);
|
||||
println!("{:?}", self.pressed_keys.keys());
|
||||
assert!(self.pressed_keys.contains_key(key));
|
||||
self.pressed_keys.remove(key).expect("key was pressed");
|
||||
}
|
||||
|
||||
@@ -184,6 +184,7 @@ impl UIObject for Layer {
|
||||
for child in self.get_children() {
|
||||
let obj = get_ui_object3(&child);
|
||||
if obj.handle_key_down(key, mods, repeat).await {
|
||||
//debug!(target: "layer", "handle_key_down({key:?}, {mods:?}, {repeat}) swallowed by {child:?}");
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user