diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index accdb7d4f..0f459bb36 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -574,10 +574,14 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) } break; case (CRCInput::RC_left): - if ((hasItem() && (selected < 0 || !items[selected]->can_arrow)) || - g_settings.menu_left_exit) { - msg = CRCInput::RC_timeout; - break; + { + CMenuItem* itemX = items[selected]; + int menu_left_exit = (itemX->isNumberChooser() == 1) ? 0 : g_settings.menu_left_exit; + if ((hasItem() && (selected < 0 || !items[selected]->can_arrow)) || + menu_left_exit) { + msg = CRCInput::RC_timeout; + break; + } } case (CRCInput::RC_right): case (CRCInput::RC_ok): diff --git a/src/gui/widget/menue.h b/src/gui/widget/menue.h index 9ca12ee41..6578fecbb 100644 --- a/src/gui/widget/menue.h +++ b/src/gui/widget/menue.h @@ -131,6 +131,8 @@ class CMenuItem virtual void paintItemCaption(const bool select_mode, const int &item_height, const char * left_text=NULL, const char * right_text=NULL); virtual void paintItemSlider( const bool select_mode, const int &item_height, const int &optionvalue, const int &factor, const char * left_text=NULL, const char * right_text=NULL); + + virtual int isNumberChooser(void) const{return 0;} }; class CMenuSeparator : public CMenuItem @@ -259,6 +261,7 @@ private: int paint(bool selected, bool last = false); int exec(CMenuTarget* parent); + int isNumberChooser(void) const{return 1;} }; class CMenuOptionChooser : public CAbstractMenuOptionChooser