Bladeren bron

app: update editor for latest parley version

darkfi 9 maanden geleden
bovenliggende
commit
7fd6219ac0
3 gewijzigde bestanden met toevoegingen van 6 en 11 verwijderingen
  1. 2 2
      bin/app/src/gfx/linalg.rs
  2. 2 8
      bin/app/src/text2/editor/parley.rs
  3. 2 1
      bin/app/src/ui/edit/mod.rs

+ 2 - 2
bin/app/src/gfx/linalg.rs

@@ -328,8 +328,8 @@ impl std::fmt::Debug for Rectangle {
     }
 }
 
-impl From<parley::Rect> for Rectangle {
-    fn from(rect: parley::Rect) -> Self {
+impl From<parley::BoundingBox> for Rectangle {
+    fn from(rect: parley::BoundingBox) -> Self {
         Self::new(rect.x0 as f32, rect.y0 as f32, rect.width() as f32, rect.height() as f32)
     }
 }

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

@@ -141,14 +141,8 @@ impl Editor {
     /// Android uses byte indexes whereas parley has its own things. So this API is a compromise
     /// between them both.
     pub fn set_selection(&mut self, select_start: usize, select_end: usize) {
-        let anchor = parley::Cursor::from_byte_index(
-            &self.layout,
-            select_start,
-            parley::Affinity::Downstream,
-        );
-        let focus =
-            parley::Cursor::from_byte_index(&self.layout, select_end, parley::Affinity::Downstream);
-
+        let anchor = self.editor.cursor_at(select_start);
+        let focus = self.editor.cursor_at(select_end);
         let sel = parley::Selection::new(anchor, focus);
         self.editor.set_selection(sel);
     }

+ 2 - 1
bin/app/src/ui/edit/mod.rs

@@ -974,6 +974,7 @@ impl BaseEdit {
                 //t!("handle_select(): no change early exit");
                 return
             }
+            #[cfg(target_os = "android")]
             assert!(start <= end);
 
             //t!("handle_select(): set_selection({start}, {end})");
@@ -1126,7 +1127,7 @@ impl BaseEdit {
         let sel_color = self.hi_bg_color.get();
         if !sel.is_collapsed() {
             let mut mesh = MeshBuilder::new(gfxtag!("chatedit_select_mesh"));
-            sel.geometry_with(layout, |rect: parley::Rect, _| {
+            sel.geometry_with(layout, |rect: parley::BoundingBox, _| {
                 mesh.draw_filled_box(&rect.into(), sel_color);
             });