sprite selection rectangle updates again (fixes issue 10936)

sprite selection rectangle was not updating in real time when dragging or rotating sprites; undoing translation/rotation changes did not update sprite rectangles either.
This commit is contained in:
poke1024 2017-09-12 18:44:32 +02:00
parent 647a914155
commit 9ba92f5baa
1 changed files with 10 additions and 5 deletions

View File

@ -2301,19 +2301,24 @@ void CanvasItemEditor::_notification(int p_what) {
Rect2 r = canvas_item->get_item_rect(); Rect2 r = canvas_item->get_item_rect();
Transform2D xform = canvas_item->get_transform(); Transform2D xform = canvas_item->get_transform();
float anchors[4]; if (r != se->prev_rect || xform != se->prev_xform) {
Vector2 pivot; viewport->update();
se->prev_rect = r;
se->prev_xform = xform;
}
if (Object::cast_to<Control>(canvas_item)) { if (Object::cast_to<Control>(canvas_item)) {
float anchors[4];
Vector2 pivot;
pivot = Object::cast_to<Control>(canvas_item)->get_pivot_offset(); pivot = Object::cast_to<Control>(canvas_item)->get_pivot_offset();
anchors[MARGIN_LEFT] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_LEFT); anchors[MARGIN_LEFT] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_LEFT);
anchors[MARGIN_RIGHT] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_RIGHT); anchors[MARGIN_RIGHT] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_RIGHT);
anchors[MARGIN_TOP] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_TOP); anchors[MARGIN_TOP] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_TOP);
anchors[MARGIN_BOTTOM] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_BOTTOM); anchors[MARGIN_BOTTOM] = Object::cast_to<Control>(canvas_item)->get_anchor(MARGIN_BOTTOM);
if (r != se->prev_rect || xform != se->prev_xform || pivot != se->prev_pivot || anchors[MARGIN_LEFT] != se->prev_anchors[MARGIN_LEFT] || anchors[MARGIN_RIGHT] != se->prev_anchors[MARGIN_RIGHT] || anchors[MARGIN_TOP] != se->prev_anchors[MARGIN_TOP] || anchors[MARGIN_BOTTOM] != se->prev_anchors[MARGIN_BOTTOM]) { if (pivot != se->prev_pivot || anchors[MARGIN_LEFT] != se->prev_anchors[MARGIN_LEFT] || anchors[MARGIN_RIGHT] != se->prev_anchors[MARGIN_RIGHT] || anchors[MARGIN_TOP] != se->prev_anchors[MARGIN_TOP] || anchors[MARGIN_BOTTOM] != se->prev_anchors[MARGIN_BOTTOM]) {
viewport->update(); viewport->update();
se->prev_rect = r;
se->prev_xform = xform;
se->prev_pivot = pivot; se->prev_pivot = pivot;
se->prev_anchors[MARGIN_LEFT] = anchors[MARGIN_LEFT]; se->prev_anchors[MARGIN_LEFT] = anchors[MARGIN_LEFT];
se->prev_anchors[MARGIN_RIGHT] = anchors[MARGIN_RIGHT]; se->prev_anchors[MARGIN_RIGHT] = anchors[MARGIN_RIGHT];