Pārlūkot izejas kodu

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.
poke1024 8 gadi atpakaļ
vecāks
revīzija
9ba92f5baa
1 mainītis faili ar 10 papildinājumiem un 5 dzēšanām
  1. 10 5
      editor/plugins/canvas_item_editor_plugin.cpp

+ 10 - 5
editor/plugins/canvas_item_editor_plugin.cpp

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