bool DropDownMenu::handle_mouse_up(DispPoint coord) { if (!clicked) { return false; } clicked = false; // Find clicked row int row_size = text_size + vertical_padding*2; selected_entry_idx = coord.y / row_size; // order matters incase entries is empty to avoid -1 if (selected_entry_idx >= entries.size()) { selected_entry_idx = entries.size()-1; } if (selected_entry_idx <= 0) { selected_entry_idx = 0; } update_menu_view(); resize(get_w(), row_size); int vert_adj = -selected_entry_idx * row_size; // (move subview up) move_subview(menu, DispPoint(0, vert_adj)); // move correct entry to visible get_parent()->move_subview(this, pre_click_pos); lose_focus(); return true; }
bool ScrollView::ScrollBar::handle_mouse_up(VGPoint coord) { clicked = false; click = coord; view->scrolling = false; lose_focus(); return true; }