void spicker::handle_inside_event(Event &ev, image *screen, InputManager *inm)
{
  switch (ev.type)
  {
    case EV_MOUSE_MOVE :
    {
      if (activate_on_mouse_move())
      {
    int me;
    if (vert)
      me=last_sel+(ev.mouse_move.y-m_pos.y)/item_height();
    else
      me=last_sel+(ev.mouse_move.x-m_pos.x)/item_width();
    if (me<t && me>=0)
    {
      if (cur_sel!=me)
      {
        cur_sel=me;
        scroll_event(last_sel,screen);
        note_new_current(screen,inm,me);
      }
    }
      }
    } break;
    case EV_MOUSE_BUTTON :
    {
      int me;
      if (vert)
    me=last_sel+(ev.mouse_move.y-m_pos.y)/item_height();
      else
    me=last_sel+(ev.mouse_move.x-m_pos.x)/item_width();
      if (me<t && me>=0)
      {
    if (m)
    {
      if (ev.mouse_button)
      {
        if (ok_to_select(me))
        {
          set_select(me,!get_select(me));
          scroll_event(last_sel,screen);
          inm->grab_focus(this);
        }
      } else last_click=-1;

    } else if (ok_to_select(me))
    {
      if (cur_sel==me)
        note_selection(screen,inm,me);
      else
      {
        cur_sel=me;
        scroll_event(last_sel,screen);
        note_new_current(screen,inm,me);
      }
    }
      }
    } break;
  }
}
Beispiel #2
0
void spicker::handle_down(image *screen, InputManager *inm) {
	if (vert && cur_sel < t - 1)
		cur_sel++;
	else
		return;
	if (cur_sel > sx + r - 1) {
		draw_widget(screen, 1);
		last_sel = sx = cur_sel - r + 1;
		draw_widget(screen, 0);
	}
	scroll_event(sx, screen);
	note_new_current(screen, inm, cur_sel);
}
Beispiel #3
0
void spicker::handle_up(image *screen, InputManager *inm) {
	if (vert && cur_sel > 0) {
		cur_sel--;

		if (cur_sel < sx) {
			draw_widget(screen, 1);
			last_sel = sx = cur_sel;
			draw_widget(screen, 0);
		}
		scroll_event(last_sel, screen);
		note_new_current(screen, inm, cur_sel);
	}
}