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

wallet: when sending a message, make scroll go to the bottom. And focus editbox

darkfi 1 год назад
Родитель
Сommit
c9a24d0d07
3 измененных файлов с 9 добавлено и 2 удалено
  1. 1 1
      bin/darkwallet/src/app/schema.rs
  2. 6 1
      bin/darkwallet/src/darkirc2.rs
  3. 2 0
      bin/darkwallet/src/ui/editbox.rs

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

@@ -726,7 +726,7 @@ pub(super) async fn make(app: &App, window: SceneNodePtr) {
     prop.set_f32(Role::App, 0, EDITCHAT_LHS_PAD).unwrap();
     prop.set_f32(Role::App, 0, EDITCHAT_LHS_PAD).unwrap();
     let code = cc.compile("h - EDITCHAT_HEIGHT").unwrap();
     let code = cc.compile("h - EDITCHAT_HEIGHT").unwrap();
     prop.set_expr(Role::App, 1, code).unwrap();
     prop.set_expr(Role::App, 1, code).unwrap();
-    let code = cc.compile("w - (SENDLABEL_WIDTH + 20)").unwrap();
+    let code = cc.compile("w - (SENDLABEL_WIDTH + SENDLABEL_LHS_PAD)").unwrap();
     prop.set_expr(Role::App, 2, code).unwrap();
     prop.set_expr(Role::App, 2, code).unwrap();
     prop.set_f32(Role::App, 3, EDITCHAT_HEIGHT).unwrap();
     prop.set_f32(Role::App, 3, EDITCHAT_HEIGHT).unwrap();
 
 

+ 6 - 1
bin/darkwallet/src/darkirc2.rs

@@ -50,7 +50,7 @@ use std::{
 use url::Url;
 use url::Url;
 
 
 use crate::{
 use crate::{
-    prop::{PropertyBool, PropertyStr, Role},
+    prop::{PropertyBool, PropertyStr, PropertyFloat32, Role},
     scene::{SceneNodePtr, Slot},
     scene::{SceneNodePtr, Slot},
 };
 };
 
 
@@ -89,6 +89,7 @@ pub struct LocalDarkIRC {
     sendbtn_node: SceneNodePtr,
     sendbtn_node: SceneNodePtr,
     editbox_node: SceneNodePtr,
     editbox_node: SceneNodePtr,
     editbox_text: PropertyStr,
     editbox_text: PropertyStr,
+    chatview_scroll: PropertyFloat32,
     upgrade_popup_is_visible: PropertyBool,
     upgrade_popup_is_visible: PropertyBool,
 }
 }
 
 
@@ -100,6 +101,8 @@ impl LocalDarkIRC {
         let editbox_node = sg_root.clone().lookup_node("/window/view/editz").unwrap();
         let editbox_node = sg_root.clone().lookup_node("/window/view/editz").unwrap();
         let editbox_text = PropertyStr::wrap(&editbox_node, Role::App, "text", 0).unwrap();
         let editbox_text = PropertyStr::wrap(&editbox_node, Role::App, "text", 0).unwrap();
 
 
+        let chatview_scroll = PropertyFloat32::wrap(&chatview_node, Role::Internal, "scroll", 0).unwrap();
+
         let upgrade_popup_node = sg_root.clone().lookup_node("/window/view/upgrade_popup").unwrap();
         let upgrade_popup_node = sg_root.clone().lookup_node("/window/view/upgrade_popup").unwrap();
         let upgrade_popup_is_visible =
         let upgrade_popup_is_visible =
             PropertyBool::wrap(&upgrade_popup_node, Role::App, "is_visible", 0).unwrap();
             PropertyBool::wrap(&upgrade_popup_node, Role::App, "is_visible", 0).unwrap();
@@ -125,6 +128,7 @@ impl LocalDarkIRC {
             sendbtn_node,
             sendbtn_node,
             editbox_node,
             editbox_node,
             editbox_text,
             editbox_text,
+            chatview_scroll,
             upgrade_popup_is_visible,
             upgrade_popup_is_visible,
         }))
         }))
     }
     }
@@ -332,6 +336,7 @@ impl LocalDarkIRC {
         let text = self.editbox_text.get();
         let text = self.editbox_text.get();
         // Clear editbox
         // Clear editbox
         self.editbox_text.set("");
         self.editbox_text.set("");
+        self.chatview_scroll.set(0.);
 
 
         // Send text to channel
         // Send text to channel
         debug!(target: "darkirc", "Sending privmsg: {text}");
         debug!(target: "darkirc", "Sending privmsg: {text}");

+ 2 - 0
bin/darkwallet/src/ui/editbox.rs

@@ -533,6 +533,7 @@ impl EditBox {
         // 1. make it active
         // 1. make it active
         // 2. begin selection
         // 2. begin selection
         if !rect.contains(mouse_pos) {
         if !rect.contains(mouse_pos) {
+            /*
             if self.is_focused.get() {
             if self.is_focused.get() {
                 debug!(target: "ui::editbox", "EditBox unfocused");
                 debug!(target: "ui::editbox", "EditBox unfocused");
                 self.is_focused.set(false);
                 self.is_focused.set(false);
@@ -541,6 +542,7 @@ impl EditBox {
 
 
                 self.redraw().await;
                 self.redraw().await;
             }
             }
+            */
             return false
             return false
         }
         }