Fix wrong guideline values shown during dragging
Suppose that the user wants to use some guidelines in 2D mode. The user has enabled "Use Pixel Snap", and configured the "Grid Step" to 1px. On some zoom levels, when dragging the guidelines step by step, some offsets shows the wrong value. The offsets that are wrong vary - it is affected by the zoom level, so some zoom levels do not display this problem. For example, a user may see this while dragging the guideline: 0px 1px 1px 3px 4px 5px 5px 7px 8px whereby 2px and 6px are missing. This is due to a floating-point error. The values are printed as (truncated) integers, but they are actually decimals, so they were actually 1.9999 and 5.9999 for the missing cases. Let's fix that by rounding up the values before printing them to get rid of the errors. This fixes #35010.
This commit is contained in:
parent
97cc2e53f6
commit
ee2f406c73
1 changed files with 2 additions and 2 deletions
|
@ -2599,14 +2599,14 @@ void CanvasItemEditor::_draw_guides() {
|
|||
Color text_color = get_color("font_color", "Editor");
|
||||
text_color.a = 0.5;
|
||||
if (drag_type == DRAG_DOUBLE_GUIDE || drag_type == DRAG_V_GUIDE) {
|
||||
String str = vformat("%d px", xform.affine_inverse().xform(dragged_guide_pos).x);
|
||||
String str = vformat("%d px", Math::round(xform.affine_inverse().xform(dragged_guide_pos).x));
|
||||
Ref<Font> font = get_font("font", "Label");
|
||||
Size2 text_size = font->get_string_size(str);
|
||||
viewport->draw_string(font, Point2(dragged_guide_pos.x + 10, RULER_WIDTH + text_size.y / 2 + 10), str, text_color);
|
||||
viewport->draw_line(Point2(dragged_guide_pos.x, 0), Point2(dragged_guide_pos.x, viewport->get_size().y), guide_color, Math::round(EDSCALE));
|
||||
}
|
||||
if (drag_type == DRAG_DOUBLE_GUIDE || drag_type == DRAG_H_GUIDE) {
|
||||
String str = vformat("%d px", xform.affine_inverse().xform(dragged_guide_pos).y);
|
||||
String str = vformat("%d px", Math::round(xform.affine_inverse().xform(dragged_guide_pos).y));
|
||||
Ref<Font> font = get_font("font", "Label");
|
||||
Size2 text_size = font->get_string_size(str);
|
||||
viewport->draw_string(font, Point2(RULER_WIDTH + 10, dragged_guide_pos.y + text_size.y / 2 + 10), str, text_color);
|
||||
|
|
Loading…
Reference in a new issue