Merge pull request #16667 from vnen/remove-container-control
Add a function to remove controls from containers
This commit is contained in:
commit
ba106ae51c
7 changed files with 72 additions and 0 deletions
|
@ -274,6 +274,17 @@
|
|||
Remove the control from the bottom panel. Don't forget to call this if you added one, so the editor can remove it cleanly.
|
||||
</description>
|
||||
</method>
|
||||
<method name="remove_control_from_container">
|
||||
<return type="void">
|
||||
</return>
|
||||
<argument index="0" name="container" type="int" enum="EditorPlugin.CustomControlContainer">
|
||||
</argument>
|
||||
<argument index="1" name="control" type="Control">
|
||||
</argument>
|
||||
<description>
|
||||
Remove the control from the specified container. Use it when cleaning up after adding a control with [method add_control_to_container]. Note that you can simply free the control if you won't use it anymore.
|
||||
</description>
|
||||
</method>
|
||||
<method name="remove_control_from_docks">
|
||||
<return type="void">
|
||||
</return>
|
||||
|
|
|
@ -373,6 +373,53 @@ void EditorPlugin::add_control_to_container(CustomControlContainer p_location, C
|
|||
}
|
||||
}
|
||||
|
||||
void EditorPlugin::remove_control_from_container(CustomControlContainer p_location, Control *p_control) {
|
||||
|
||||
switch (p_location) {
|
||||
|
||||
case CONTAINER_TOOLBAR: {
|
||||
|
||||
EditorNode::get_menu_hb()->remove_child(p_control);
|
||||
} break;
|
||||
|
||||
case CONTAINER_SPATIAL_EDITOR_MENU: {
|
||||
|
||||
SpatialEditor::get_singleton()->remove_control_from_menu_panel(p_control);
|
||||
|
||||
} break;
|
||||
case CONTAINER_SPATIAL_EDITOR_SIDE: {
|
||||
|
||||
SpatialEditor::get_singleton()->get_palette_split()->remove_child(p_control);
|
||||
|
||||
} break;
|
||||
case CONTAINER_SPATIAL_EDITOR_BOTTOM: {
|
||||
|
||||
SpatialEditor::get_singleton()->get_shader_split()->remove_child(p_control);
|
||||
|
||||
} break;
|
||||
case CONTAINER_CANVAS_EDITOR_MENU: {
|
||||
|
||||
CanvasItemEditor::get_singleton()->remove_control_from_menu_panel(p_control);
|
||||
|
||||
} break;
|
||||
case CONTAINER_CANVAS_EDITOR_SIDE: {
|
||||
|
||||
CanvasItemEditor::get_singleton()->get_palette_split()->remove_child(p_control);
|
||||
|
||||
} break;
|
||||
case CONTAINER_CANVAS_EDITOR_BOTTOM: {
|
||||
|
||||
CanvasItemEditor::get_singleton()->get_bottom_split()->remove_child(p_control);
|
||||
|
||||
} break;
|
||||
case CONTAINER_PROPERTY_EDITOR_BOTTOM: {
|
||||
|
||||
EditorNode::get_singleton()->get_property_editor_vb()->remove_child(p_control);
|
||||
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
void EditorPlugin::add_tool_menu_item(const String &p_name, Object *p_handler, const String &p_callback, const Variant &p_ud) {
|
||||
|
||||
//EditorNode::get_singleton()->add_tool_menu_item(p_name, p_handler, p_callback, p_ud);
|
||||
|
@ -651,6 +698,7 @@ void EditorPlugin::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("add_control_to_dock", "slot", "control"), &EditorPlugin::add_control_to_dock);
|
||||
ClassDB::bind_method(D_METHOD("remove_control_from_docks", "control"), &EditorPlugin::remove_control_from_docks);
|
||||
ClassDB::bind_method(D_METHOD("remove_control_from_bottom_panel", "control"), &EditorPlugin::remove_control_from_bottom_panel);
|
||||
ClassDB::bind_method(D_METHOD("remove_control_from_container", "container", "control"), &EditorPlugin::remove_control_from_container);
|
||||
//ClassDB::bind_method(D_METHOD("add_tool_menu_item", "name", "handler", "callback", "ud"),&EditorPlugin::add_tool_menu_item,DEFVAL(Variant()));
|
||||
ClassDB::bind_method(D_METHOD("add_tool_submenu_item", "name", "submenu"), &EditorPlugin::add_tool_submenu_item);
|
||||
//ClassDB::bind_method(D_METHOD("remove_tool_menu_item", "name"),&EditorPlugin::remove_tool_menu_item);
|
||||
|
|
|
@ -148,6 +148,7 @@ public:
|
|||
//TODO: send a resource for editing to the editor node?
|
||||
|
||||
void add_control_to_container(CustomControlContainer p_location, Control *p_control);
|
||||
void remove_control_from_container(CustomControlContainer p_location, Control *p_control);
|
||||
ToolButton *add_control_to_bottom_panel(Control *p_control, const String &p_title);
|
||||
void add_control_to_dock(DockSlot p_slot, Control *p_control);
|
||||
void remove_control_from_docks(Control *p_control);
|
||||
|
|
|
@ -4002,6 +4002,11 @@ void CanvasItemEditor::add_control_to_menu_panel(Control *p_control) {
|
|||
hb->add_child(p_control);
|
||||
}
|
||||
|
||||
void CanvasItemEditor::remove_control_from_menu_panel(Control *p_control) {
|
||||
|
||||
hb->remove_child(p_control);
|
||||
}
|
||||
|
||||
HSplitContainer *CanvasItemEditor::get_palette_split() {
|
||||
|
||||
return palette_split;
|
||||
|
|
|
@ -509,6 +509,7 @@ public:
|
|||
void set_state(const Dictionary &p_state);
|
||||
|
||||
void add_control_to_menu_panel(Control *p_control);
|
||||
void remove_control_from_menu_panel(Control *p_control);
|
||||
|
||||
HSplitContainer *get_palette_split();
|
||||
VSplitContainer *get_bottom_split();
|
||||
|
|
|
@ -4778,6 +4778,11 @@ void SpatialEditor::add_control_to_menu_panel(Control *p_control) {
|
|||
hbc_menu->add_child(p_control);
|
||||
}
|
||||
|
||||
void SpatialEditor::remove_control_from_menu_panel(Control *p_control) {
|
||||
|
||||
hbc_menu->remove_child(p_control);
|
||||
}
|
||||
|
||||
void SpatialEditor::set_can_preview(Camera *p_preview) {
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
|
|
|
@ -605,6 +605,7 @@ public:
|
|||
UndoRedo *get_undo_redo() { return undo_redo; }
|
||||
|
||||
void add_control_to_menu_panel(Control *p_control);
|
||||
void remove_control_from_menu_panel(Control *p_control);
|
||||
|
||||
VSplitContainer *get_shader_split();
|
||||
HSplitContainer *get_palette_split();
|
||||
|
|
Loading…
Reference in a new issue