From 514d0c4dfee8302470cd42c72be9554733f3f417 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Tue, 14 Oct 2014 19:59:42 -0400 Subject: [PATCH 1/2] Work around #1626 --- src/guiengine/widgets/dynamic_ribbon_widget.cpp | 2 +- src/states_screens/options_screen_video.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/guiengine/widgets/dynamic_ribbon_widget.cpp b/src/guiengine/widgets/dynamic_ribbon_widget.cpp index ce6428911..57e110276 100644 --- a/src/guiengine/widgets/dynamic_ribbon_widget.cpp +++ b/src/guiengine/widgets/dynamic_ribbon_widget.cpp @@ -1085,7 +1085,7 @@ bool DynamicRibbonWidget::setSelection(int item_id, const int playerID, if (iterations > 50) { - Log::fatal("DynamicRibbonWidget::setSelection", "Cannot find item %d (%s)", item_id, name.c_str()); + Log::error("DynamicRibbonWidget::setSelection", "Cannot find item %d (%s)", item_id, name.c_str()); return false; } diff --git a/src/states_screens/options_screen_video.cpp b/src/states_screens/options_screen_video.cpp index c6c3a121c..ff4042496 100644 --- a/src/states_screens/options_screen_video.cpp +++ b/src/states_screens/options_screen_video.cpp @@ -310,6 +310,7 @@ void OptionsScreenVideo::init() } // end if not inited + res->setActivated(); res->updateItemDisplay(); // ---- select current resolution every time From 3fe2870c396200b7a129016f81f6db95124c90f2 Mon Sep 17 00:00:00 2001 From: Marianne Gagnon Date: Tue, 14 Oct 2014 20:03:50 -0400 Subject: [PATCH 2/2] Cleaner fix for #1626, closes #1626 --- src/guiengine/widgets/dynamic_ribbon_widget.cpp | 6 +++--- src/guiengine/widgets/dynamic_ribbon_widget.hpp | 2 +- src/states_screens/options_screen_video.cpp | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/guiengine/widgets/dynamic_ribbon_widget.cpp b/src/guiengine/widgets/dynamic_ribbon_widget.cpp index 57e110276..cd3d16c05 100644 --- a/src/guiengine/widgets/dynamic_ribbon_widget.cpp +++ b/src/guiengine/widgets/dynamic_ribbon_widget.cpp @@ -757,9 +757,9 @@ void DynamicRibbonWidget::onRibbonWidgetFocus(RibbonWidget* emitter, const int p #pragma mark Setters / Actions #endif -void DynamicRibbonWidget::scroll(const int x_delta) +void DynamicRibbonWidget::scroll(int x_delta, bool evenIfDeactivated) { - if (m_deactivated) return; + if (m_deactivated && !evenIfDeactivated) return; // Refuse to scroll when everything is visible if ((int)m_items.size() <= m_row_amount*m_col_amount) return; @@ -1081,7 +1081,7 @@ bool DynamicRibbonWidget::setSelection(int item_id, const int playerID, while (!findItemInRows(name.c_str(), &row, &id)) { // if we get here it means the item is scrolled out. Try to find it. - scroll(1); + scroll(1, evenIfDeactivated); if (iterations > 50) { diff --git a/src/guiengine/widgets/dynamic_ribbon_widget.hpp b/src/guiengine/widgets/dynamic_ribbon_widget.hpp index a46a28202..d2e842cf8 100644 --- a/src/guiengine/widgets/dynamic_ribbon_widget.hpp +++ b/src/guiengine/widgets/dynamic_ribbon_widget.hpp @@ -159,7 +159,7 @@ namespace GUIEngine void buildInternalStructure(); /** Call this to scroll within a scrollable ribbon */ - void scroll(const int x_delta); + void scroll(int x_delta, bool evenIfDeactivated = false); /** Used for combo ribbons, to contain the ID of the currently selected item for each player */ int m_selected_item[MAX_PLAYER_COUNT]; diff --git a/src/states_screens/options_screen_video.cpp b/src/states_screens/options_screen_video.cpp index ff4042496..c6c3a121c 100644 --- a/src/states_screens/options_screen_video.cpp +++ b/src/states_screens/options_screen_video.cpp @@ -310,7 +310,6 @@ void OptionsScreenVideo::init() } // end if not inited - res->setActivated(); res->updateItemDisplay(); // ---- select current resolution every time