Merge pull request #26242 from serados/init_mouse_pos_win

Update Windows global mouse position at startup
This commit is contained in:
Hein-Pieter van Braam 2019-02-25 00:48:52 +01:00 committed by GitHub
commit 0fdcebfbb7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 0 deletions

View file

@ -1395,6 +1395,8 @@ Error OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
}
update_real_mouse_position();
return OK;
}
@ -1596,6 +1598,19 @@ Point2 OS_Windows::get_mouse_position() const {
return Point2(old_x, old_y);
}
void OS_Windows::update_real_mouse_position() {
POINT mouse_pos;
if (GetCursorPos(&mouse_pos) && ScreenToClient(hWnd, &mouse_pos)) {
if (mouse_pos.x > 0 && mouse_pos.y > 0 && mouse_pos.x <= video_mode.width && mouse_pos.y <= video_mode.height) {
old_x = mouse_pos.x;
old_y = mouse_pos.y;
old_invalid = false;
input->set_mouse_position(Point2i(mouse_pos.x, mouse_pos.y));
}
}
}
int OS_Windows::get_mouse_button_state() const {
return last_button_state;
@ -1738,6 +1753,7 @@ void OS_Windows::set_window_position(const Point2 &p_position) {
}
last_pos = p_position;
update_real_mouse_position();
}
Size2 OS_Windows::get_window_size() const {

View file

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