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;
  }
}
Exemple #2
0
bool ListBox::on_mouse (MouseEvent mouse_event)
{
	size_t new_focus;
	bool focus_to_first = false;
	// Right click: Deselect all
	if (mouse_event.m & (RIGHT_CLICK|RIGHT_PRESS)) {
		new_focus = size_t(-1);
	}
	else if (mouse_event.m & (LEFT_CLICK|LEFT_PRESS|LEFT_DCLICK)) {
		if (mouse_event.p.x + 1 >= get_size().x) {
			// Clicked on the scroll bar
			new_focus = scrollbar_click (get_size().y, items.size(), mouse_event.p.y);
			focus_to_first = true;
		}
		else {
			if (mouse_event.p.y >= scroll_.get_len()) {
				new_focus = size_t(-1);
			} else {
				new_focus = mouse_event.p.y + scroll_.get_first();
			}
		}
	}
	else {
		return false;
	}
	set_select (new_focus, true, focus_to_first);
	if (new_focus < items.size () && (mouse_event.m & LEFT_DCLICK) && mouse_event.p.x+1 < get_size().x) {
		sig_double_clicked.emit ();
	}
	return true;
}
Exemple #3
0
void Tab::UnSelect()
{
	if(is_selected())
	{
		J2[32] = !J2[32];
		ReturnPieceOfArray(this->ti.x0+1 , this->ti.y0+1, this->ti.width-2, this->ti.height-2, this->tbuf.prv_slct_buffer);
		set_select(false);
	} else
		return;
}
Exemple #4
0
void Tab::Select()
{
	if(!is_selected())
	{
		J2[28] = !J2[28];
		InvertPieceOfArray(this->ti.x0+1 , this->ti.y0+1, this->ti.width-2, this->ti.height-2, this->tbuf.prv_slct_buffer, this->tbuf.invert_buffer);
		set_select(true);
	} else
		return;
}
Exemple #5
0
int	move(char *key, t_data *data)
{
	if (key[0] == 27)
	{
		if (key[2] == 'D')
		{
			go_left(data->dlist);
			return (1);
		}
		else if(key[2] == 'A')
		{
			go_up(data->dlist, data->nb_word_line);
			return (1);
		}
		else if (key[2] == 'C')
		{
			go_right(data->dlist);
			return (1);
		}
		else if (key[2] == 'B')
		{
			go_down(data->dlist, data->nb_word_line);
			return (1);
		}
		else if (key[1] == 0)
			return(2);
	}
	else if(key[0] == 127)
	{
		data->dlist = del_word(data->dlist);
		tputs(tgetstr("up", NULL), 0, ft_putchar2);
		return(1);
	}
	else if (key[0] == ' ')
	{
		set_select(data->dlist);
		return (1);
	}
	else if (key[0] == '\n')
	{
		put_dlist(data->dlist, data->old_term);
		return (1);
	}
	return (0);
}
Exemple #6
0
bool DropList::on_key (wchar_t key)
{
	switch (key) {
		case UP:
			set_select (select - 1);
			return true;

		case DOWN:
			set_select (select + 1);
			return true;

		case HOME:
			set_select (0);
			return true;

		case END:
			set_select (items.size () - 1);
			return true;

		case L' ':
			dialog_select_set (this);
			return true;

		default:
			key = towlower (key);
			// Convert items[k] to const to that it is guaranteed
			// that items[k][0] is meaningful.
			// (In case of an empty string; Per C++ Standard)
			// Convert key to wint_t to suppress a warning
			for (size_t k = select+1; k<items.size(); ++k) {
				if (towlower (c(items[k])[0]) == wint_t(key)) {
					set_select (k);
					return true;
				}
			}
			for (size_t k = 0; k <= select; ++k) {
				if (towlower (c(items[k])[0]) == wint_t(key)) {
					set_select (k);
					return true;
				}
			}
			return false;
	}
}
Exemple #7
0
bool ListBox::on_key (wchar_t key)
{
	Scroll::Info scroll_info = scroll_.get_info();
	switch (key) {
		case UP:
		case 'k':
			if (!select_any) {
				if (items.empty ()) {
					return false;
				}
				set_select (scroll_info.focus);
				return true;
			}
			else {
				if (items.size () == 0) {
					return false;
				}
				if (scroll_info.focus == 0) {
					return false;
				}
				set_select (scroll_info.focus - 1);
				return true;
			}

		case DOWN:
		case 'j':
			if (!select_any) {
				if (items.empty ()) {
					return false;
				}
				set_select (scroll_info.focus);
				return true;
			}
			else {
				if (items.size () == 0) {
					return false;
				}
				if (scroll_info.focus + 1 >= items.size ()) {
					return false;
				}
				set_select (scroll_info.focus + 1);
				return true;
			}

		case PAGEUP:
			if (items.size () == 0) {
				return false;
			}
			if (scroll_info.focus == 0) {
				return false;
			}
			set_select (maxS (0, scroll_info.focus - get_size().y + 1));
			return true;

		case PAGEDOWN:
			if (items.size () == 0) {
				return false;
			}
			if (scroll_info.focus + 1 >= items.size ()) {
				return false;
			}
			set_select (minS (scroll_info.focus + get_size().y - 1, items.size () - 1));
			return true;

		case HOME:
		case L'g':
		case L'0':
		case L'^':
			if (items.size () == 0) {
				return false;
			}
			set_select (0);
			return true;

		case END:
		case L'G':
		case L'$':
			if (items.size () == 0) {
				return false;
			}
			set_select (items.size () - 1);
			return true;

		case L' ':
			if (select_any) {
				return false;
			}
			else {
				set_select (scroll_info.focus);
				return true;
			}

		default:
			return false;
	}
	assert (false);
}
Exemple #8
0
void ListBox::set_items (ItemList &&new_items, size_t new_select, bool emit_signal)
{
	items = std::forward<ItemList> (new_items);
	scroll_.modify_number(items.size());
	set_select (new_select, emit_signal);
}
Exemple #9
0
void ListBox::set_items (const ItemList &new_items, size_t new_select, bool emit_signal)
{
	items = new_items;
	scroll_.modify_number(items.size());
	set_select (new_select, emit_signal);
}