Fix the selected state for the panel icons in the status bar (#3450)

Marshall Bowers created

This PR fixes a bug where the selected state for the panel icons in the
status bar was not correctly reflecting whether the panel was open.

It was erroneously using the `is_open` state for the context menu.

Release Notes:

- N/A

Change summary

crates/ui2/src/components/stories/icon_button.rs |  6 ++++++
crates/workspace2/src/dock.rs                    | 14 ++++++++------
2 files changed, 14 insertions(+), 6 deletions(-)

Detailed changes

crates/ui2/src/components/stories/icon_button.rs 🔗

@@ -14,6 +14,12 @@ impl Render for IconButtonStory {
             .child(Story::title_for::<IconButton>())
             .child(Story::label("Default"))
             .child(div().w_8().child(IconButton::new("icon_a", Icon::Hash)))
+            .child(Story::label("Selected"))
+            .child(
+                div()
+                    .w_8()
+                    .child(IconButton::new("icon_a", Icon::Hash).selected(true)),
+            )
             .child(Story::label("With `on_click`"))
             .child(
                 div()

crates/workspace2/src/dock.rs 🔗

@@ -701,11 +701,6 @@ impl Render for PanelButtons {
                     (action, name.into())
                 };
 
-                let button = IconButton::new(name, icon)
-                    .selected(is_active_button)
-                    .action(action.boxed_clone())
-                    .tooltip(move |cx| Tooltip::for_action(tooltip.clone(), &*action, cx));
-
                 Some(
                     menu_handle(name)
                         .menu(move |cx| {
@@ -731,7 +726,14 @@ impl Render for PanelButtons {
                         })
                         .anchor(menu_anchor)
                         .attach(menu_attach)
-                        .child(|is_open| button.selected(is_open)),
+                        .child(move |_is_open| {
+                            IconButton::new(name, icon)
+                                .selected(is_active_button)
+                                .action(action.boxed_clone())
+                                .tooltip(move |cx| {
+                                    Tooltip::for_action(tooltip.clone(), &*action, cx)
+                                })
+                        }),
                 )
             });