Unified · Split
| @@ -611,7 +611,6 @@ impl AppContext { · 610 unmodified lines | ||
| 611 | 611 | .values() |
| 612 | 612 | .filter_map(|window| { |
| 613 | 613 | let window = window.as_ref()?; |
| 614 | − dbg!(window.focus_invalidated); | |
| 615 | 614 | (window.dirty || window.focus_invalidated).then_some(window.handle) |
| 616 | 615 | }) |
| 617 | 616 | .collect::<Vec<_>>() |
| @@ -470,6 +470,7 @@ impl<'a> WindowContext<'a> { · 469 unmodified lines | ||
| 470 | 470 | |
| 471 | 471 | #[cfg(any(test, feature = "test-support"))] |
| 472 | 472 | { |
| 473 | + println!("invalidating focus"); | |
| 473 | 474 | self.window.focus_invalidated = true; |
| 474 | 475 | } |
| 475 | 476 | |
| @@ -1237,6 +1238,11 @@ impl<'a> WindowContext<'a> { · 761 unmodified lines | ||
| 1237 | 1238 | |
| 1238 | 1239 | /// Draw pixels to the display for this window based on the contents of its scene. |
| 1239 | 1240 | pub(crate) fn draw(&mut self) -> Scene { |
| 1241 | + #[cfg(any(test, feature = "test-support"))] | |
| 1242 | + { | |
| 1243 | + self.window.focus_invalidated = false; | |
| 1244 | + } | |
| 1245 | + | |
| 1240 | 1246 | self.text_system().start_frame(); |
| 1241 | 1247 | self.window.platform_window.clear_input_handler(); |
| 1242 | 1248 | self.window.layout_engine.as_mut().unwrap().clear(); |
| @@ -1290,11 +1296,6 @@ impl<'a> WindowContext<'a> { · 47 unmodified lines | ||
| 1290 | 1296 | let current_focus_path = self.window.rendered_frame.focus_path(); |
| 1291 | 1297 | |
| 1292 | 1298 | if previous_focus_path != current_focus_path { |
| 1293 | − #[cfg(any(test, feature = "test-support"))] | |
| 1294 | − { | |
| 1295 | − self.window.focus_invalidated = false; | |
| 1296 | − } | |
| 1297 | − | |
| 1298 | 1299 | if !previous_focus_path.is_empty() && current_focus_path.is_empty() { |
| 1299 | 1300 | self.window |
| 1300 | 1301 | .blur_listeners |
| @@ -739,7 +739,6 @@ impl ProjectPanel { · 738 unmodified lines | ||
| 739 | 739 | }); |
| 740 | 740 | self.filename_editor.update(cx, |editor, cx| { |
| 741 | 741 | editor.clear(cx); |
| 742 | − println!("focusing"); | |
| 743 | 742 | editor.focus(cx); |
| 744 | 743 | }); |
| 745 | 744 | self.update_visible_entries(Some((worktree_id, NEW_ENTRY_ID)), cx); |
| @@ -1672,7 +1671,7 @@ mod tests { · 926 unmodified lines | ||
| 1672 | 1671 | path::{Path, PathBuf}, |
| 1673 | 1672 | sync::atomic::{self, AtomicUsize}, |
| 1674 | 1673 | }; |
| 1675 | − use workspace::AppState; | |
| 1674 | + use workspace::{dock::PanelHandle, AppState}; | |
| 1676 | 1675 | |
| 1677 | 1676 | #[gpui::test] |
| 1678 | 1677 | async fn test_visible_list(cx: &mut gpui::TestAppContext) { |
| @@ -2281,7 +2280,12 @@ mod tests { · 602 unmodified lines | ||
| 2281 | 2280 | let workspace = cx.add_window(|cx| Workspace::test_new(project.clone(), cx)); |
| 2282 | 2281 | let cx = &mut VisualTestContext::from_window(*workspace, cx); |
| 2283 | 2282 | let panel = workspace |
| 2284 | − .update(cx, |workspace, cx| ProjectPanel::new(workspace, cx)) | |
| 2283 | + .update(cx, |workspace, cx| { | |
| 2284 | + let panel = ProjectPanel::new(workspace, cx); | |
| 2285 | + workspace.add_panel(panel.clone(), cx); | |
| 2286 | + workspace.toggle_dock(panel.read(cx).position(cx), cx); | |
| 2287 | + panel | |
| 2288 | + }) | |
| 2285 | 2289 | .unwrap(); |
| 2286 | 2290 | |
| 2287 | 2291 | select_path(&panel, "root1", cx); |
| @@ -532,6 +532,7 @@ impl Workspace { · 531 unmodified lines | ||
| 532 | 532 | cx.notify() |
| 533 | 533 | }) |
| 534 | 534 | .detach(); |
| 535 | + | |
| 535 | 536 | cx.on_blur_window(|this, cx| { |
| 536 | 537 | let focus_handle = this.focus_handle(cx); |
| 537 | 538 | cx.focus(&focus_handle); |