Take context menu out of the use_state

Danilo Leal created

Change summary

crates/settings_ui/src/settings_ui.rs | 60 ++++++++++++++--------------
1 file changed, 29 insertions(+), 31 deletions(-)

Detailed changes

crates/settings_ui/src/settings_ui.rs 🔗

@@ -3453,37 +3453,35 @@ where
         } else {
             current_value_label.to_string()
         },
-        window.use_state(cx, |window, cx| {
-            ContextMenu::new(window, cx, move |mut menu, _, _| {
-                for (&value, &label) in std::iter::zip(variants(), labels()) {
-                    let file = file.clone();
-                    menu = menu.toggleable_entry(
-                        if should_do_titlecase {
-                            label.to_title_case()
-                        } else {
-                            label.to_string()
-                        },
-                        value == current_value,
-                        IconPosition::End,
-                        None,
-                        move |_, cx| {
-                            if value == current_value {
-                                return;
-                            }
-                            update_settings_file(
-                                file.clone(),
-                                field.json_path,
-                                cx,
-                                move |settings, _cx| {
-                                    (field.write)(settings, Some(value));
-                                },
-                            )
-                            .log_err(); // todo(settings_ui) don't log err
-                        },
-                    );
-                }
-                menu
-            })
+        ContextMenu::build(window, cx, move |mut menu, _, _| {
+            for (&value, &label) in std::iter::zip(variants(), labels()) {
+                let file = file.clone();
+                menu = menu.toggleable_entry(
+                    if should_do_titlecase {
+                        label.to_title_case()
+                    } else {
+                        label.to_string()
+                    },
+                    value == current_value,
+                    IconPosition::End,
+                    None,
+                    move |_, cx| {
+                        if value == current_value {
+                            return;
+                        }
+                        update_settings_file(
+                            file.clone(),
+                            field.json_path,
+                            cx,
+                            move |settings, _cx| {
+                                (field.write)(settings, Some(value));
+                            },
+                        )
+                        .log_err(); // todo(settings_ui) don't log err
+                    },
+                );
+            }
+            menu
         }),
     )
     .tab_index(0)