Skip to content

Commit 350959b

Browse files
committed
#76 make scrolling work more naturally, by setting scrolling mode on the encoder when not editing.
1 parent b70b4c1 commit 350959b

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

src/tcMenu.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
MenuManager menuMgr;
1515

16-
void MenuManager::initForUpDownOk(MenuRenderer* renderer, MenuItem* root, pinid_t pinUp, pinid_t pinDown, pinid_t pinOk) {
16+
void MenuManager::initForUpDownOk(MenuRenderer* renderer, MenuItem* root, pinid_t pinDown, pinid_t pinUp, pinid_t pinOk) {
1717
this->renderer = renderer;
1818
this->currentRoot = this->rootMenu = root;
1919

@@ -70,7 +70,6 @@ void MenuManager::performDirectionMove(bool dirIsBack) {
7070
setCurrentMenu(currentActive);
7171
}
7272
}
73-
7473
}
7574

7675
void MenuManager::initWithoutInput(MenuRenderer* renderer, MenuItem* root) {
@@ -204,6 +203,7 @@ void MenuManager::stopEditingCurrentItem(bool doMultiPartNext) {
204203
currentEditor = nullptr;
205204
setItemsInCurrentMenu(itemCount(menuMgr.getCurrentMenu()) - 1, offsetOfCurrentActive(menuMgr.getCurrentMenu()));
206205

206+
207207
if (renderer->getRendererType() == RENDERER_TYPE_BASE) {
208208
auto* baseRenderer = reinterpret_cast<BaseMenuRenderer*>(renderer);
209209
baseRenderer->redrawRequirement(MENUDRAW_EDITOR_CHANGE);
@@ -243,6 +243,7 @@ void MenuManager::setupForEditing(MenuItem* item) {
243243
currentEditor = item;
244244
currentEditor->setEditing(true);
245245
switches.changeEncoderPrecision(item->getMaximumValue(), reinterpret_cast<ValueMenuItem*>(currentEditor)->getCurrentValue());
246+
switches.getEncoder()->setUserIntention(CHANGE_VALUE);
246247
}
247248
else if (ty == MENUTYPE_BOOLEAN_VALUE) {
248249
// we don't actually edit boolean items, just toggle them instead
@@ -259,6 +260,7 @@ void MenuManager::setupForEditing(MenuItem* item) {
259260
}
260261
else if (isMenuRuntimeMultiEdit(item)) {
261262
if(!notifyEditStarting(item)) return;
263+
switches.getEncoder()->setUserIntention(CHANGE_VALUE);
262264
currentEditor = item;
263265
auto* editableItem = reinterpret_cast<EditableMultiPartMenuItem<void*>*>(item);
264266
editableItem->beginMultiEdit();
@@ -358,4 +360,11 @@ void MenuManager::notifyStructureChanged() {
358360
i->structureHasChanged();
359361
}
360362
}
361-
}
363+
}
364+
365+
void MenuManager::setItemsInCurrentMenu(int size, int offs) {
366+
auto enc = switches.getEncoder();
367+
if(!enc) return;
368+
enc->changePrecision(size, offs);
369+
enc->setUserIntention(SCROLL_THROUGH_ITEMS);
370+
}

src/tcMenu.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,11 @@ class MenuManager {
108108
* Initialise for up down and OK button, instead of using hardware changeEncoderPrecision
109109
* @param renderer the renderer used for drawing
110110
* @param root the first menu item
111-
* @param upPin the button on up
112111
* @param downPin the button for down
112+
* @param upPin the button on up
113113
* @param okPin the OK button for the menu select / edit action
114114
*/
115-
void initForUpDownOk(MenuRenderer* renderer, MenuItem* root, pinid_t upPin, pinid_t downPin, pinid_t okPin);
115+
void initForUpDownOk(MenuRenderer* renderer, MenuItem* root, pinid_t downPin, pinid_t upPin, pinid_t okPin);
116116

117117
/**
118118
* Initialise in situations where local input is not needed or where a custom type of input is needed
@@ -190,7 +190,7 @@ class MenuManager {
190190
* @param size the number of items
191191
* @param offs the offset within the items
192192
*/
193-
void setItemsInCurrentMenu(int size, int offs = 0) { switches.changeEncoderPrecision(size, offs); }
193+
void setItemsInCurrentMenu(int size, int offs = 0);
194194

195195
EepromAbstraction* getEepromAbstraction() { return eepromRef; }
196196

0 commit comments

Comments
 (0)