Просмотр исходного кода

wallet: clear the text in the chatedit when clicking send button

darkfi 1 год назад
Родитель
Сommit
bdfb6ee82f
2 измененных файлов с 22 добавлено и 1 удалено
  1. 5 1
      bin/darkwallet/src/app/schema/chat.rs
  2. 17 0
      bin/darkwallet/src/ui/chatedit.rs

+ 5 - 1
bin/darkwallet/src/app/schema/chat.rs

@@ -846,9 +846,13 @@ pub async fn make(
 
 
     let (slot, recvr) = Slot::new("send_clicked");
     let (slot, recvr) = Slot::new("send_clicked");
     node.register("click", slot).unwrap();
     node.register("click", slot).unwrap();
+    let editz_text2 = editz_text.clone();
+    let channel2 = channel.to_string();
     let listen_click = app.ex.spawn(async move {
     let listen_click = app.ex.spawn(async move {
         while let Ok(_) = recvr.recv().await {
         while let Ok(_) = recvr.recv().await {
-            info!(target: "app::chat", "clicked send");
+            let text = editz_text2.get();
+            info!(target: "app::chat", "Send '{text}' to channel: #{channel2}");
+            editz_text2.set("");
         }
         }
     });
     });
     app.tasks.lock().unwrap().push(listen_click);
     app.tasks.lock().unwrap().push(listen_click);

+ 17 - 0
bin/darkwallet/src/ui/chatedit.rs

@@ -1782,6 +1782,22 @@ impl UIObject for ChatEdit {
         async fn redraw(self_: Arc<ChatEdit>) {
         async fn redraw(self_: Arc<ChatEdit>) {
             self_.redraw().await;
             self_.redraw().await;
         }
         }
+        async fn set_text(self_: Arc<ChatEdit>) {
+            {
+                let text = self_.text.get();
+
+                let mut text_wrap = self_.text_wrap.lock();
+                text_wrap.editable.end_compose();
+                text_wrap.editable.set_text(String::new(), text);
+                text_wrap.clear_cache();
+
+                let select = &mut text_wrap.select;
+                select.clear();
+            }
+
+            self_.redraw().await;
+        }
+
         on_modify.when_change(self.rect.prop(), redraw);
         on_modify.when_change(self.rect.prop(), redraw);
         on_modify.when_change(self.baseline.prop(), redraw);
         on_modify.when_change(self.baseline.prop(), redraw);
         on_modify.when_change(self.linespacing.prop(), redraw);
         on_modify.when_change(self.linespacing.prop(), redraw);
@@ -1789,6 +1805,7 @@ impl UIObject for ChatEdit {
         on_modify.when_change(self.select_descent.prop(), redraw);
         on_modify.when_change(self.select_descent.prop(), redraw);
         on_modify.when_change(self.handle_descent.prop(), redraw);
         on_modify.when_change(self.handle_descent.prop(), redraw);
         on_modify.when_change(self.padding.clone(), redraw);
         on_modify.when_change(self.padding.clone(), redraw);
+        on_modify.when_change(self.text.prop(), set_text);
         // The commented properties are modified on input events
         // The commented properties are modified on input events
         // So then redraw() will get repeatedly triggered when these properties
         // So then redraw() will get repeatedly triggered when these properties
         // are changed. We should find a solution. For now the hooks are disabled.
         // are changed. We should find a solution. For now the hooks are disabled.