From fcd81f464ef36c1d7ed49208a8d9405c1fd4282e Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Sun, 3 Nov 2019 19:15:26 +1100 Subject: [PATCH] Fixed crash in gamestate inspector (fixes #4540) Changing the use of callbacks to NOTIFY_MODIFIED events (2adac53461b62d3) made it so the widget reference passed to the callback was now a tree view node and not the tree view itself. --- src/gui/dialogs/gamestate_inspector.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gui/dialogs/gamestate_inspector.cpp b/src/gui/dialogs/gamestate_inspector.cpp index 86ad3c4206e2..02458f06de86 100644 --- a/src/gui/dialogs/gamestate_inspector.cpp +++ b/src/gui/dialogs/gamestate_inspector.cpp @@ -319,22 +319,22 @@ class gamestate_inspector::controller { } - void handle_stuff_list_item_clicked(widget& tree) + void handle_stuff_list_item_clicked(widget& node) { - tree_view_node* selected = dynamic_cast(tree).selected_item(); - callbacks[selected->describe_path()](*selected); + tree_view_node& selected = dynamic_cast(node); + callbacks[selected.describe_path()](selected); // We recursively fold, but non-recursively unfold. // This is because only one node on a level should be open at any given time. // Furthermore, there's no need to remember that a subnode was open once the parent is closed. - if(!selected->is_root_node()) { - for(auto& node : selected->parent_node().children()) { - if(node.get() != selected) { + if(!selected.is_root_node()) { + for(auto& node : selected.parent_node().children()) { + if(node.get() != &selected) { node->fold(true); } } - selected->unfold(); + selected.unfold(); } view_.update(model_);