Only synthesize mouse moves on scene construction if window is active

Nathan Sobo created

Change summary

crates/gpui/src/app.rs       | 7 +++++++
crates/gpui/src/presenter.rs | 6 ++++--
2 files changed, 11 insertions(+), 2 deletions(-)

Detailed changes

crates/gpui/src/app.rs 🔗

@@ -1005,6 +1005,13 @@ impl MutableAppContext {
             .and_then(|window| window.root_view.clone().downcast::<T>())
     }
 
+    pub fn window_is_active(&self, window_id: usize) -> bool {
+        self.cx
+            .windows
+            .get(&window_id)
+            .map_or(false, |window| window.is_active)
+    }
+
     pub fn render_view(
         &mut self,
         window_id: usize,

crates/gpui/src/presenter.rs 🔗

@@ -122,8 +122,10 @@ impl Presenter {
             self.text_layout_cache.finish_frame();
             self.cursor_styles = scene.cursor_styles();
 
-            if let Some(event) = self.last_mouse_moved_event.clone() {
-                self.dispatch_event(event, cx)
+            if cx.window_is_active(self.window_id) {
+                if let Some(event) = self.last_mouse_moved_event.clone() {
+                    self.dispatch_event(event, cx)
+                }
             }
         } else {
             log::error!("could not find root_view_id for window {}", self.window_id);