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; } }
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; }
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; }
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; }
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); }
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; } }
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); }
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); }
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); }