Browse Source

Update macOS global mouse position at startup

bruvzg 6 years ago
parent
commit
e19b6296e3
2 changed files with 12 additions and 0 deletions
  1. 1 0
      platform/osx/os_osx.h
  2. 11 0
      platform/osx/os_osx.mm

+ 1 - 0
platform/osx/os_osx.h

@@ -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;

+ 11 - 0
platform/osx/os_osx.mm

@@ -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 {