Notabilis has proposed merging
lp:~widelands-dev/widelands/bug-keyboard-after-save-delete into lp:widelands.
Commit message:
Fixing keyboard navigation after "remove game" dialog has been displayed.
Requested reviews:
Widelands Developers (widelands-dev)
For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-keyboard-after-save-delete/+merge/345469
When in the single player "load game" menu the "remove game" dialog has been
displayed, keyboard navigation afterwards no longer works, e.g., selecting a
game with the arrow keys. The problem is that the current focus isn't correctly
set afterwards.
The focus is determined by a list of pointer over the panels of the window,
each pointing to its child that currently has the focus: p1->p2->p3->p4->p5
(with p5 being the game list that should be controlled). When the removal
dialog is opened, its parent is set as p3, resulting in the focus pointer in p3
being changed. When the game list p5 later on re-requests the focus, the
pointer in p4 is checked before setting it. Since it is already pointing to p5,
the modified pointer in p3 is never reached.
This branch removes this check since it seems to me that it is only a (in this
case broken) optimization. Another possible approach would be to set the focus
pointers of all child panels to nullptr when a pointer is changed (not tested).
--
Your team Widelands Developers is requested to review the proposed merge of
lp:~widelands-dev/widelands/bug-keyboard-after-save-delete into lp:widelands.
=== modified file 'src/ui_basic/panel.cc'
--- src/ui_basic/panel.cc 2018-05-07 05:35:32 +0000
+++ src/ui_basic/panel.cc 2018-05-13 08:07:57 +0000
@@ -664,8 +664,6 @@
if (!parent_ || this == modal_) {
return;
}
- if (parent_->focus_ == this)
- return;
parent_->focus_ = this;
parent_->focus(false);
=== modified file 'src/wui/load_or_save_game.cc'
--- src/wui/load_or_save_game.cc 2018-05-13 07:15:39 +0000
+++ src/wui/load_or_save_game.cc 2018-05-13 08:07:57 +0000
@@ -268,6 +268,7 @@
ngettext("Confirm Deleting File", "Confirm Deleting Files", no_selections), message,
UI::WLMessageBox::MBoxType::kOkCancel);
do_delete = confirmationBox.run<UI::Panel::Returncodes>() == UI::Panel::Returncodes::kOk;
+ table_.focus();
}
if (do_delete) {
for (const uint32_t index : selections) {
@@ -292,7 +293,6 @@
// Make sure that the game details are updated
entry_selected();
}
- // TODO(GunChleoc): When the removal dialog was open, navigation with arrow keys no longer works.
}
UI::Button* LoadOrSaveGame::delete_button() {
_______________________________________________
Mailing list: https://launchpad.net/~widelands-dev
Post to : [email protected]
Unsubscribe : https://launchpad.net/~widelands-dev
More help : https://help.launchpad.net/ListHelp