@@ -2736,175 +2736,173 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) {
27362736}
27372737
27382738void CanvasItemEditor::_commit_drag () {
2739- if (drag_selection.is_empty ()) {
2740- return ;
2741- }
2742-
2743- switch (drag_type) {
2744- // Confirm the pivot move.
2745- case DRAG_PIVOT: {
2746- _commit_canvas_item_state (
2747- drag_selection,
2748- vformat (
2749- TTR (" Set CanvasItem \" %s\" Pivot Offset to (%d, %d)" ),
2750- drag_selection.front ()->get ()->get_name (),
2751- drag_selection.front ()->get ()->_edit_get_pivot ().x ,
2752- drag_selection.front ()->get ()->_edit_get_pivot ().y ));
2753- } break ;
2754-
2755- // Confirm the node rotation.
2756- case DRAG_ROTATE: {
2757- if (drag_selection.size () != 1 ) {
2758- _commit_canvas_item_state (
2759- drag_selection,
2760- vformat (TTR (" Rotate %d CanvasItems" ), drag_selection.size ()),
2761- true );
2762- } else {
2739+ if (!drag_selection.is_empty ()) {
2740+ switch (drag_type) {
2741+ // Confirm the pivot move.
2742+ case DRAG_PIVOT: {
27632743 _commit_canvas_item_state (
27642744 drag_selection,
2765- vformat (TTR (" Rotate CanvasItem \" %s\" to %d degrees" ),
2745+ vformat (
2746+ TTR (" Set CanvasItem \" %s\" Pivot Offset to (%d, %d)" ),
27662747 drag_selection.front ()->get ()->get_name (),
2767- Math::rad_to_deg ( drag_selection.front ()->get ()->_edit_get_rotation ())) ,
2768- true );
2769- }
2748+ drag_selection.front ()->get ()->_edit_get_pivot (). x ,
2749+ drag_selection. front ()-> get ()-> _edit_get_pivot (). y ) );
2750+ } break ;
27702751
2771- if (key_auto_insert_button->is_pressed ()) {
2772- _insert_animation_keys (false , true , false , true );
2773- }
2774- } break ;
2752+ // Confirm the node rotation.
2753+ case DRAG_ROTATE: {
2754+ if (drag_selection.size () != 1 ) {
2755+ _commit_canvas_item_state (
2756+ drag_selection,
2757+ vformat (TTR (" Rotate %d CanvasItems" ), drag_selection.size ()),
2758+ true );
2759+ } else {
2760+ _commit_canvas_item_state (
2761+ drag_selection,
2762+ vformat (TTR (" Rotate CanvasItem \" %s\" to %d degrees" ),
2763+ drag_selection.front ()->get ()->get_name (),
2764+ Math::rad_to_deg (drag_selection.front ()->get ()->_edit_get_rotation ())),
2765+ true );
2766+ }
27752767
2776- // Confirm new anchor position.
2777- case DRAG_ANCHOR_TOP_LEFT:
2778- case DRAG_ANCHOR_TOP_RIGHT:
2779- case DRAG_ANCHOR_BOTTOM_RIGHT:
2780- case DRAG_ANCHOR_BOTTOM_LEFT:
2781- case DRAG_ANCHOR_ALL: {
2782- _commit_canvas_item_state (
2783- drag_selection,
2784- vformat (TTR (" Move CanvasItem \" %s\" Anchor" ), drag_selection.front ()->get ()->get_name ()));
2785- snap_target[0 ] = SNAP_TARGET_NONE;
2786- snap_target[1 ] = SNAP_TARGET_NONE;
2787- } break ;
2768+ if (key_auto_insert_button->is_pressed ()) {
2769+ _insert_animation_keys (false , true , false , true );
2770+ }
2771+ } break ;
27882772
2789- // Confirm resize.
2790- case DRAG_LEFT:
2791- case DRAG_RIGHT:
2792- case DRAG_TOP:
2793- case DRAG_BOTTOM:
2794- case DRAG_TOP_LEFT:
2795- case DRAG_TOP_RIGHT:
2796- case DRAG_BOTTOM_LEFT:
2797- case DRAG_BOTTOM_RIGHT: {
2798- const Node2D *node2d = Object::cast_to<Node2D>(drag_selection.front ()->get ());
2799- if (node2d) {
2800- // Extends from Node2D.
2801- // Node2D doesn't have an actual stored rect size, unlike Controls.
2802- _commit_canvas_item_state (
2803- drag_selection,
2804- vformat (
2805- TTR (" Scale Node2D \" %s\" to (%s, %s)" ),
2806- drag_selection.front ()->get ()->get_name (),
2807- Math::snapped (drag_selection.front ()->get ()->_edit_get_scale ().x , 0.01 ),
2808- Math::snapped (drag_selection.front ()->get ()->_edit_get_scale ().y , 0.01 )),
2809- true );
2810- } else {
2811- // Extends from Control.
2773+ // Confirm new anchor position.
2774+ case DRAG_ANCHOR_TOP_LEFT:
2775+ case DRAG_ANCHOR_TOP_RIGHT:
2776+ case DRAG_ANCHOR_BOTTOM_RIGHT:
2777+ case DRAG_ANCHOR_BOTTOM_LEFT:
2778+ case DRAG_ANCHOR_ALL: {
28122779 _commit_canvas_item_state (
28132780 drag_selection,
2814- vformat (
2815- TTR (" Resize Control \" %s\" to (%d, %d)" ),
2816- drag_selection.front ()->get ()->get_name (),
2817- drag_selection.front ()->get ()->_edit_get_rect ().size .x ,
2818- drag_selection.front ()->get ()->_edit_get_rect ().size .y ),
2819- true );
2820- }
2781+ vformat (TTR (" Move CanvasItem \" %s\" Anchor" ), drag_selection.front ()->get ()->get_name ()));
2782+ snap_target[0 ] = SNAP_TARGET_NONE;
2783+ snap_target[1 ] = SNAP_TARGET_NONE;
2784+ } break ;
28212785
2822- if (key_auto_insert_button->is_pressed ()) {
2823- _insert_animation_keys (false , false , true , true );
2824- }
2786+ // Confirm resize.
2787+ case DRAG_LEFT:
2788+ case DRAG_RIGHT:
2789+ case DRAG_TOP:
2790+ case DRAG_BOTTOM:
2791+ case DRAG_TOP_LEFT:
2792+ case DRAG_TOP_RIGHT:
2793+ case DRAG_BOTTOM_LEFT:
2794+ case DRAG_BOTTOM_RIGHT: {
2795+ const Node2D *node2d = Object::cast_to<Node2D>(drag_selection.front ()->get ());
2796+ if (node2d) {
2797+ // Extends from Node2D.
2798+ // Node2D doesn't have an actual stored rect size, unlike Controls.
2799+ _commit_canvas_item_state (
2800+ drag_selection,
2801+ vformat (
2802+ TTR (" Scale Node2D \" %s\" to (%s, %s)" ),
2803+ drag_selection.front ()->get ()->get_name (),
2804+ Math::snapped (drag_selection.front ()->get ()->_edit_get_scale ().x , 0.01 ),
2805+ Math::snapped (drag_selection.front ()->get ()->_edit_get_scale ().y , 0.01 )),
2806+ true );
2807+ } else {
2808+ // Extends from Control.
2809+ _commit_canvas_item_state (
2810+ drag_selection,
2811+ vformat (
2812+ TTR (" Resize Control \" %s\" to (%d, %d)" ),
2813+ drag_selection.front ()->get ()->get_name (),
2814+ drag_selection.front ()->get ()->_edit_get_rect ().size .x ,
2815+ drag_selection.front ()->get ()->_edit_get_rect ().size .y ),
2816+ true );
2817+ }
28252818
2826- snap_target[ 0 ] = SNAP_TARGET_NONE;
2827- snap_target[ 1 ] = SNAP_TARGET_NONE ;
2828- } break ;
2819+ if (key_auto_insert_button-> is_pressed ()) {
2820+ _insert_animation_keys ( false , false , true , true ) ;
2821+ }
28292822
2830- // Confirm resize.
2831- case DRAG_SCALE_BOTH:
2832- case DRAG_SCALE_X:
2833- case DRAG_SCALE_Y: {
2834- if (drag_selection.size () != 1 ) {
2835- _commit_canvas_item_state (
2836- drag_selection,
2837- vformat (TTR (" Scale %d CanvasItems" ), drag_selection.size ()),
2838- true );
2839- } else {
2840- _commit_canvas_item_state (
2841- drag_selection,
2842- vformat (TTR (" Scale CanvasItem \" %s\" to (%s, %s)" ),
2843- drag_selection.front ()->get ()->get_name (),
2844- Math::snapped (drag_selection.front ()->get ()->_edit_get_scale ().x , 0.01 ),
2845- Math::snapped (drag_selection.front ()->get ()->_edit_get_scale ().y , 0.01 )),
2846- true );
2847- }
2848- if (key_auto_insert_button->is_pressed ()) {
2849- _insert_animation_keys (false , false , true , true );
2850- }
2851- } break ;
2823+ snap_target[0 ] = SNAP_TARGET_NONE;
2824+ snap_target[1 ] = SNAP_TARGET_NONE;
2825+ } break ;
28522826
2853- // Confirm the canvas items move.
2854- case DRAG_MOVE:
2855- case DRAG_MOVE_X:
2856- case DRAG_MOVE_Y: {
2857- if (transform.affine_inverse ().xform (get_viewport ()->get_mouse_position ()) != drag_from) {
2827+ // Confirm resize.
2828+ case DRAG_SCALE_BOTH:
2829+ case DRAG_SCALE_X:
2830+ case DRAG_SCALE_Y: {
28582831 if (drag_selection.size () != 1 ) {
28592832 _commit_canvas_item_state (
28602833 drag_selection,
2861- vformat (TTR (" Move %d CanvasItems" ), drag_selection.size ()),
2834+ vformat (TTR (" Scale %d CanvasItems" ), drag_selection.size ()),
28622835 true );
28632836 } else {
28642837 _commit_canvas_item_state (
28652838 drag_selection,
2866- vformat (
2867- TTR (" Move CanvasItem \" %s\" to (%d, %d)" ),
2839+ vformat (TTR (" Scale CanvasItem \" %s\" to (%s, %s)" ),
28682840 drag_selection.front ()->get ()->get_name (),
2869- drag_selection.front ()->get ()->_edit_get_position ().x ,
2870- drag_selection.front ()->get ()->_edit_get_position ().y ),
2841+ Math::snapped ( drag_selection.front ()->get ()->_edit_get_scale ().x , 0.01 ) ,
2842+ Math::snapped ( drag_selection.front ()->get ()->_edit_get_scale ().y , 0.01 ) ),
28712843 true );
28722844 }
2873- }
2845+ if (key_auto_insert_button->is_pressed ()) {
2846+ _insert_animation_keys (false , false , true , true );
2847+ }
2848+ } break ;
28742849
2875- if (key_auto_insert_button->is_pressed ()) {
2876- _insert_animation_keys (true , false , false , true );
2877- }
2850+ // Confirm the canvas items move.
2851+ case DRAG_MOVE:
2852+ case DRAG_MOVE_X:
2853+ case DRAG_MOVE_Y: {
2854+ if (transform.affine_inverse ().xform (get_viewport ()->get_mouse_position ()) != drag_from) {
2855+ if (drag_selection.size () != 1 ) {
2856+ _commit_canvas_item_state (
2857+ drag_selection,
2858+ vformat (TTR (" Move %d CanvasItems" ), drag_selection.size ()),
2859+ true );
2860+ } else {
2861+ _commit_canvas_item_state (
2862+ drag_selection,
2863+ vformat (
2864+ TTR (" Move CanvasItem \" %s\" to (%d, %d)" ),
2865+ drag_selection.front ()->get ()->get_name (),
2866+ drag_selection.front ()->get ()->_edit_get_position ().x ,
2867+ drag_selection.front ()->get ()->_edit_get_position ().y ),
2868+ true );
2869+ }
2870+ }
28782871
2879- // Make sure smart snapping lines disappear.
2880- snap_target[0 ] = SNAP_TARGET_NONE;
2881- snap_target[1 ] = SNAP_TARGET_NONE;
2882- } break ;
2872+ if (key_auto_insert_button->is_pressed ()) {
2873+ _insert_animation_keys (true , false , false , true );
2874+ }
28832875
2884- // Confirm the canvas items move by arrow keys.
2885- case DRAG_KEY_MOVE: {
2886- if (tool != TOOL_SELECT && tool != TOOL_MOVE) {
2887- return ;
2888- }
2876+ // Make sure smart snapping lines disappear.
2877+ snap_target[0 ] = SNAP_TARGET_NONE;
2878+ snap_target[1 ] = SNAP_TARGET_NONE;
2879+ } break ;
28892880
2890- if (drag_selection.size () > 1 ) {
2891- _commit_canvas_item_state (
2892- drag_selection,
2893- vformat (TTR (" Move %d CanvasItems" ), drag_selection.size ()),
2894- true );
2895- } else if (drag_selection.size () == 1 ) {
2896- _commit_canvas_item_state (
2897- drag_selection,
2898- vformat (TTR (" Move CanvasItem \" %s\" to (%d, %d)" ),
2899- drag_selection.front ()->get ()->get_name (),
2900- drag_selection.front ()->get ()->_edit_get_position ().x ,
2901- drag_selection.front ()->get ()->_edit_get_position ().y ),
2902- true );
2903- }
2904- } break ;
2881+ // Confirm the canvas items move by arrow keys.
2882+ case DRAG_KEY_MOVE: {
2883+ if (tool != TOOL_SELECT && tool != TOOL_MOVE) {
2884+ return ;
2885+ }
29052886
2906- default :
2907- break ;
2887+ if (drag_selection.size () > 1 ) {
2888+ _commit_canvas_item_state (
2889+ drag_selection,
2890+ vformat (TTR (" Move %d CanvasItems" ), drag_selection.size ()),
2891+ true );
2892+ } else if (drag_selection.size () == 1 ) {
2893+ _commit_canvas_item_state (
2894+ drag_selection,
2895+ vformat (TTR (" Move CanvasItem \" %s\" to (%d, %d)" ),
2896+ drag_selection.front ()->get ()->get_name (),
2897+ drag_selection.front ()->get ()->_edit_get_position ().x ,
2898+ drag_selection.front ()->get ()->_edit_get_position ().y ),
2899+ true );
2900+ }
2901+ } break ;
2902+
2903+ default :
2904+ break ;
2905+ }
29082906 }
29092907
29102908 _reset_drag ();
0 commit comments