I cannot replicate what you noticed.
I downloaded the 0.6.1. version from git hub and modified the example as following
//MENWIZ ESAMPLE
#include <Wire.h>
//INSERT ALL THE FOLLOWING 5 INCLUDES AFTER INCLUDING WIRE LIB
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <buttons.h>
#include <MENWIZ.h>
#include <EEPROM.h>
// DEFINE ARDUINO PINS FOR THE NAVIGATION BUTTONS
#define UP_BUTTON_PIN 9
#define DOWN_BUTTON_PIN 10
#define LEFT_BUTTON_PIN 7
#define RIGHT_BUTTON_PIN 8
#define CONFIRM_BUTTON_PIN 12
#define ESCAPE_BUTTON_PIN 11
//Create global object menu and lcd
menwiz menu;
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity
//instantiate global variables to bind to menu
int tp=0;
float f=26.0;
boolean bb=0;
byte b=50;
void setup(){
_menu *r,*s1,*s2;
_var *v;
int mem;
Serial.begin(19200);
// have a look on memory before menu creation
Serial.println(sizeof(menwiz));
mem=menu.freeRam();
// inizialize the menu object (20 colums x 4 rows)
menu.begin(&lcd,20,4);
//create the menu tree
r=menu.addMenu(MW_ROOT,NULL,"MAIN MENU"); //create a root menu at first (required)
s1=menu.addMenu(MW_SUBMENU,r,"MEASURE SUBMENU"); //add a child (submenu) node to the root menu
s2=menu.addMenu(MW_VAR,s1,"Test list"); //add a terminal node (that is "variable");
s2->addVar(MW_LIST,&tp); //create a variable of type "option list"..
s2->addItem(MW_LIST,"option 1"); //add option to the OPTION LIST
s2->addItem(MW_LIST,"option 2"); //add option to the OPTION LIST
s2->addItem(MW_LIST,"option 3"); //add option to the OPTION LIST
// s2->setBehaviour(MW_SCROLL_HORIZONTAL,true); //...if you like horizontal scroll
s2=menu.addMenu(MW_VAR,s1,"Test float var"); //add a terminal node (that is "variable");
s2->addVar(MW_AUTO_FLOAT,&f,11.00,100.00,0.5); //create a variable of type "float number"...
//...associated to the terminal node and bind it to the app variable "f" of type float
s2=menu.addMenu(MW_VAR,s1,"Test byte var"); //add a terminal node (that is "variable");
s2->addVar(MW_AUTO_BYTE,&b,25,254,10); //create a variable of type "byte"...
//...associated to the terminal node and bind it to the app variable "b" of typr byte
s2=menu.addMenu(MW_VAR,s1,"Test boolean var"); //add a terminal node (that is "variable");
s2->addVar(MW_BOOLEAN,&bb); //create a variable of type "boolean"
s1=menu.addMenu(MW_VAR,r,"TEST ACTION1"); //add a terminal node (that is "variable") create an "action" associated to the terminal node...
s1->addVar(MW_ACTION,act1); //the act function as default will be called when enter button is pushed
//s1->setBehaviour(MW_ACTION_CONFIRM,false); //...if you don't need action confirmation
s1=menu.addMenu(MW_VAR,r,"TEST ACTION2"); //add a terminal node (that is "variable") create an "action" associated to the terminal node...
s1->addVar(MW_ACTION,act2); //the act function as default will be called when enter button is pushed
s1->setBehaviour(MW_ACTION_CONFIRM,false); //...if you don't need action confirmation
//declare navigation buttons (required)
menu.navButtons(UP_BUTTON_PIN,DOWN_BUTTON_PIN,LEFT_BUTTON_PIN,RIGHT_BUTTON_PIN,ESCAPE_BUTTON_PIN,CONFIRM_BUTTON_PIN);
//(tip): use preallocated internal menu.sbuf buffer to save memory space!
sprintf(menu.sbuf,"MENWIZ TEST V %s\n.Free mem. :%d\n.Used mem :%d\n.Lap secs :%d",menu.getVer(),menu.freeRam(),mem-menu.freeRam(),5);
//(optional) create a splash screen (duration 5.000 millis)with some usefull infos the character \n marks end of LCD line
menu.addSplash((char *) menu.sbuf, 5000);
//(optional)create a user define screen callback to activate after 10 secs (10.000 millis) since last button push
menu.addUsrScreen(msc,10000);
}
void loop(){
menu.draw();
//PUT APPLICATION CODE HERE (if any)
}
// user defined callbacks
void msc(){
sprintf(menu.sbuf,"User screen\nUptime (s): %ld\nFree mem : %d\n\n",millis()/1000,(int)menu.freeRam());
menu.drawUsrScreen(menu.sbuf);
}
void act1(){
Serial.println("FIRED ACTION1");
}
void act2(){
Serial.println("FIRED ACTION2");
}
void savevar(){
menu.writeEeprom();
}
void loadvar(){
menu.readEeprom();
}
The above code works as expected: the first action ask for confirmation before to write to serial, and second action do'not (EDIT but write correctly to serial).
I think something in the custom button management routine could bias the result.
I'll check.