Skip to content

Commit 2fcc87b

Browse files
committed
https://github.com/neu-rah/ArduinoMenu/issues/179
1 parent fc447d3 commit 2fcc87b

File tree

4 files changed

+34
-32
lines changed

4 files changed

+34
-32
lines changed

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=ArduinoMenu library
2-
version=4.10.2
2+
version=4.10.3
33
author=Rui Azevedo, [email protected]
44
maintainer=neu-rah, [email protected]
55
sentence=Generic menu/interactivity system

src/menuIo.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,37 @@ Used outputsList::printMenu(navNode& nav) const {
6262
return 0;
6363
}
6464

65+
result outputsList::idle(idleFunc f,idleEvent e,bool idleChanged) {
66+
#ifdef MENU_DEBUG
67+
if (!f) MENU_DEBUG_OUT<<"idleFunc is NULL!!!"<<endl;
68+
#endif
69+
if (!f) return proceed;
70+
for(int n=0;n<cnt;n++) {
71+
menuOut& o=*((menuOut*)memPtr(outs[n]));
72+
switch(e) {
73+
case idleStart:
74+
if ((*f)(o,e)==proceed) {
75+
if (!(o.style&menuOut::redraw)) {
76+
result r=(*f)(o,idling);
77+
if (r==quit) return r;
78+
}
79+
} else return quit;
80+
break;
81+
case idling:
82+
if (idleChanged||o.style&menuOut::redraw) {
83+
result r=(*f)(o,e);
84+
if (r==quit) return r;
85+
}
86+
break;
87+
case idleEnd:
88+
result r=(*f)(o,e);
89+
if (r==quit) return r;
90+
break;
91+
}
92+
}
93+
return proceed;
94+
}
95+
6596
// draw a menu preview on a panel
6697
void menuOut::previewMenu(navRoot& root,menuNode& menu,idx_t panelNr) {
6798
trace(MENU_DEBUG_OUT<<"menuOut::previewMenu"<<endl);

src/menuIo.h

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -204,36 +204,7 @@
204204
}
205205
void clear() {for(int n=0;n<cnt;n++) ((menuOut*)memPtr(outs[n]))->clear();}
206206
void doNav(navCmd cmd,class navNode &nav) {for(int n=0;n<cnt;n++) ((menuOut*)memPtr(outs[n]))->doNav(cmd,nav);}
207-
result idle(idleFunc f,idleEvent e) {
208-
#ifdef MENU_DEBUG
209-
if (!f) MENU_DEBUG_OUT<<"idleFunc is NULL!!!"<<endl;
210-
#endif
211-
if (!f) return proceed;
212-
for(int n=0;n<cnt;n++) {
213-
menuOut& o=*((menuOut*)memPtr(outs[n]));
214-
switch(e) {
215-
case idleStart:
216-
if ((*f)(o,e)==proceed) {
217-
if (!(o.style&menuOut::redraw)) {
218-
result r=(*f)(o,idling);
219-
if (r==quit) return r;
220-
}
221-
} else return quit;
222-
break;
223-
case idling:
224-
if (o.style&menuOut::redraw) {
225-
result r=(*f)(o,e);
226-
if (r==quit) return r;
227-
}
228-
break;
229-
case idleEnd:
230-
result r=(*f)(o,e);
231-
if (r==quit) return r;
232-
break;
233-
}
234-
}
235-
return proceed;
236-
}
207+
result idle(idleFunc f,idleEvent e,bool idleChanged=false);
237208
};
238209
}//namespace Menu
239210

src/nav.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,8 @@
150150
inline void doOutput() {
151151
if (!sleepTask) printMenu();
152152
else {
153+
out.idle(sleepTask,idling,idleChanged);
153154
idleChanged=false;//turn it off here so that sleepTask can force it on again
154-
out.idle(sleepTask,idling);
155155
#ifdef MENU_IDLE_BKGND
156156
if (idleTask!=sleepTask) out.idle(idleTask,idling);
157157
#endif

0 commit comments

Comments
 (0)