Skip to content

Commit ab84752

Browse files
committed
bug correction, menu without exit option was scrolling too far
1 parent 232b8d9 commit ab84752

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

Examples/menu_test/menu_test.ino

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,28 @@ menuPrint serial(Serial);
157157
#endif
158158
#if (USE_TFT == YES)
159159
menuGFX gfx(tft);
160+
//menuGFX gfx(tft,BLUE,BLACK,WHITE,SILVER,5,8);
160161
#endif
161162
menuPrint menuSerialOut(Serial);//describe output device
162163

163-
//menuOut* out[]={&lcd,&serial};
164-
//chainOut<2> allOut(out);//not implemented multiple outputs... useless i think
164+
/*template<int N>
165+
class chainOut:public Print {
166+
public:
167+
menuOut* out[N];
168+
chainOut(Print* out[N]):out(out) {}
169+
virtual void clear() {for(int n=0;n<N;n++) out[n]->clear();}
170+
virtual void setCursor(int x,int y) {for(int n=0;n<N;n++) out[n]->setCursor(x,y);}
171+
virtual void print(char ch) {for(int n=0;n<N;n++) out[n]->print(ch);}
172+
virtual void print(const char *text) {for(int n=0;n<N;n++) out[n]->print(text);}
173+
virtual void println(const char *text) {for(int n=0;n<N;n++) out[n]->print(text);}
174+
virtual void print(int i) {for(int n=0;n<N;n++) out[n]->print(i);}
175+
virtual void println(int i) {for(int n=0;n<N;n++) out[n]->print(i);}
176+
virtual void print(prompt &o,bool selected,int idx,int posY,int width) {for(int n=0;n<N;n++) out[n]->print(o,selected,idx,posY,width);}
177+
virtual void printMenu(menu&m,bool drawExit) {for(int n=0;n<N;n++) out[n]->print(m,drawExit);}
178+
};
179+
180+
menuOut* out[]={&lcd,&gfx};
181+
chainOut<2> allOut(out);*/
165182

166183
///////////////////////////////////////////////////////////////////////////////
167184

@@ -219,14 +236,13 @@ void loop() {
219236
//mainMenu.activate(menuSerialOut,Serial);//show menu to Serial and read keys from Serial
220237
//Serial.println("");
221238
//Serial.println("Restarting...");
239+
//mainMenu.activate(Serial,enc);//bad combination! shopw menu on serial and navigate using quadEncoder
222240

223241
#if (LCD_WIRE != LCDWIRE_NONE)
224-
//digitalWrite(vpinsSPI_CS,LOW);
225-
//digitalWrite(tftCS,LOW);
242+
digitalWrite(vpinsSPI_CS,LOW);
243+
digitalWrite(tftCS,LOW);
226244
//mainMenu.activate(lcd,allIn);//show menu on LCD and use multiple inputs to navigate (defined encoder, encoder button, serial)
227-
//mainMenu.activate(lcd1,allIn);//show menu on LCD and multiple inputs to navigate, defaults to LCD 16x1
228245
//mainMenu.activate(lcd,Serial);//very bad combination!
229-
//mainMenu.activate(Serial,enc);//bad combination! shopw menu on serial and navigate using quadEncoder
230246
#endif
231247

232248
#if (USE_TFT == YES)

menu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ int menu::menuKeys(menuOut &p,Stream& c,bool canExit) {
2525
} else if (ch=='+') {
2626
if (sel<(sz-(canExit?0:1))) {
2727
sel++;
28-
if ((sz-sel+1)>=p.maxY) p.top=sel;
28+
if ((sz-sel+(canExit?1:0))>=p.maxY) p.top=sel-(canExit?1:0);
2929
printMenu(p,canExit);
3030
}
3131
} else if (ch==27) {

0 commit comments

Comments
 (0)