Skip to content

Commit

Permalink
DropdownWidget::addItem: Use smart pointers in closure
Browse files Browse the repository at this point in the history
  • Loading branch information
past-due committed Dec 10, 2021
1 parent c002eef commit 1077757
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions lib/widget/dropdown.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,14 +189,17 @@ void DropdownWidget::display(int xOffset, int yOffset)

void DropdownWidget::addItem(const std::shared_ptr<WIDGET> &item)
{
auto itemOnSelect = [this](std::shared_ptr<DropdownItemWrapper> selected) {
if (!overlayScreen) {
open();
std::weak_ptr<DropdownWidget> pWeakThis(std::dynamic_pointer_cast<DropdownWidget>(shared_from_this()));
auto itemOnSelect = [pWeakThis](std::shared_ptr<DropdownItemWrapper> selected) {
auto psStrongDropdown = pWeakThis.lock();
ASSERT_OR_RETURN(, psStrongDropdown != nullptr, "DropdownWidget no longer exists?");
if (!psStrongDropdown->overlayScreen) {
psStrongDropdown->open();
return;
}

select(selected);
close();
psStrongDropdown->select(selected);
psStrongDropdown->close();
};

auto wrapper = DropdownItemWrapper::make(item, itemOnSelect);
Expand Down

0 comments on commit 1077757

Please sign in to comment.