### Godot version

4.0.beta10 (d0398f62f)

### System information

Windows 11

### Issue description

When the Move Mode tool is selected (hotkey W), using the arrow keys will move a node a few pixels before causing the 2D editor to lose focus.

This does not happen when the Select Mode tool (hotkey Q) is selected. This also doesn't happen when you use shift + arrow key (but this moves multiple pixels at once).

This is also not an issue in 3.5 (new regression in 4.0).

### Steps to reproduce

- Open any scene in 2D mode.
- Select `Select Mode`: 
![image](https://user-images.githubusercontent.com/4420888/210158638-7ff914ba-2ed3-460a-b717-faed1408d662.png)
- Select any CanvasItem.
- You can move it around using the arrow keys (1px at a time).
- Now select `Move Mode`: 
![image](https://user-images.githubusercontent.com/4420888/210158645-6db21a03-64cc-4112-94e5-483491f2e47e.png)
- Try moving the node using arrow keys.
- Notice how the main 2D editor loses focus.

Some extra info: shift + arrow key works fine!

https://user-images.githubusercontent.com/4420888/210158652-8dcff944-d57b-4d72-a8cc-80344b549839.mp4



### Minimal reproduction project

N/A - seems like any CanvasItem (maybe more?) has this issue.
Point2 corner = Point2(begin.x, end.y);
		Vector2 length_vector = (begin - end).abs() / zoom;
		const real_t horizontal_angle_rad = length_vector.angle();
		const real_t vertical_angle_rad = Math_PI / 2.0 - horizontal_angle_rad;
		Ref<Font> font = get_theme_font(SNAME("bold"), SNAME("EditorFonts"));
		int font_size = 1.3 * get_theme_font_size(SNAME("bold_size"), SNAME("EditorFonts"));
		Color font_color = get_theme_color(SNAME("font_color"), SNAME("Editor"));
		Color font_secondary_color = font_color;
		font_secondary_color.set_v(font_secondary_color.get_v() > 0.5 ? 0.7 : 0.3);
		Color outline_color = font_color.inverted();
		float text_height = font->get_height(font_size);
		const float outline_size = 4;
		const float text_width = 76;
		const float angle_text_width = 54;
		Point2 text_pos = (begin + end) / 2 - Vector2(text_width / 2, text_height / 2);
		text_pos.x = CLAMP(text_pos.x, text_width / 2, viewport->get_rect().size.x - text_width * 1.5);
		text_pos.y = CLAMP(text_pos.y, text_height * 1.5, viewport->get_rect().size.y - text_height * 1.5);
		
		viewport->draw_line(begin, end, ruler_primary_color, Math::round(EDSCALE * 3));
		bool draw_secondary_lines = !(Math::is_equal_approx(begin.y, corner.y) || Math::is_equal_approx(end.x, corner.x));
		if (draw_secondary_lines) {
			viewport->draw_line(begin, corner, ruler_secondary_color, Math::round(EDSCALE));
			viewport->draw_line(corner, end, ruler_secondary_color, Math::round(EDSCALE));
			
			int arc_point_count = 8;
			real_t arc_radius_max_length_percent = 0.1;
			real_t ruler_length = length_vector.length() * zoom;
			real_t arc_max_radius = 50.0;
			real_t arc_line_width = 2.0;
			const Vector2 end_to_begin = (end - begin);