diff options
| author | 2024-04-16 00:08:17 +0900 | |
|---|---|---|
| committer | 2024-04-16 00:08:17 +0900 | |
| commit | 0ebe0629cef37aee5c48b9409fc36618a3a3e60d (patch) | |
| tree | 909d9ecf28e7c491bae3afc81928c118517fa7a9 /widget/src/combo_box.rs | |
| parent | 13bd106fc585034a7aba17b9c17589113274aaf5 (diff) | |
| parent | 105b8bd5ad6ade1f203a0d8b0b93bd06f61f621a (diff) | |
| download | iced-0ebe0629cef37aee5c48b9409fc36618a3a3e60d.tar.gz iced-0ebe0629cef37aee5c48b9409fc36618a3a3e60d.tar.bz2 iced-0ebe0629cef37aee5c48b9409fc36618a3a3e60d.zip | |
Merge branch 'iced-rs:master' into viewer_content_fit
Diffstat (limited to 'widget/src/combo_box.rs')
| -rw-r--r-- | widget/src/combo_box.rs | 65 | 
1 files changed, 37 insertions, 28 deletions
| diff --git a/widget/src/combo_box.rs b/widget/src/combo_box.rs index e4f4a41f..253850df 100644 --- a/widget/src/combo_box.rs +++ b/widget/src/combo_box.rs @@ -700,38 +700,47 @@ where                  ..              } = tree.state.downcast_mut::<Menu<T>>(); -            let bounds = layout.bounds(); -              self.state.sync_filtered_options(filtered_options); -            let mut menu = menu::Menu::new( -                menu, -                &filtered_options.options, -                hovered_option, -                |x| { -                    tree.children[0] -                        .state -                        .downcast_mut::<text_input::State<Renderer::Paragraph>>( -                        ) -                        .unfocus(); - -                    (self.on_selected)(x) -                }, -                self.on_option_hovered.as_deref(), -                &self.menu_class, -            ) -            .width(bounds.width) -            .padding(self.padding); - -            if let Some(font) = self.font { -                menu = menu.font(font); -            } +            if filtered_options.options.is_empty() { +                None +            } else { +                let bounds = layout.bounds(); + +                let mut menu = menu::Menu::new( +                    menu, +                    &filtered_options.options, +                    hovered_option, +                    |x| { +                        tree.children[0] +                    .state +                    .downcast_mut::<text_input::State<Renderer::Paragraph>>( +                    ) +                    .unfocus(); + +                        (self.on_selected)(x) +                    }, +                    self.on_option_hovered.as_deref(), +                    &self.menu_class, +                ) +                .width(bounds.width) +                .padding(self.padding); + +                if let Some(font) = self.font { +                    menu = menu.font(font); +                } -            if let Some(size) = self.size { -                menu = menu.text_size(size); -            } +                if let Some(size) = self.size { +                    menu = menu.text_size(size); +                } -            Some(menu.overlay(layout.position() + translation, bounds.height)) +                Some( +                    menu.overlay( +                        layout.position() + translation, +                        bounds.height, +                    ), +                ) +            }          } else {              None          } | 
