Exemplo n.º 1
0
/*
  element: 	the root element
  es:			event source handler, can be NULL
  eh:			event handler to process the source events
  gh:			graphics handler
*/
void m2_InitM2(m2_p m2, m2_rom_void_p element, m2_es_fnptr es, m2_eh_fnptr eh, m2_gfx_fnptr gh)
{
  m2->arg1 = 0;
  m2->arg2 = 0;
  m2->is_frame_draw_at_end = 0;
  m2->key_queue_len = 0;
  m2->key_queue_pos = 0;
  m2->is_last_key_touch_screen_press = 0;
  m2->element_focus = NULL;
  m2->eh = eh;
  m2->gh = gh;
  m2->root_change_callback = m2_root_change_default_cb;  /* called in m2navinit.c */
  m2_gfx_init(gh);
  m2->is_frame_draw_at_end = m2_gfx_is_frame_draw_at_end();
  //m2->forced_key = M2_KEY_REFRESH;
  m2->debounce_state = M2_DEBOUNCE_STATE_WAIT_FOR_KEY_PRESS;
  m2->home = element;
  m2->home2 = element;
  /* m2_SetHomeM2(m2, element); */
  m2_nav_init(m2_get_nav(m2),  element);
  if ( m2_GetRootM2(m2) != &m2_null_element )	/* only refresh screen for none empty menues, issue 97 */
    m2_PutKeyIntoQueue(m2, M2_KEY_REFRESH);
  m2_get_nav(m2)->root_change_value = 0;
  m2_SetEventSourceHandlerM2(m2, es);
}
Exemplo n.º 2
0
/* currently this is called in the event step procedure m2_ep_step() in m2ep.c */
uint8_t m2_nav_check_and_assign_new_root(m2_nav_p nav)
{
  if ( nav->new_root_element != NULL )
  {
    m2_nav_init(nav, nav->new_root_element);
    return 1;
  }
  return 0;
}