Give the MouseEventHandlers for each tab bar their own id

Nathan Sobo created

This fixes a beachball where we oscillate back and forth between hovered and unhovered due to confusing two different tab bars as the same tab bar.

Change summary

crates/gpui/src/app.rs       | 4 ++++
crates/workspace/src/pane.rs | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)

Detailed changes

crates/gpui/src/app.rs 🔗

@@ -2418,6 +2418,10 @@ impl<'a, T: View> RenderContext<'a, T> {
     pub fn handle(&self) -> WeakViewHandle<T> {
         WeakViewHandle::new(self.window_id, self.view_id)
     }
+
+    pub fn view_id(&self) -> usize {
+        self.view_id
+    }
 }
 
 impl AsRef<AppContext> for &AppContext {

crates/workspace/src/pane.rs 🔗

@@ -182,7 +182,7 @@ impl Pane {
         let theme = &settings.theme;
 
         enum Tabs {}
-        let tabs = MouseEventHandler::new::<Tabs, _, _, _>(0, cx, |mouse_state, cx| {
+        let tabs = MouseEventHandler::new::<Tabs, _, _, _>(cx.view_id(), cx, |mouse_state, cx| {
             let mut row = Flex::row();
             for (ix, item) in self.items.iter().enumerate() {
                 let is_active = ix == self.active_item;