mirror of
https://github.com/tiennm99/godot.git
synced 2026-08-22 22:24:04 +00:00
Better and non-buggy Polygon2D editing disabling
This commit is contained in:
@@ -275,9 +275,30 @@ void AbstractPolygon2DEditor::_wip_close() {
|
||||
selected_point = Vertex();
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::disable_polygon_editing(bool p_disable, String p_reason) {
|
||||
|
||||
_polygon_editing_enabled = !p_disable;
|
||||
|
||||
button_create->set_disabled(p_disable);
|
||||
button_edit->set_disabled(p_disable);
|
||||
button_delete->set_disabled(p_disable);
|
||||
|
||||
if (p_disable) {
|
||||
|
||||
button_create->set_tooltip(p_reason);
|
||||
button_edit->set_tooltip(p_reason);
|
||||
button_delete->set_tooltip(p_reason);
|
||||
} else {
|
||||
|
||||
button_create->set_tooltip(TTR("Create points."));
|
||||
button_edit->set_tooltip(TTR("Edit points.\nLMB: Move Point\nRMB: Erase Point"));
|
||||
button_delete->set_tooltip(TTR("Erase points."));
|
||||
}
|
||||
}
|
||||
|
||||
bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
|
||||
|
||||
if (!_get_node())
|
||||
if (!_get_node() || !_polygon_editing_enabled)
|
||||
return false;
|
||||
|
||||
Ref<InputEventMouseButton> mb = p_event;
|
||||
@@ -627,9 +648,8 @@ void AbstractPolygon2DEditor::forward_canvas_draw_over_viewport(Control *p_overl
|
||||
|
||||
void AbstractPolygon2DEditor::edit(Node *p_polygon) {
|
||||
|
||||
if (!canvas_item_editor) {
|
||||
if (!canvas_item_editor)
|
||||
canvas_item_editor = CanvasItemEditor::get_singleton();
|
||||
}
|
||||
|
||||
if (p_polygon) {
|
||||
|
||||
@@ -648,7 +668,6 @@ void AbstractPolygon2DEditor::edit(Node *p_polygon) {
|
||||
selected_point = Vertex();
|
||||
|
||||
canvas_item_editor->update_viewport();
|
||||
|
||||
} else {
|
||||
|
||||
_set_node(NULL);
|
||||
@@ -778,24 +797,23 @@ AbstractPolygon2DEditor::AbstractPolygon2DEditor(EditorNode *p_editor, bool p_wi
|
||||
selected_point = Vertex();
|
||||
edge_point = PosVertex();
|
||||
|
||||
disable_polygon_editing(false, String());
|
||||
|
||||
add_child(memnew(VSeparator));
|
||||
button_create = memnew(ToolButton);
|
||||
add_child(button_create);
|
||||
button_create->connect("pressed", this, "_menu_option", varray(MODE_CREATE));
|
||||
button_create->set_toggle_mode(true);
|
||||
button_create->set_tooltip(TTR("Create points."));
|
||||
|
||||
button_edit = memnew(ToolButton);
|
||||
add_child(button_edit);
|
||||
button_edit->connect("pressed", this, "_menu_option", varray(MODE_EDIT));
|
||||
button_edit->set_toggle_mode(true);
|
||||
button_edit->set_tooltip(TTR("Edit points.\nLMB: Move Point\nRMB: Erase Point"));
|
||||
|
||||
button_delete = memnew(ToolButton);
|
||||
add_child(button_delete);
|
||||
button_delete->connect("pressed", this, "_menu_option", varray(MODE_DELETE));
|
||||
button_delete->set_toggle_mode(true);
|
||||
button_delete->set_tooltip(TTR("Erase points."));
|
||||
|
||||
create_resource = memnew(ConfirmationDialog);
|
||||
add_child(create_resource);
|
||||
|
||||
Reference in New Issue
Block a user