summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2018-04-10 17:15:11 +0200
committerGitHub <noreply@github.com>2018-04-10 17:15:11 +0200
commitcc5acaf2d58d0aaa2a9b49255ada24ba28d1ca17 (patch)
tree9ac4369738c103f2d022c9824027a9d802d5ad86
parent48890b15c5b5ff54ea2cf416a9d3157f2d5dee5b (diff)
parent4f05190fb08b064b8605ab80cba74aee38e52702 (diff)
Merge pull request #18093 from guilhermefelipecgs/set_default_cursor_shape
Implement Input.set_default_cursor_shape to change the default shape
-rw-r--r--core/os/input.cpp1
-rw-r--r--core/os/input.h2
-rw-r--r--main/input_default.cpp9
-rw-r--r--main/input_default.h3
-rw-r--r--scene/main/viewport.cpp2
5 files changed, 16 insertions, 1 deletions
diff --git a/core/os/input.cpp b/core/os/input.cpp
index 1d7cd7c791..e8a635e1b5 100644
--- a/core/os/input.cpp
+++ b/core/os/input.cpp
@@ -85,6 +85,7 @@ void Input::_bind_methods() {
ClassDB::bind_method(D_METHOD("warp_mouse_position", "to"), &Input::warp_mouse_position);
ClassDB::bind_method(D_METHOD("action_press", "action"), &Input::action_press);
ClassDB::bind_method(D_METHOD("action_release", "action"), &Input::action_release);
+ ClassDB::bind_method(D_METHOD("set_default_cursor_shape", "shape"), &Input::set_default_cursor_shape, DEFVAL(CURSOR_ARROW));
ClassDB::bind_method(D_METHOD("set_custom_mouse_cursor", "image", "shape", "hotspot"), &Input::set_custom_mouse_cursor, DEFVAL(CURSOR_ARROW), DEFVAL(Vector2()));
ClassDB::bind_method(D_METHOD("parse_input_event", "event"), &Input::parse_input_event);
diff --git a/core/os/input.h b/core/os/input.h
index 9c7595ff7f..fca68f27b7 100644
--- a/core/os/input.h
+++ b/core/os/input.h
@@ -119,6 +119,8 @@ public:
virtual bool is_emulating_touchscreen() const = 0;
+ virtual CursorShape get_default_cursor_shape() = 0;
+ virtual void set_default_cursor_shape(CursorShape p_shape) = 0;
virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape = CURSOR_ARROW, const Vector2 &p_hotspot = Vector2()) = 0;
virtual void set_mouse_in_window(bool p_in_window) = 0;
diff --git a/main/input_default.cpp b/main/input_default.cpp
index ae33057959..1c73ecf2d2 100644
--- a/main/input_default.cpp
+++ b/main/input_default.cpp
@@ -495,6 +495,15 @@ bool InputDefault::is_emulating_touchscreen() const {
return emulate_touch;
}
+Input::CursorShape InputDefault::get_default_cursor_shape() {
+ return default_shape;
+}
+
+void InputDefault::set_default_cursor_shape(CursorShape p_shape) {
+ default_shape = p_shape;
+ OS::get_singleton()->set_cursor_shape((OS::CursorShape)p_shape);
+}
+
void InputDefault::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
if (Engine::get_singleton()->is_editor_hint())
return;
diff --git a/main/input_default.h b/main/input_default.h
index 7de6d3eca0..384b04cf41 100644
--- a/main/input_default.h
+++ b/main/input_default.h
@@ -115,6 +115,7 @@ class InputDefault : public Input {
SpeedTrack mouse_speed_track;
Map<int, Joypad> joy_names;
int fallback_mapping;
+ CursorShape default_shape = CURSOR_ARROW;
public:
enum HatMask {
@@ -225,6 +226,8 @@ public:
void set_emulate_touch(bool p_emulate);
virtual bool is_emulating_touchscreen() const;
+ virtual CursorShape get_default_cursor_shape();
+ virtual void set_default_cursor_shape(CursorShape p_shape);
virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape = Input::CURSOR_ARROW, const Vector2 &p_hotspot = Vector2());
virtual void set_mouse_in_window(bool p_in_window);
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 45a969eeda..568a765420 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -1814,7 +1814,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
}
if (!over) {
- OS::get_singleton()->set_cursor_shape(OS::CURSOR_ARROW);
+ OS::get_singleton()->set_cursor_shape((OS::CursorShape)Input::get_singleton()->get_default_cursor_shape());
return;
}