@@ -24,6 +24,18 @@ in the source distribution for its full text.
2424
2525static const char * const DisplayOptionsFunctions [] = {" " , " " , " " , " " , " " , " " , " " , " " , " " , "Done " , NULL };
2626
27+ static const char * const DisplayOptionsIncDecFunctions [] = {"Inc " , "Dec " , " " , "Done " , NULL };
28+ static const char * const DisplayOptionsIncDecKeys [] = {"+ " , "- " , " " , "F10" , NULL };
29+ static const int DisplayOptionsIncDecEvents [] = {'+' , '-' , ERR , KEY_F (10 )};
30+ static FunctionBar * DisplayOptions_incDecBar = NULL ;
31+
32+ void DisplayOptionsPanel_cleanup (void ) {
33+ if (DisplayOptions_incDecBar ) {
34+ FunctionBar_delete (DisplayOptions_incDecBar );
35+ DisplayOptions_incDecBar = NULL ;
36+ }
37+ }
38+
2739static void DisplayOptionsPanel_delete (Object * object ) {
2840 Panel * super = (Panel * ) object ;
2941 DisplayOptionsPanel * this = (DisplayOptionsPanel * ) object ;
@@ -73,6 +85,28 @@ static HandlerResult DisplayOptionsPanel_eventHandler(Panel* super, int ch) {
7385 result = HANDLED ;
7486 }
7587 break ;
88+ case KEY_UP :
89+ case KEY_DOWN :
90+ case KEY_NPAGE :
91+ case KEY_PPAGE :
92+ case KEY_HOME :
93+ case KEY_END :
94+ {
95+ OptionItem * previous = selected ;
96+ Panel_onKey (super , ch );
97+ selected = (OptionItem * ) Panel_getSelected (super );
98+ if (previous != selected ) {
99+ result = HANDLED ;
100+ }
101+ }
102+ /* fallthrough */
103+ case EVENT_SET_SELECTED :
104+ if (OptionItem_kind (selected ) == OPTION_ITEM_NUMBER ) {
105+ super -> currentBar = DisplayOptions_incDecBar ;
106+ } else {
107+ Panel_setDefaultBar (super );
108+ }
109+ break ;
76110 }
77111
78112 if (result == HANDLED ) {
@@ -104,6 +138,10 @@ DisplayOptionsPanel* DisplayOptionsPanel_new(Settings* settings, ScreenManager*
104138 FunctionBar * fuBar = FunctionBar_new (DisplayOptionsFunctions , NULL , NULL );
105139 Panel_init (super , 1 , 1 , 1 , 1 , Class (OptionItem ), true, fuBar );
106140
141+ if (!DisplayOptions_incDecBar ) {
142+ DisplayOptions_incDecBar = FunctionBar_new (DisplayOptionsIncDecFunctions , DisplayOptionsIncDecKeys , DisplayOptionsIncDecEvents );
143+ }
144+
107145 this -> settings = settings ;
108146 this -> scr = scr ;
109147
0 commit comments