CMenuWidget: fix "left" key for menuchoosers where

the "decrement menu function" got lost by the last "simplify code and
add missing break" commit. The implicit fallthrough actually was used to
execute the "left" function.
Reorganize the code so that it works even without the implicit
fallthrough.


Origin commit data
------------------
Commit: fea586b311
Author: Stefan Seyfried <seife@tuxbox-git.slipkontur.de>
Date: 2017-09-29 (Fri, 29 Sep 2017)
This commit is contained in:
Stefan Seyfried
2017-09-29 20:37:37 +02:00
committed by vanhofen
parent b4363c5dc4
commit 57e71ff625

View File

@@ -949,50 +949,47 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &)
break;
}
case (CRCInput::RC_left):
if (hasItem() && selected > -1 && (int)items.size() > selected) {
CMenuItem* itemX = items[selected];
if (!itemX->isMenueOptionChooser() && g_settings.menu_left_exit)
msg = CRCInput::RC_timeout;
}
break;
case (CRCInput::RC_right):
case (CRCInput::RC_ok):
{
if(hasItem() && selected > -1 && (int)items.size() > selected) {
//NI lcd4l-support
LCD4l->RemoveFile("/tmp/lcd/menu");
if (hasItem() && selected > -1 && (int)items.size() > selected) {
//NI lcd4l-support
LCD4l->RemoveFile("/tmp/lcd/menu");
//exec this item...
CMenuItem* item = items[selected];
if (!item->isSelectable())
break;
item->msg = msg;
fader.StopFade();
int rv = item->exec( this );
//NI lcd4l-support
if (g_settings.lcd4l_support)
LCD4l->CreateFile("/tmp/lcd/menu", item->lcd4l_text, g_settings.lcd4l_convert);
switch ( rv ) {
case menu_return::RETURN_EXIT_ALL:
retval = menu_return::RETURN_EXIT_ALL;
/* fall through */
case menu_return::RETURN_EXIT:
msg = CRCInput::RC_timeout;
break;
case menu_return::RETURN_REPAINT:
case menu_return::RETURN_EXIT_REPAINT:
if (fade && washidden)
fader.StartFadeIn();
checkHints();
pos = selected;
paint();
break;
}
} else
//exec this item...
CMenuItem* item = items[selected];
if (msg == CRCInput::RC_left && g_settings.menu_left_exit &&
!item->isMenueOptionChooser()) {
msg = CRCInput::RC_timeout;
}
break;
}
if (!item->isSelectable())
break;
item->msg = msg;
fader.StopFade();
int rv = item->exec( this );
//NI lcd4l-support
if (g_settings.lcd4l_support)
LCD4l->CreateFile("/tmp/lcd/menu", item->lcd4l_text, g_settings.lcd4l_convert);
switch ( rv ) {
case menu_return::RETURN_EXIT_ALL:
retval = menu_return::RETURN_EXIT_ALL;
/* fall through */
case menu_return::RETURN_EXIT:
msg = CRCInput::RC_timeout;
break;
case menu_return::RETURN_REPAINT:
case menu_return::RETURN_EXIT_REPAINT:
if (fade && washidden)
fader.StartFadeIn();
checkHints();
pos = selected;
paint();
break;
}
} else
msg = CRCInput::RC_timeout;
break;
case (CRCInput::RC_home):