Allow negative indexes in ItemList and PopupMenu
This commit is contained in:
parent
d5076439e4
commit
42078dec9f
25 changed files with 163 additions and 59 deletions
|
|
@ -1670,11 +1670,11 @@ AnimationPlayerEditor::AnimationPlayerEditor(AnimationPlayerEditorPlugin *p_plug
|
|||
onion_skinning->set_tooltip(TTR("Onion Skinning Options"));
|
||||
onion_skinning->get_popup()->add_separator(TTR("Directions"));
|
||||
onion_skinning->get_popup()->add_check_item(TTR("Past"), ONION_SKINNING_PAST);
|
||||
onion_skinning->get_popup()->set_item_checked(onion_skinning->get_popup()->get_item_count() - 1, true);
|
||||
onion_skinning->get_popup()->set_item_checked(-1, true);
|
||||
onion_skinning->get_popup()->add_check_item(TTR("Future"), ONION_SKINNING_FUTURE);
|
||||
onion_skinning->get_popup()->add_separator(TTR("Depth"));
|
||||
onion_skinning->get_popup()->add_radio_check_item(TTR("1 step"), ONION_SKINNING_1_STEP);
|
||||
onion_skinning->get_popup()->set_item_checked(onion_skinning->get_popup()->get_item_count() - 1, true);
|
||||
onion_skinning->get_popup()->set_item_checked(-1, true);
|
||||
onion_skinning->get_popup()->add_radio_check_item(TTR("2 steps"), ONION_SKINNING_2_STEPS);
|
||||
onion_skinning->get_popup()->add_radio_check_item(TTR("3 steps"), ONION_SKINNING_3_STEPS);
|
||||
onion_skinning->get_popup()->add_separator();
|
||||
|
|
|
|||
|
|
@ -1145,7 +1145,7 @@ void EditorAssetLibrary::_http_request_completed(int p_status, int p_code, const
|
|||
String name = cat["name"];
|
||||
int id = cat["id"];
|
||||
categories->add_item(name);
|
||||
categories->set_item_metadata(categories->get_item_count() - 1, id);
|
||||
categories->set_item_metadata(-1, id);
|
||||
category_map[cat["id"]] = name;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,30 +63,24 @@ DebuggerEditorPlugin::DebuggerEditorPlugin(MenuButton *p_debug_menu) {
|
|||
PopupMenu *p = debug_menu->get_popup();
|
||||
p->set_hide_on_checkable_item_selection(false);
|
||||
p->add_check_shortcut(ED_SHORTCUT("editor/deploy_with_remote_debug", TTR("Deploy with Remote Debug")), RUN_DEPLOY_REMOTE_DEBUG);
|
||||
p->set_item_tooltip(
|
||||
p->get_item_count() - 1,
|
||||
p->set_item_tooltip(-1,
|
||||
TTR("When this option is enabled, using one-click deploy will make the executable attempt to connect to this computer's IP so the running project can be debugged.\nThis option is intended to be used for remote debugging (typically with a mobile device).\nYou don't need to enable it to use the GDScript debugger locally."));
|
||||
p->add_check_shortcut(ED_SHORTCUT("editor/small_deploy_with_network_fs", TTR("Small Deploy with Network Filesystem")), RUN_FILE_SERVER);
|
||||
p->set_item_tooltip(
|
||||
p->get_item_count() - 1,
|
||||
p->set_item_tooltip(-1,
|
||||
TTR("When this option is enabled, using one-click deploy for Android will only export an executable without the project data.\nThe filesystem will be provided from the project by the editor over the network.\nOn Android, deploying will use the USB cable for faster performance. This option speeds up testing for projects with large assets."));
|
||||
p->add_separator();
|
||||
p->add_check_shortcut(ED_SHORTCUT("editor/visible_collision_shapes", TTR("Visible Collision Shapes")), RUN_DEBUG_COLLISONS);
|
||||
p->set_item_tooltip(
|
||||
p->get_item_count() - 1,
|
||||
p->set_item_tooltip(-1,
|
||||
TTR("When this option is enabled, collision shapes and raycast nodes (for 2D and 3D) will be visible in the running project."));
|
||||
p->add_check_shortcut(ED_SHORTCUT("editor/visible_navigation", TTR("Visible Navigation")), RUN_DEBUG_NAVIGATION);
|
||||
p->set_item_tooltip(
|
||||
p->get_item_count() - 1,
|
||||
p->set_item_tooltip(-1,
|
||||
TTR("When this option is enabled, navigation meshes and polygons will be visible in the running project."));
|
||||
p->add_separator();
|
||||
p->add_check_shortcut(ED_SHORTCUT("editor/sync_scene_changes", TTR("Synchronize Scene Changes")), RUN_LIVE_DEBUG);
|
||||
p->set_item_tooltip(
|
||||
p->get_item_count() - 1,
|
||||
p->set_item_tooltip(-1,
|
||||
TTR("When this option is enabled, any changes made to the scene in the editor will be replicated in the running project.\nWhen used remotely on a device, this is more efficient when the network filesystem option is enabled."));
|
||||
p->add_check_shortcut(ED_SHORTCUT("editor/sync_script_changes", TTR("Synchronize Script Changes")), RUN_RELOAD_SCRIPTS);
|
||||
p->set_item_tooltip(
|
||||
p->get_item_count() - 1,
|
||||
p->set_item_tooltip(-1,
|
||||
TTR("When this option is enabled, any script that is saved will be reloaded in the running project.\nWhen used remotely on a device, this is more efficient when the network filesystem option is enabled."));
|
||||
|
||||
// Multi-instance, start/stop
|
||||
|
|
|
|||
|
|
@ -447,16 +447,16 @@ MeshInstance3DEditor::MeshInstance3DEditor() {
|
|||
options->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("MeshInstance3D"), SNAME("EditorIcons")));
|
||||
|
||||
options->get_popup()->add_item(TTR("Create Trimesh Static Body"), MENU_OPTION_CREATE_STATIC_TRIMESH_BODY);
|
||||
options->get_popup()->set_item_tooltip(options->get_popup()->get_item_count() - 1, TTR("Creates a StaticBody3D and assigns a polygon-based collision shape to it automatically.\nThis is the most accurate (but slowest) option for collision detection."));
|
||||
options->get_popup()->set_item_tooltip(-1, TTR("Creates a StaticBody3D and assigns a polygon-based collision shape to it automatically.\nThis is the most accurate (but slowest) option for collision detection."));
|
||||
options->get_popup()->add_separator();
|
||||
options->get_popup()->add_item(TTR("Create Trimesh Collision Sibling"), MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE);
|
||||
options->get_popup()->set_item_tooltip(options->get_popup()->get_item_count() - 1, TTR("Creates a polygon-based collision shape.\nThis is the most accurate (but slowest) option for collision detection."));
|
||||
options->get_popup()->set_item_tooltip(-1, TTR("Creates a polygon-based collision shape.\nThis is the most accurate (but slowest) option for collision detection."));
|
||||
options->get_popup()->add_item(TTR("Create Single Convex Collision Sibling"), MENU_OPTION_CREATE_SINGLE_CONVEX_COLLISION_SHAPE);
|
||||
options->get_popup()->set_item_tooltip(options->get_popup()->get_item_count() - 1, TTR("Creates a single convex collision shape.\nThis is the fastest (but least accurate) option for collision detection."));
|
||||
options->get_popup()->set_item_tooltip(-1, TTR("Creates a single convex collision shape.\nThis is the fastest (but least accurate) option for collision detection."));
|
||||
options->get_popup()->add_item(TTR("Create Simplified Convex Collision Sibling"), MENU_OPTION_CREATE_SIMPLIFIED_CONVEX_COLLISION_SHAPE);
|
||||
options->get_popup()->set_item_tooltip(options->get_popup()->get_item_count() - 1, TTR("Creates a simplified convex collision shape.\nThis is similar to single collision shape, but can result in a simpler geometry in some cases, at the cost of accuracy."));
|
||||
options->get_popup()->set_item_tooltip(-1, TTR("Creates a simplified convex collision shape.\nThis is similar to single collision shape, but can result in a simpler geometry in some cases, at the cost of accuracy."));
|
||||
options->get_popup()->add_item(TTR("Create Multiple Convex Collision Siblings"), MENU_OPTION_CREATE_MULTIPLE_CONVEX_COLLISION_SHAPES);
|
||||
options->get_popup()->set_item_tooltip(options->get_popup()->get_item_count() - 1, TTR("Creates a polygon-based collision shape.\nThis is a performance middle-ground between a single convex collision and a polygon-based collision."));
|
||||
options->get_popup()->set_item_tooltip(-1, TTR("Creates a polygon-based collision shape.\nThis is a performance middle-ground between a single convex collision and a polygon-based collision."));
|
||||
options->get_popup()->add_separator();
|
||||
options->get_popup()->add_item(TTR("Create Navigation Mesh"), MENU_OPTION_CREATE_NAVMESH);
|
||||
options->get_popup()->add_separator();
|
||||
|
|
|
|||
|
|
@ -1881,7 +1881,7 @@ void ScriptEditor::_update_members_overview() {
|
|||
String name = functions[i].get_slice(":", 0);
|
||||
if (filter.is_empty() || filter.is_subsequence_ofn(name)) {
|
||||
members_overview->add_item(name);
|
||||
members_overview->set_item_metadata(members_overview->get_item_count() - 1, functions[i].get_slice(":", 1).to_int() - 1);
|
||||
members_overview->set_item_metadata(-1, functions[i].get_slice(":", 1).to_int() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2139,7 +2139,7 @@ void ScriptEditor::_update_script_names() {
|
|||
for (int i = 0; i < sedata_filtered.size(); i++) {
|
||||
script_list->add_item(sedata_filtered[i].name, sedata_filtered[i].icon);
|
||||
if (sedata_filtered[i].tool) {
|
||||
script_list->set_item_icon_modulate(script_list->get_item_count() - 1, tool_color);
|
||||
script_list->set_item_icon_modulate(-1, tool_color);
|
||||
}
|
||||
|
||||
int index = script_list->get_item_count() - 1;
|
||||
|
|
|
|||
|
|
@ -579,7 +579,7 @@ void ScriptTextEditor::_update_bookmark_list() {
|
|||
}
|
||||
|
||||
bookmarks_menu->add_item(String::num((int)bookmark_list[i] + 1) + " - `" + line + "`");
|
||||
bookmarks_menu->set_item_metadata(bookmarks_menu->get_item_count() - 1, bookmark_list[i]);
|
||||
bookmarks_menu->set_item_metadata(-1, bookmark_list[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -731,7 +731,7 @@ void ScriptTextEditor::_update_breakpoint_list() {
|
|||
}
|
||||
|
||||
breakpoints_menu->add_item(String::num((int)breakpoint_list[i] + 1) + " - `" + line + "`");
|
||||
breakpoints_menu->set_item_metadata(breakpoints_menu->get_item_count() - 1, breakpoint_list[i]);
|
||||
breakpoints_menu->set_item_metadata(-1, breakpoint_list[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -647,7 +647,7 @@ void ShaderEditor::_update_bookmark_list() {
|
|||
}
|
||||
|
||||
bookmarks_menu->add_item(String::num((int)bookmark_list[i] + 1) + " - \"" + line + "\"");
|
||||
bookmarks_menu->set_item_metadata(bookmarks_menu->get_item_count() - 1, bookmark_list[i]);
|
||||
bookmarks_menu->set_item_metadata(-1, bookmark_list[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -847,7 +847,7 @@ void SpriteFramesEditor::_update_library(bool p_skip_selector) {
|
|||
at = at->get_atlas();
|
||||
}
|
||||
|
||||
tree->set_item_tooltip(tree->get_item_count() - 1, tooltip);
|
||||
tree->set_item_tooltip(-1, tooltip);
|
||||
}
|
||||
if (sel == i) {
|
||||
tree->select(tree->get_item_count() - 1);
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ void TextEditor::_update_bookmark_list() {
|
|||
}
|
||||
|
||||
bookmarks_menu->add_item(String::num((int)bookmark_list[i] + 1) + " - \"" + line + "\"");
|
||||
bookmarks_menu->set_item_metadata(bookmarks_menu->get_item_count() - 1, bookmark_list[i]);
|
||||
bookmarks_menu->set_item_metadata(-1, bookmark_list[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ void AtlasMergingDialog::update_tile_set(Ref<TileSet> p_tile_set) {
|
|||
if (texture.is_valid()) {
|
||||
String item_text = vformat("%s (id:%d)", texture->get_path().get_file(), source_id);
|
||||
atlas_merging_atlases_list->add_item(item_text, texture);
|
||||
atlas_merging_atlases_list->set_item_metadata(atlas_merging_atlases_list->get_item_count() - 1, source_id);
|
||||
atlas_merging_atlases_list->set_item_metadata(-1, source_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ void TileMapEditorTilesPlugin::_update_tile_set_sources_list() {
|
|||
}
|
||||
|
||||
sources_list->add_item(item_text, texture);
|
||||
sources_list->set_item_metadata(sources_list->get_item_count() - 1, source_id);
|
||||
sources_list->set_item_metadata(-1, source_id);
|
||||
}
|
||||
|
||||
if (sources_list->get_item_count() > 0) {
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ void TileSetEditor::_update_sources_list(int force_selected_id) {
|
|||
}
|
||||
|
||||
sources_list->add_item(item_text, texture);
|
||||
sources_list->set_item_metadata(sources_list->get_item_count() - 1, source_id);
|
||||
sources_list->set_item_metadata(-1, source_id);
|
||||
}
|
||||
|
||||
// Set again the current selected item if needed.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue