diff --git a/src/gui/widgets/addon_list.cpp b/src/gui/widgets/addon_list.cpp index bb889c52c9f25..9e36557625c9f 100644 --- a/src/gui/widgets/addon_list.cpp +++ b/src/gui/widgets/addon_list.cpp @@ -15,6 +15,7 @@ #include "gui/widgets/addon_list.hpp" +#include "addon/client.hpp" #include "color.hpp" #include "font/text_formatting.hpp" #include "formatter.hpp" @@ -125,6 +126,17 @@ std::string addon_list::describe_status(const addon_tracking_info& info) return colorize_addon_state_string(tx, info.state, true); } +void addon_list::addon_action_wrapper(addon_op_func_t& func, const addon_info& addon, bool& handled, bool& halt) +{ + try { + func(addon); + + handled = halt = true; + } catch(const addons_client::user_exit&) { + // User canceled the op. + } +} + void addon_list::set_addons(const addons_list& addons) { listbox& list = get_listbox(); @@ -214,41 +226,28 @@ void addon_list::set_addons(const addons_list& addons) install_update_stack.select_layer(static_cast(is_updatable)); if(!is_updatable) { - find_widget