Merge pull request #69686 from bruvzg/win_mgmt_fixes_batch1
[Windows] Window management fixes.
This commit is contained in:
commit
dedca54754
|
@ -2473,7 +2473,7 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||
window_mouseover_id = INVALID_WINDOW_ID;
|
||||
|
||||
_send_window_event(windows[window_id], WINDOW_EVENT_MOUSE_EXIT);
|
||||
} else if (window_mouseover_id != INVALID_WINDOW_ID) {
|
||||
} else if (window_mouseover_id != INVALID_WINDOW_ID && windows.has(window_mouseover_id)) {
|
||||
// This is reached during drag and drop, after dropping in a different window.
|
||||
// Once-off notification, must call again.
|
||||
track_mouse_leave_event(windows[window_mouseover_id].hWnd);
|
||||
|
@ -2712,7 +2712,7 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||
// Mouse enter.
|
||||
|
||||
if (mouse_mode != MOUSE_MODE_CAPTURED) {
|
||||
if (window_mouseover_id != INVALID_WINDOW_ID) {
|
||||
if (window_mouseover_id != INVALID_WINDOW_ID && windows.has(window_mouseover_id)) {
|
||||
// Leave previous window.
|
||||
_send_window_event(windows[window_mouseover_id], WINDOW_EVENT_MOUSE_EXIT);
|
||||
}
|
||||
|
@ -2814,7 +2814,7 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||
}
|
||||
|
||||
DisplayServer::WindowID over_id = get_window_at_screen_position(mouse_get_position());
|
||||
if (!Rect2(window_get_position(over_id), Point2(windows[over_id].width, windows[over_id].height)).has_point(mouse_get_position())) {
|
||||
if (windows.has(over_id) && !Rect2(window_get_position(over_id), Point2(windows[over_id].width, windows[over_id].height)).has_point(mouse_get_position())) {
|
||||
// Don't consider the windowborder as part of the window.
|
||||
over_id = INVALID_WINDOW_ID;
|
||||
}
|
||||
|
@ -2822,12 +2822,12 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||
// Mouse enter.
|
||||
|
||||
if (mouse_mode != MOUSE_MODE_CAPTURED) {
|
||||
if (window_mouseover_id != INVALID_WINDOW_ID) {
|
||||
if (window_mouseover_id != INVALID_WINDOW_ID && windows.has(window_mouseover_id)) {
|
||||
// Leave previous window.
|
||||
_send_window_event(windows[window_mouseover_id], WINDOW_EVENT_MOUSE_EXIT);
|
||||
}
|
||||
|
||||
if (over_id != INVALID_WINDOW_ID) {
|
||||
if (over_id != INVALID_WINDOW_ID && windows.has(over_id)) {
|
||||
_send_window_event(windows[over_id], WINDOW_EVENT_MOUSE_ENTER);
|
||||
}
|
||||
}
|
||||
|
@ -3520,7 +3520,7 @@ DisplayServer::WindowID DisplayServerWindows::_create_window(WindowMode p_mode,
|
|||
DWORD dwExStyle;
|
||||
DWORD dwStyle;
|
||||
|
||||
_get_window_style(window_id_counter == MAIN_WINDOW_ID, (p_mode == WINDOW_MODE_FULLSCREEN || p_mode == WINDOW_MODE_EXCLUSIVE_FULLSCREEN), p_mode == WINDOW_MODE_EXCLUSIVE_FULLSCREEN, p_flags & WINDOW_FLAG_BORDERLESS_BIT, !(p_flags & WINDOW_FLAG_RESIZE_DISABLED_BIT), p_mode == WINDOW_MODE_MAXIMIZED, (p_flags & WINDOW_FLAG_NO_FOCUS_BIT), dwStyle, dwExStyle);
|
||||
_get_window_style(window_id_counter == MAIN_WINDOW_ID, (p_mode == WINDOW_MODE_FULLSCREEN || p_mode == WINDOW_MODE_EXCLUSIVE_FULLSCREEN), p_mode == WINDOW_MODE_EXCLUSIVE_FULLSCREEN, p_flags & WINDOW_FLAG_BORDERLESS_BIT, !(p_flags & WINDOW_FLAG_RESIZE_DISABLED_BIT), p_mode == WINDOW_MODE_MAXIMIZED, (p_flags & WINDOW_FLAG_NO_FOCUS_BIT) | (p_flags & WINDOW_FLAG_POPUP), dwStyle, dwExStyle);
|
||||
|
||||
RECT WindowRect;
|
||||
|
||||
|
|
Loading…
Reference in New Issue