Skip to content

Commit db56f83

Browse files
author
dave
committed
#75 ensure that reset callback works properly
1 parent 8269a6e commit db56f83

File tree

4 files changed

+28
-7
lines changed

4 files changed

+28
-7
lines changed

src/BaseRenderers.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ BaseMenuRenderer::BaseMenuRenderer(int bufferSize) : MenuRenderer(RENDERER_TYPE_
4646
}
4747

4848
void BaseMenuRenderer::initialise() {
49-
ticksToReset = MAX_TICKS;
49+
ticksToReset = resetValInTicks;
5050
renderCallback = NULL;
5151
redrawMode = MENUDRAW_COMPLETE_REDRAW;
5252

src/tcMenu.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,10 @@ void MenuManager::addMenuAfter(MenuItem *existing, MenuItem* toAdd, bool silent)
314314

315315
void MenuManager::addChangeNotification(MenuManagerObserver *observer) {
316316
for(auto & i : structureNotifier) {
317-
if(i == nullptr) i = observer;
317+
if(i == nullptr) {
318+
i = observer;
319+
return;
320+
}
318321
}
319322
}
320323

@@ -333,7 +336,9 @@ void MenuManager::load(EepromAbstraction &eeprom, uint16_t magicKey, TimerFn onE
333336

334337
void MenuManager::notifyEditEnd(MenuItem *item) {
335338
for(auto & obs : structureNotifier) {
336-
if(obs != nullptr) obs->menuEditEnded(item);
339+
if(obs != nullptr) {
340+
obs->menuEditEnded(item);
341+
}
337342
}
338343
}
339344

@@ -349,6 +354,8 @@ bool MenuManager::notifyEditStarting(MenuItem *item) {
349354

350355
void MenuManager::notifyStructureChanged() {
351356
for(auto & i : structureNotifier) {
352-
if(i != nullptr) i->structureHasChanged();
357+
if(i != nullptr) {
358+
i->structureHasChanged();
359+
}
353360
}
354361
}

src/tcMenu.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ class CommitCallbackObserver : public MenuManagerObserver {
6868

6969
void structureHasChanged() override {}
7070
bool menuEditStarting(MenuItem*) override { return true; }
71-
void menuEditEnded(MenuItem* item) override { commitCb(item->getId()); }
71+
void menuEditEnded(MenuItem* item) override {
72+
commitCb(item->getId());
73+
}
7274
};
7375

7476
#ifndef MAX_MENU_NOTIFIERS

tests/tcMenuCoreTests/menuManagerTests.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,14 @@ class TestMenuMgrObserver : public MenuManagerObserver {
7575
bool editStartedCalled{};
7676
bool editEndedCalled{};
7777
bool startReturnValue{};
78+
bool originalCommitCalled{};
7879
public:
7980
TestMenuMgrObserver() = default;
8081

8182
void setStartReturn(bool toReturn) { startReturnValue = toReturn; }
8283

8384
void reset() {
84-
structureChangedCalled = editStartedCalled = editEndedCalled = false;
85+
structureChangedCalled = editStartedCalled = editEndedCalled = originalCommitCalled = false;
8586
}
8687

8788
void structureHasChanged() override {
@@ -97,11 +98,20 @@ class TestMenuMgrObserver : public MenuManagerObserver {
9798
editEndedCalled = true;
9899
}
99100

101+
void originalCommitWasCalled() {
102+
originalCommitCalled = true;
103+
}
104+
100105
bool didTriggerStructure() const { return structureChangedCalled; }
101106
bool didTriggerStartEdit() const { return editStartedCalled; }
102107
bool didTriggerEndEdit() const { return editEndedCalled; }
108+
bool didOriginalCommitTrigger() const { return originalCommitCalled; }
103109
} menuMgrObserver;
104110

111+
void originalCommitCb(int itemId) {
112+
menuMgrObserver.originalCommitWasCalled();
113+
}
114+
105115
const PROGMEM AnyMenuInfo testActionInfo = { "ActTest", 2394, 0xffff, 0, NO_CALLBACK };
106116
ActionMenuItem testActionItem(&testActionInfo, nullptr);
107117

@@ -112,6 +122,7 @@ test(addingItemsAndMenuCallbacks) {
112122
menuMgr.setRootMenu(&textMenuItem1);
113123
menuMgr.initWithoutInput(&noRenderer, &textMenuItem1);
114124
menuMgr.addChangeNotification(&menuMgrObserver);
125+
menuMgr.setItemCommittedHook(originalCommitCb);
115126

116127
// first we add some menu items at the end of the menu and test the structure change call is made
117128
menuMgr.addMenuAfter(&menuNumTwoDp, &testActionItem, true);
@@ -135,6 +146,7 @@ test(addingItemsAndMenuCallbacks) {
135146
menuMgr.onMenuSelect(false);
136147

137148
assertTrue(menuMgrObserver.didTriggerEndEdit());
149+
assertTrue(menuMgrObserver.didOriginalCommitTrigger());
138150
assertTrue(menuMgrObserver.didTriggerStartEdit());
139151
assertTrue(boolItem1.getBoolean() != currentMenuValue);
140152

@@ -157,6 +169,7 @@ test(addingItemsAndMenuCallbacks) {
157169
menuMgr.valueChanged(1); // we are now editing, change the actual enum
158170
menuMgr.onMenuSelect(false); // stop editing
159171
assertTrue(menuMgrObserver.didTriggerEndEdit());
172+
assertTrue(menuMgrObserver.didOriginalCommitTrigger());
160173
assertEqual((uint16_t)1, menuEnum1.getCurrentValue());
161174

162175
// lastly try an enum item that does not go into editing because the callback returned false.
@@ -166,6 +179,5 @@ test(addingItemsAndMenuCallbacks) {
166179
menuMgr.onMenuSelect(false);
167180
assertTrue(menuMgrObserver.didTriggerStartEdit());
168181
assertFalse(menuEnum1.isEditing());
169-
170182
}
171183

0 commit comments

Comments
 (0)