void CreateDialog::_favorite_toggled() { TreeItem *item = search_options->get_selected(); if (!item) return; String name = item->get_text(0); if (favorite_list.find(name) == -1) { favorite_list.push_back(name); favorite->set_pressed(true); } else { favorite_list.erase(name); favorite->set_pressed(false); } _save_favorite_list(); _update_favorite_list(); }
void CreateDialog::drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) { Dictionary d = p_data; TreeItem *ti = favorites->get_item_at_position(p_point); if (!ti) return; String drop_at = ti->get_text(0); int ds = favorites->get_drop_section_at_position(p_point); int drop_idx = favorite_list.find(drop_at); if (drop_idx < 0) return; String type = d["class"]; int from_idx = favorite_list.find(type); if (from_idx < 0) return; if (drop_idx == from_idx) { ds = -1; //cause it will be gone } else if (drop_idx > from_idx) { drop_idx--; } favorite_list.remove(from_idx); if (ds < 0) { favorite_list.insert(drop_idx, type); } else { if (drop_idx >= favorite_list.size() - 1) { favorite_list.push_back(type); } else { favorite_list.insert(drop_idx + 1, type); } } _save_favorite_list(); _update_favorite_list(); }
void CreateDialog::_save_and_update_favorite_list() { _save_favorite_list(); _update_favorite_list(); }