Merge pull request #37336 from dreamsComeTrue/canvas-editor-change-cursor

Request immediate refresh of cursor in 2D editor while using shortcuts
This commit is contained in:
Rémi Verschelde 2020-07-23 09:49:48 +02:00 committed by GitHub
commit 5671469724
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 5 deletions

View File

@ -2589,6 +2589,15 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) {
_gui_input_hover(p_event);
// Change the cursor
_update_cursor();
// Grab focus
if (!viewport->has_focus() && (!get_focus_owner() || !get_focus_owner()->is_text_field())) {
viewport->call_deferred("grab_focus");
}
}
void CanvasItemEditor::_update_cursor() {
CursorShape c = CURSOR_ARROW;
switch (drag_type) {
case DRAG_NONE:
@ -2642,11 +2651,6 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) {
}
viewport->set_default_cursor_shape(c);
// Grab focus
if (!viewport->has_focus() && (!get_focus_owner() || !get_focus_owner()->is_text_field())) {
viewport->call_deferred("grab_focus");
}
}
void CanvasItemEditor::_draw_text_at_position(Point2 p_position, String p_string, Margin p_side) {
@ -4464,7 +4468,13 @@ void CanvasItemEditor::_button_tool_select(int p_index) {
}
tool = (Tool)p_index;
viewport->update();
_update_cursor();
// Request immediate refresh of cursor when using hot-keys to switch between tools
DisplayServer::CursorShape ds_cursor_shape = (DisplayServer::CursorShape)viewport->get_default_cursor_shape();
DisplayServer::get_singleton()->cursor_set_shape(ds_cursor_shape);
}
void CanvasItemEditor::_insert_animation_keys(bool p_location, bool p_rotation, bool p_scale, bool p_on_existing) {

View File

@ -492,6 +492,7 @@ private:
bool _gui_input_hover(const Ref<InputEvent> &p_event);
void _gui_input_viewport(const Ref<InputEvent> &p_event);
void _update_cursor();
void _selection_changed();