소스 검색

app: add selected_text() for android

darkfi 1 년 전
부모
커밋
064fe1ac25
4개의 변경된 파일16개의 추가작업 그리고 6개의 파일을 삭제
  1. 10 0
      bin/app/src/text2/editor/android.rs
  2. 2 2
      bin/app/src/text2/editor/parley.rs
  3. 1 1
      bin/app/src/ui/chatedit.rs
  4. 3 3
      bin/app/src/ui/emoji_picker/mod.rs

+ 10 - 0
bin/app/src/text2/editor/android.rs

@@ -160,4 +160,14 @@ impl Editor {
     pub fn height(&self) -> f32 {
         self.layout().height()
     }
+
+    pub fn selected_text(&self) -> Option<String> {
+        let edit = android::get_editable(self.composer_id).unwrap();
+        if edit.select_start == edit.select_end {
+            return None
+        }
+        let select_start = char16_to_byte_index(&edit.buffer, edit.select_start).unwrap();
+        let select_end = char16_to_byte_index(&edit.buffer, edit.select_end).unwrap();
+        Some(edit.buffer[select_start..select_end].to_string())
+    }
 }

+ 2 - 2
bin/app/src/text2/editor/parley.rs

@@ -95,7 +95,7 @@ impl Editor {
         self.layout().height()
     }
 
-    pub fn selected_text(&self) -> Option<&str> {
-        self.editor.selected_text()
+    pub fn selected_text(&self) -> Option<String> {
+        self.editor.selected_text().to_owned()
     }
 }

+ 1 - 1
bin/app/src/ui/chatedit.rs

@@ -571,7 +571,7 @@ impl ChatEdit {
             'c' => {
                 if action_mod {
                     if let Some(text) = editor.selected_text() {
-                        miniquad::window::clipboard_set(text);
+                        miniquad::window::clipboard_set(&text);
                     }
                 }
             }

+ 3 - 3
bin/app/src/ui/emoji_picker/mod.rs

@@ -51,8 +51,8 @@ mod default;
 mod emoji;
 pub use emoji::{EmojiMeshes, EmojiMeshesPtr};
 
-macro_rules! d { ($($arg:tt)*) => { debug!(target: "ui::emoji_picker", $($arg)*); } }
-macro_rules! t { ($($arg:tt)*) => { trace!(target: "ui::emoji_picker", $($arg)*); } }
+macro_rules! d { ($($arg:tt)*) => { debug!(target: "ui::emoji_picker", $($arg)*) } }
+macro_rules! t { ($($arg:tt)*) => { trace!(target: "ui::emoji_picker", $($arg)*) } }
 
 struct TouchInfo {
     start_pos: Point,
@@ -196,7 +196,7 @@ impl EmojiPicker {
                 let node = self.node.upgrade().unwrap();
                 node.trigger("emoji_select", param_data).await.unwrap();
             }
-            None => d!("Index out of bounds: {idx}"),
+            None => d!("Index out of bounds: {idx}")
         }
     }