EditorPropertyArray Fix crash when drag-reordering elements in the inspector
This commit is contained in:
parent
4ded1ef482
commit
33b2970492
|
@ -607,11 +607,16 @@ void EditorPropertyArray::_reorder_button_gui_input(const Ref<InputEvent> &p_eve
|
||||||
Variant array = object->get_array();
|
Variant array = object->get_array();
|
||||||
int size = array.call("size");
|
int size = array.call("size");
|
||||||
|
|
||||||
if ((reorder_to_index == 0 && mm->get_relative().y < 0.0f) || (reorder_to_index == size - 1 && mm->get_relative().y > 0.0f)) {
|
// Cumulate the mouse delta, many small changes (dragging slowly) should result in reordering at some point.
|
||||||
|
reorder_mouse_y_delta += mm->get_relative().y;
|
||||||
|
|
||||||
|
// Reordering is done by moving the dragged element by +1/-1 index at a time based on the cumulated mouse delta so if
|
||||||
|
// already at the array bounds make sure to ignore the remaining out of bounds drag (by resetting the cumulated delta).
|
||||||
|
if ((reorder_to_index == 0 && reorder_mouse_y_delta < 0.0f) || (reorder_to_index == size - 1 && reorder_mouse_y_delta > 0.0f)) {
|
||||||
|
reorder_mouse_y_delta = 0.0f;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
reorder_mouse_y_delta += mm->get_relative().y;
|
|
||||||
float required_y_distance = 20.0f * EDSCALE;
|
float required_y_distance = 20.0f * EDSCALE;
|
||||||
if (ABS(reorder_mouse_y_delta) > required_y_distance) {
|
if (ABS(reorder_mouse_y_delta) > required_y_distance) {
|
||||||
int direction = reorder_mouse_y_delta > 0.0f ? 1 : -1;
|
int direction = reorder_mouse_y_delta > 0.0f ? 1 : -1;
|
||||||
|
|
Loading…
Reference in New Issue