Change summary
crates/gpui/src/app.rs | 6 ++++++
crates/terminal_view/src/terminal_button.rs | 5 ++++-
2 files changed, 10 insertions(+), 1 deletion(-)
Detailed changes
@@ -2757,6 +2757,12 @@ impl AppContext {
Some(self.views.get(&(window_id, view_id))?.ui_name())
}
+ pub fn view_type_id(&self, window_id: usize, view_id: usize) -> Option<TypeId> {
+ self.views
+ .get(&(window_id, view_id))
+ .map(|view| view.as_any().type_id())
+ }
+
pub fn background(&self) -> &Arc<executor::Background> {
&self.background
}
@@ -5,6 +5,7 @@ use gpui::{
ViewHandle, WeakModelHandle, WeakViewHandle,
};
use settings::Settings;
+use std::any::TypeId;
use terminal::Terminal;
use workspace::{dock::FocusDock, item::ItemHandle, NewTerminal, StatusItemView, Workspace};
@@ -50,7 +51,9 @@ impl View for TerminalButton {
let focused_view = cx.focused_view_id(cx.window_id());
let active = focused_view
- .map(|view| cx.view_ui_name(cx.window_id(), view) == Some(TerminalView::ui_name()))
+ .map(|view_id| {
+ cx.view_type_id(cx.window_id(), view_id) == Some(TypeId::of::<TerminalView>())
+ })
.unwrap_or(false);
let has_terminals = !project.local_terminal_handles().is_empty();