Merge pull request #29876 from bruvzg/init_mouse_pos_macos

Update macOS global mouse position at startup
This commit is contained in:
Rémi Verschelde 2019-06-19 00:10:11 +02:00 committed by GitHub
commit bb16dd71d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 0 deletions

View File

@ -188,6 +188,7 @@ public:
virtual void warp_mouse_position(const Point2 &p_to); virtual void warp_mouse_position(const Point2 &p_to);
virtual Point2 get_mouse_position() const; virtual Point2 get_mouse_position() const;
virtual int get_mouse_button_state() const; virtual int get_mouse_button_state() const;
void update_real_mouse_position();
virtual void set_window_title(const String &p_title); virtual void set_window_title(const String &p_title);
virtual Size2 get_window_size() const; virtual Size2 get_window_size() const;

View File

@ -1569,6 +1569,9 @@ Error OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_a
if (p_desired.layered) { if (p_desired.layered) {
set_window_per_pixel_transparency_enabled(true); set_window_per_pixel_transparency_enabled(true);
} }
update_real_mouse_position();
return OK; return OK;
} }
@ -1907,6 +1910,12 @@ void OS_OSX::warp_mouse_position(const Point2 &p_to) {
} }
} }
void OS_OSX::update_real_mouse_position() {
get_mouse_pos([window_object mouseLocationOutsideOfEventStream], [window_view backingScaleFactor]);
input->set_mouse_position(Point2(mouse_x, mouse_y));
}
Point2 OS_OSX::get_mouse_position() const { Point2 OS_OSX::get_mouse_position() const {
return Vector2(mouse_x, mouse_y); return Vector2(mouse_x, mouse_y);
@ -2357,6 +2366,8 @@ void OS_OSX::set_window_position(const Point2 &p_position) {
// Godot passes a positive value // Godot passes a positive value
position.y *= -1; position.y *= -1;
set_native_window_position(get_screens_origin() + position); set_native_window_position(get_screens_origin() + position);
update_real_mouse_position();
}; };
Size2 OS_OSX::get_window_size() const { Size2 OS_OSX::get_window_size() const {