summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/object.cpp2
-rw-r--r--editor/plugins/curve_editor_plugin.cpp28
2 files changed, 17 insertions, 13 deletions
diff --git a/core/object.cpp b/core/object.cpp
index e1bc4b97f0..b643aecdd8 100644
--- a/core/object.cpp
+++ b/core/object.cpp
@@ -1519,7 +1519,7 @@ void Object::_disconnect(const StringName &p_signal, Object *p_to_object, const
Signal *s = signal_map.getptr(p_signal);
ERR_FAIL_COND_MSG(!s, "Nonexistent signal: " + p_signal + ".");
- ERR_FAIL_COND_MSG(s->lock > 0, "Attempt to disconnect signal '" + p_signal + "' while emitting (locks: " + itos(s->lock) + ").");
+ ERR_FAIL_COND_MSG(s->lock > 0, "Attempt to disconnect signal '" + p_signal + "' while in emission callback. Use CONNECT_DEFERRED (to be able to safely disconnect) or CONNECT_ONESHOT (for automatic disconnection) as connection flags.");
Signal::Target target(p_to_object->get_instance_id(), p_to_method);
diff --git a/editor/plugins/curve_editor_plugin.cpp b/editor/plugins/curve_editor_plugin.cpp
index 727d92ba05..6e15bad9af 100644
--- a/editor/plugins/curve_editor_plugin.cpp
+++ b/editor/plugins/curve_editor_plugin.cpp
@@ -510,8 +510,8 @@ void CurveEditor::set_hover_point_index(int index) {
}
void CurveEditor::update_view_transform() {
- Vector2 control_size = get_size();
- const real_t margin = 24;
+ Ref<Font> font = get_font("font", "Label");
+ const real_t margin = font->get_height() + 2 * EDSCALE;
float min_y = 0;
float max_y = 1;
@@ -521,15 +521,19 @@ void CurveEditor::update_view_transform() {
max_y = _curve_ref->get_max_value();
}
- Rect2 world_rect = Rect2(Curve::MIN_X, min_y, Curve::MAX_X, max_y - min_y);
- Vector2 wm = Vector2(margin, margin) / control_size;
- wm.y *= (max_y - min_y);
- world_rect.position -= wm;
- world_rect.size += 2.0 * wm;
+ const Rect2 world_rect = Rect2(Curve::MIN_X, min_y, Curve::MAX_X, max_y - min_y);
+ const Size2 view_margin(margin, margin);
+ const Size2 view_size = get_size() - view_margin * 2;
+ const Vector2 scale = view_size / world_rect.size;
+
+ Transform2D world_trans;
+ world_trans.translate(-world_rect.position - Vector2(0, world_rect.size.y));
+ world_trans.scale(Vector2(scale.x, -scale.y));
+
+ Transform2D view_trans;
+ view_trans.translate(view_margin);
- _world_to_view = Transform2D();
- _world_to_view.translate(-world_rect.position - Vector2(0, world_rect.size.y));
- _world_to_view.scale(Vector2(control_size.x, -control_size.y) / world_rect.size);
+ _world_to_view = view_trans * world_trans;
}
Vector2 CurveEditor::get_tangent_view_pos(int i, TangentIndex tangent) const {
@@ -735,10 +739,10 @@ void CurveEditor::_draw() {
if (_selected_point > 0 && _selected_point + 1 < curve.get_point_count()) {
text_color.a *= 0.4;
- draw_string(font, Vector2(50, font_height), TTR("Hold Shift to edit tangents individually"), text_color);
+ draw_string(font, Vector2(50 * EDSCALE, font_height), TTR("Hold Shift to edit tangents individually"), text_color);
} else if (curve.get_point_count() == 0) {
text_color.a *= 0.4;
- draw_string(font, Vector2(50, font_height), TTR("Right click to add point"), text_color);
+ draw_string(font, Vector2(50 * EDSCALE, font_height), TTR("Right click to add point"), text_color);
}
}