From 74e113b2cce2cc90e3503b9d44b83a70d9793613 Mon Sep 17 00:00:00 2001 From: Jinhao Date: Wed, 21 Sep 2016 08:19:00 +0800 Subject: [PATCH] returns not only one inline widget --- source/gui/widgets/listbox.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/source/gui/widgets/listbox.cpp b/source/gui/widgets/listbox.cpp index 1dcb7f9d..a37e20c9 100644 --- a/source/gui/widgets/listbox.cpp +++ b/source/gui/widgets/listbox.cpp @@ -736,14 +736,17 @@ namespace nana std::string to_string(const export_options& exp_opt) const; - inline_pane * get_inline_pane(const index_pair& item_pos) + std::vector get_inline_pane(const index_pair& item_pos) { + std::vector panes; for (auto p : active_panes_) { if (p && (p->item_pos == item_pos)) - return p; + { + panes.emplace_back(p); + } } - return nullptr; + return panes; } void emit_checked(index_pair pos) @@ -752,9 +755,9 @@ namespace nana arg_listbox arg{ i }; wd_ptr()->events().checked.emit(arg, wd_ptr()->handle()); - auto pane = get_inline_pane(pos); - if (pane) - pane->inline_ptr->notify_status(inline_widget_status::checking, i.checked()); + auto panes = get_inline_pane(pos); + for (auto p : panes) + p->inline_ptr->notify_status(inline_widget_status::checking, i.checked()); } void emit_selected(index_pair pos) @@ -763,9 +766,9 @@ namespace nana arg_listbox arg{ i }; wd_ptr()->events().selected.emit(arg, wd_ptr()->handle()); - auto pane = get_inline_pane(pos); - if (pane) - pane->inline_ptr->notify_status(inline_widget_status::selecting, i.selected()); + auto panes = get_inline_pane(pos); + for (auto p : panes) + p->inline_ptr->notify_status(inline_widget_status::selecting, i.selected()); } // Definition is provided after struct essence