summaryrefslogtreecommitdiff
path: root/tests/display_server_mock.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/display_server_mock.h')
-rw-r--r--tests/display_server_mock.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/tests/display_server_mock.h b/tests/display_server_mock.h
index 1736f2c452..fe36fa0b69 100644
--- a/tests/display_server_mock.h
+++ b/tests/display_server_mock.h
@@ -42,6 +42,7 @@ private:
friend class DisplayServer;
Point2i mouse_position = Point2i(-1, -1); // Outside of Window.
+ CursorShape cursor_shape = CursorShape::CURSOR_ARROW;
bool window_over = false;
Callable event_callback;
Callable input_event_callback;
@@ -103,6 +104,7 @@ public:
bool has_feature(Feature p_feature) const override {
switch (p_feature) {
case FEATURE_MOUSE:
+ case FEATURE_CURSOR_SHAPE:
return true;
default: {
}
@@ -115,12 +117,24 @@ public:
// You can simulate DisplayServer-events by calling this function.
// The events will be deliverd to Godot's Input-system.
// Mouse-events (Button & Motion) will additionally update the DisplayServer's mouse position.
+ // For Mouse motion events, the `relative`-property is set based on the distance to the previous mouse position.
void simulate_event(Ref<InputEvent> p_event) {
+ Ref<InputEvent> event = p_event;
Ref<InputEventMouse> me = p_event;
if (me.is_valid()) {
+ Ref<InputEventMouseMotion> mm = p_event;
+ if (mm.is_valid()) {
+ mm->set_relative(mm->get_position() - mouse_position);
+ event = mm;
+ }
_set_mouse_position(me->get_position());
}
- Input::get_singleton()->parse_input_event(p_event);
+ Input::get_singleton()->parse_input_event(event);
+ }
+
+ // Returns the current cursor shape.
+ CursorShape get_cursor_shape() {
+ return cursor_shape;
}
virtual Point2i mouse_get_position() const override { return mouse_position; }
@@ -129,6 +143,10 @@ public:
return Size2i(1920, 1080);
}
+ virtual void cursor_set_shape(CursorShape p_shape) override {
+ cursor_shape = p_shape;
+ }
+
virtual void window_set_window_event_callback(const Callable &p_callable, WindowID p_window = MAIN_WINDOW_ID) override {
event_callback = p_callable;
}