If the GRIDLIST (or any other dialog) is larger than the display, then the results are not defined.
You can always define your own event handler. In an .ino (.pde) file it might look like this:
extern "C" uint8_t my_m2_eh_6bs(m2_p ep, uint8_t msg, uint8_t arg1, uint8_t arg2)
{
m2_nav_p nav = m2_get_nav(ep);
switch(msg)
{
case M2_EP_MSG_SELECT:
/* if the field has data entry, than increment the data */
if ( m2_nav_is_data_entry(nav) )
return m2_nav_data_up(m2_get_nav(ep));
/* else go down: do not use m2_nav_down, instead use m2_nav_user_down to skip design elements */
return m2_nav_user_down(nav, 1);
case M2_EP_MSG_EXIT:
return m2_nav_user_up(m2_get_nav(ep));
case M2_EP_MSG_NEXT:
return m2_nav_user_next(m2_get_nav(ep));
case M2_EP_MSG_PREV:
return m2_nav_user_prev(m2_get_nav(ep));
case M2_EP_MSG_DATA_DOWN:
if ( m2_nav_data_down(nav) == 0 )
return m2_nav_user_next(nav);
return 1;
case M2_EP_MSG_DATA_UP:
if ( m2_nav_data_up(nav) == 0 )
return m2_nav_user_prev(nav);
return 1;
}
return 0;
}
I think, what you mean is this:
extern "C" uint8_t my_m2_eh_6bs(m2_p ep, uint8_t msg, uint8_t arg1, uint8_t arg2)
{
m2_nav_p nav = m2_get_nav(ep);
switch(msg)
{
case M2_EP_MSG_SELECT:
/* if the field has data entry, than increment the data */
if ( m2_nav_is_data_entry(nav) )
return m2_nav_user_up(m2_get_nav(ep)); // THIS HAS CHANGED
/* else go down: do not use m2_nav_down, instead use m2_nav_user_down to skip design elements */
return m2_nav_user_down(nav, 1);
case M2_EP_MSG_EXIT:
return m2_nav_user_up(m2_get_nav(ep));
case M2_EP_MSG_NEXT:
return m2_nav_user_next(m2_get_nav(ep));
case M2_EP_MSG_PREV:
return m2_nav_user_prev(m2_get_nav(ep));
case M2_EP_MSG_DATA_DOWN:
if ( m2_nav_data_down(nav) == 0 )
return m2_nav_user_next(nav);
return 1;
case M2_EP_MSG_DATA_UP:
if ( m2_nav_data_up(nav) == 0 )
return m2_nav_user_prev(nav);
return 1;
}
return 0;
}
yes, could be a nice idea...
Oliver