From a37b7af85e66d06fc1d15193fc5437c60ba55a97 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Wed, 9 Mar 2016 19:42:00 +0000 Subject: [PATCH] Display a game message if a cyclic error occurs The message is displayed as a general message in the UI until the next successful sort, giving users something to refer to if they try to fix the issue. Fixes #421. --- src/gui/handler.cpp | 10 +++++++++- src/gui/html/js/events.js | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/gui/handler.cpp b/src/gui/handler.cpp index 3bf99c1b..69ade14c 100644 --- a/src/gui/handler.cpp +++ b/src/gui/handler.cpp @@ -953,7 +953,15 @@ namespace loot { } catch (loot::error& e) { BOOST_LOG_TRIVIAL(error) << "Failed to sort plugins. Details: " << e.what(); - callback->Failure(e.code(), (boost::format(loc::translate("Failed to sort plugins. Details: %1%")) % e.what()).str()); + if (e.code() == error::sorting_error) { + _lootState.CurrentGame().AppendMessage(Message(Message::error, e.what())); + + YAML::Node node; + node["globalMessages"] = GetGeneralMessages(); + callback->Success(JSON::stringify(node)); + } + else + callback->Failure(e.code(), (boost::format(loc::translate("Failed to sort plugins. Details: %1%")) % e.what()).str()); } } diff --git a/src/gui/html/js/events.js b/src/gui/html/js/events.js index 99577e1d..5c80310a 100644 --- a/src/gui/html/js/events.js +++ b/src/gui/html/js/events.js @@ -101,6 +101,11 @@ function onSortPlugins() { loot.game.globalMessages = result.globalMessages; + if (!result.plugins) { + loot.Dialog.closeProgress(); + return; + } + /* Check if sorted load order differs from current load order. */ const loadOrderIsUnchanged = result.plugins.every((plugin, index) => { return plugin.name === loot.game.plugins[index].name;