From 9d4e1e307c158c4f2da4d2be32c9c5e06371afd5 Mon Sep 17 00:00:00 2001 From: Kp Date: Fri, 10 Mar 2017 01:22:24 +0000 Subject: [PATCH] Shorten ui_dialog_do_gadgets --- common/ui/gadget.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/common/ui/gadget.cpp b/common/ui/gadget.cpp index 435eb2fcf..d808b1a4a 100644 --- a/common/ui/gadget.cpp +++ b/common/ui/gadget.cpp @@ -232,33 +232,34 @@ window_event_result ui_dialog_do_gadgets(UI_DIALOG * dlg,const d_event &event) if (dlg->keyboard_focus_gadget != NULL) { + [=]{ + UI_GADGET *UI_GADGET::*when; switch (keypress ) { case (KEY_TAB): - if ( dlg->keyboard_focus_gadget->when_tab != NULL ) - dlg->keyboard_focus_gadget = dlg->keyboard_focus_gadget->when_tab; + when = &UI_GADGET::when_tab; break; case (KEY_TAB+KEY_SHIFTED): - if ( dlg->keyboard_focus_gadget->when_btab != NULL ) - dlg->keyboard_focus_gadget = dlg->keyboard_focus_gadget->when_btab; + when = &UI_GADGET::when_btab; break; case (KEY_UP): - if ( dlg->keyboard_focus_gadget->when_up != NULL ) - dlg->keyboard_focus_gadget = dlg->keyboard_focus_gadget->when_up; + when = &UI_GADGET::when_up; break; case (KEY_DOWN): - if ( dlg->keyboard_focus_gadget->when_down != NULL ) - dlg->keyboard_focus_gadget = dlg->keyboard_focus_gadget->when_down; + when = &UI_GADGET::when_down; break; case (KEY_LEFT): - if ( dlg->keyboard_focus_gadget->when_left != NULL ) - dlg->keyboard_focus_gadget = dlg->keyboard_focus_gadget->when_left; + when = &UI_GADGET::when_left; break; case (KEY_RIGHT): - if ( dlg->keyboard_focus_gadget->when_right != NULL ) - dlg->keyboard_focus_gadget = dlg->keyboard_focus_gadget->when_right; + when = &UI_GADGET::when_right; break; + default: + return; } + if (const auto p = dlg->keyboard_focus_gadget->*when) + dlg->keyboard_focus_gadget = p; + }(); } window_event_result rval = window_event_result::ignored;