Fix selection bug in editor causing selections to be un-ended

Mikayla created

Change summary

crates/editor/src/completions.rs                  | 28 -------------
crates/editor/src/element.rs                      | 32 +++++++--------
crates/gpui/src/platform/mac/window_appearance.rs | 35 -----------------
3 files changed, 15 insertions(+), 80 deletions(-)

Detailed changes

crates/editor/src/completions.rs 🔗

@@ -1,28 +0,0 @@
-use futures::Future;
-use gpui::Task;
-use smallvec::{smallvec, SmallVec};
-use text::Anchor;
-
-use crate::Editor;
-
-struct Completions {
-    trigger_characters: SmallVec<[char; 1]>,
-    language: Option<String>,
-    provider: Box<dyn Fn(&mut Editor, &Anchor, &str) -> Option<Task<String>>>,
-}
-
-impl Completions {
-    fn new(f: impl Fn(&mut Editor, &Anchor, &str) -> Option<Task<String>> + 'static) -> Self {
-        Self {
-            trigger_characters: smallvec![],
-            language: None,
-            provider: Box::new(f),
-        }
-    }
-}
-
-impl Editor {
-    /// Provide completions to the editor when the given character is typed
-    ///
-    fn provide_completions(config: Completions) {}
-}

crates/editor/src/element.rs 🔗

@@ -456,6 +456,7 @@ impl EditorElement {
         event: &MouseUpEvent,
         position_map: &PositionMap,
         text_bounds: Bounds<Pixels>,
+        interactive_bounds: &InteractiveBounds,
         stacking_order: &StackingOrder,
         cx: &mut ViewContext<Editor>,
     ) {
@@ -466,7 +467,8 @@ impl EditorElement {
             editor.select(SelectPhase::End, cx);
         }
 
-        if !pending_nonempty_selections
+        if interactive_bounds.visibly_contains(&event.position, cx)
+            && !pending_nonempty_selections
             && event.modifiers.command
             && text_bounds.contains(&event.position)
             && cx.was_top_layer(&event.position, stacking_order)
@@ -2542,22 +2544,18 @@ impl EditorElement {
             let interactive_bounds = interactive_bounds.clone();
 
             move |event: &MouseUpEvent, phase, cx| {
-                if phase == DispatchPhase::Bubble
-                {
-                    // if interactive_bounds.visibly_contains(&event.position, cx) {
-                        editor.update(cx, |editor, cx| {
-                            Self::mouse_up(
-                                editor,
-                                event,
-                                &position_map,
-                                text_bounds,
-                                &stacking_order,
-                                cx,
-                            )
-                        });
-                    // } else {
-
-                    // }
+                if phase == DispatchPhase::Bubble {
+                    editor.update(cx, |editor, cx| {
+                        Self::mouse_up(
+                            editor,
+                            event,
+                            &position_map,
+                            text_bounds,
+                            &interactive_bounds,
+                            &stacking_order,
+                            cx,
+                        )
+                    });
                 }
             }
         });

crates/gpui/src/platform/mac/window_appearance.rs 🔗

@@ -1,35 +0,0 @@
-use crate::WindowAppearance;
-use cocoa::{
-    appkit::{NSAppearanceNameVibrantDark, NSAppearanceNameVibrantLight},
-    base::id,
-    foundation::NSString,
-};
-use objc::{msg_send, sel, sel_impl};
-use std::ffi::CStr;
-
-impl WindowAppearance {
-    pub unsafe fn from_native(appearance: id) -> Self {
-        let name: id = msg_send![appearance, name];
-        if name == NSAppearanceNameVibrantLight {
-            Self::VibrantLight
-        } else if name == NSAppearanceNameVibrantDark {
-            Self::VibrantDark
-        } else if name == NSAppearanceNameAqua {
-            Self::Light
-        } else if name == NSAppearanceNameDarkAqua {
-            Self::Dark
-        } else {
-            println!(
-                "unknown appearance: {:?}",
-                CStr::from_ptr(name.UTF8String())
-            );
-            Self::Light
-        }
-    }
-}
-
-#[link(name = "AppKit", kind = "framework")]
-extern "C" {
-    pub static NSAppearanceNameAqua: id;
-    pub static NSAppearanceNameDarkAqua: id;
-}