Update Windows global mouse position at startup
Fixes issue #8145 for Windows, in the same manner as issue #21910 fixed it for X11.
This commit is contained in:
parent
61b41d6001
commit
731b152dc1
|
@ -1395,6 +1395,8 @@ Error OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int
|
||||||
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
|
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_real_mouse_position();
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1596,6 +1598,19 @@ Point2 OS_Windows::get_mouse_position() const {
|
||||||
return Point2(old_x, old_y);
|
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 {
|
int OS_Windows::get_mouse_button_state() const {
|
||||||
|
|
||||||
return last_button_state;
|
return last_button_state;
|
||||||
|
@ -1738,6 +1753,7 @@ void OS_Windows::set_window_position(const Point2 &p_position) {
|
||||||
}
|
}
|
||||||
|
|
||||||
last_pos = p_position;
|
last_pos = p_position;
|
||||||
|
update_real_mouse_position();
|
||||||
}
|
}
|
||||||
Size2 OS_Windows::get_window_size() const {
|
Size2 OS_Windows::get_window_size() const {
|
||||||
|
|
||||||
|
|
|
@ -197,6 +197,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;
|
||||||
|
void update_real_mouse_position();
|
||||||
virtual int get_mouse_button_state() const;
|
virtual int get_mouse_button_state() const;
|
||||||
virtual void set_window_title(const String &p_title);
|
virtual void set_window_title(const String &p_title);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue