Skip to content

Commit b7f5ddd

Browse files
committed
Merge pull request #109300 from bruvzg/win_ndrag_rel
[Windows] Release mouse buttons after native window drag/resize operation.
2 parents 395b0f0 + 33c92af commit b7f5ddd

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

platform/windows/display_server_windows.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4255,6 +4255,19 @@ void DisplayServerWindows::window_start_drag(WindowID p_window) {
42554255
ScreenToClient(wd.hWnd, &coords);
42564256

42574257
SendMessage(wd.hWnd, WM_SYSCOMMAND, SC_MOVE | HTCAPTION, MAKELPARAM(coords.x, coords.y));
4258+
4259+
for (int btn = (int)MouseButton::LEFT; btn <= (int)MouseButton::MB_XBUTTON2; btn++) {
4260+
if (Input::get_singleton()->is_mouse_button_pressed(MouseButton(btn))) {
4261+
Ref<InputEventMouseButton> mb;
4262+
mb.instantiate();
4263+
mb->set_window_id(p_window);
4264+
mb->set_pressed(false);
4265+
mb->set_button_index(MouseButton::LEFT);
4266+
mb->set_position(Vector2(coords.x, coords.y));
4267+
mb->set_global_position(mb->get_position());
4268+
Input::get_singleton()->parse_input_event(mb);
4269+
}
4270+
}
42584271
}
42594272

42604273
void DisplayServerWindows::window_start_resize(WindowResizeEdge p_edge, WindowID p_window) {
@@ -4305,6 +4318,19 @@ void DisplayServerWindows::window_start_resize(WindowResizeEdge p_edge, WindowID
43054318
}
43064319

43074320
SendMessage(wd.hWnd, WM_SYSCOMMAND, SC_SIZE | op, MAKELPARAM(coords.x, coords.y));
4321+
4322+
for (int btn = (int)MouseButton::LEFT; btn <= (int)MouseButton::MB_XBUTTON2; btn++) {
4323+
if (Input::get_singleton()->is_mouse_button_pressed(MouseButton(btn))) {
4324+
Ref<InputEventMouseButton> mb;
4325+
mb.instantiate();
4326+
mb->set_window_id(p_window);
4327+
mb->set_pressed(false);
4328+
mb->set_button_index(MouseButton::LEFT);
4329+
mb->set_position(Vector2(coords.x, coords.y));
4330+
mb->set_global_position(mb->get_position());
4331+
Input::get_singleton()->parse_input_event(mb);
4332+
}
4333+
}
43084334
}
43094335

43104336
void DisplayServerWindows::set_context(Context p_context) {

0 commit comments

Comments
 (0)