mirror of
https://github.com/Redot-Engine/redot-engine.git
synced 2025-12-06 15:21:56 -05:00
Merge commit godotengine/godot@4ebf67c
This commit is contained in:
@@ -151,8 +151,9 @@ bool DisplayServerWindows::has_feature(Feature p_feature) const {
|
||||
case FEATURE_STATUS_INDICATOR:
|
||||
case FEATURE_WINDOW_EMBEDDING:
|
||||
case FEATURE_WINDOW_DRAG:
|
||||
case FEATURE_SCREEN_EXCLUDE_FROM_CAPTURE:
|
||||
return true;
|
||||
case FEATURE_SCREEN_EXCLUDE_FROM_CAPTURE:
|
||||
return (os_ver.dwBuildNumber >= 19041); // Fully supported on Windows 10 Vibranium R1 (2004)+ only, captured as black rect on older versions.
|
||||
case FEATURE_EMOJI_AND_SYMBOL_PICKER:
|
||||
return (os_ver.dwBuildNumber >= 17134); // Windows 10 Redstone 4 (1803)+ only.
|
||||
#ifdef ACCESSKIT_ENABLED
|
||||
@@ -2470,6 +2471,21 @@ void DisplayServerWindows::window_set_mode(WindowMode p_mode, WindowID p_window)
|
||||
}
|
||||
}
|
||||
|
||||
if ((wd.maximized || wd.was_maximized_pre_fs) && wd.borderless && p_mode != WINDOW_MODE_MINIMIZED && p_mode != WINDOW_MODE_FULLSCREEN && p_mode != WINDOW_MODE_EXCLUSIVE_FULLSCREEN) {
|
||||
RECT rect;
|
||||
if (wd.pre_fs_valid) {
|
||||
rect = wd.pre_fs_rect;
|
||||
} else {
|
||||
rect.left = 0;
|
||||
rect.right = wd.width;
|
||||
rect.top = 0;
|
||||
rect.bottom = wd.height;
|
||||
}
|
||||
|
||||
ShowWindow(wd.hWnd, SW_RESTORE);
|
||||
MoveWindow(wd.hWnd, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, TRUE);
|
||||
}
|
||||
|
||||
if (p_mode == WINDOW_MODE_WINDOWED) {
|
||||
ShowWindow(wd.hWnd, SW_NORMAL);
|
||||
wd.maximized = false;
|
||||
@@ -2483,6 +2499,11 @@ void DisplayServerWindows::window_set_mode(WindowMode p_mode, WindowID p_window)
|
||||
}
|
||||
|
||||
if (p_mode == WINDOW_MODE_MAXIMIZED && wd.borderless) {
|
||||
if (!was_fullscreen && !(wd.maximized && wd.borderless)) {
|
||||
// Save non-fullscreen rect before entering fullscreen.
|
||||
GetWindowRect(wd.hWnd, &wd.pre_fs_rect);
|
||||
wd.pre_fs_valid = true;
|
||||
}
|
||||
ShowWindow(wd.hWnd, SW_NORMAL);
|
||||
wd.maximized = true;
|
||||
wd.minimized = false;
|
||||
@@ -2516,7 +2537,7 @@ void DisplayServerWindows::window_set_mode(WindowMode p_mode, WindowID p_window)
|
||||
// Save previous maximized stare.
|
||||
wd.was_maximized_pre_fs = wd.maximized;
|
||||
|
||||
if (!was_fullscreen) {
|
||||
if (!was_fullscreen && !(wd.maximized && wd.borderless)) {
|
||||
// Save non-fullscreen rect before entering fullscreen.
|
||||
GetWindowRect(wd.hWnd, &wd.pre_fs_rect);
|
||||
wd.pre_fs_valid = true;
|
||||
@@ -7189,10 +7210,8 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
|
||||
}
|
||||
|
||||
#ifdef SDL_ENABLED
|
||||
joypad_sdl = memnew(JoypadSDL());
|
||||
if (joypad_sdl->initialize() == OK) {
|
||||
joypad_sdl->setup_sdl_helper_window(windows[MAIN_WINDOW_ID].hWnd);
|
||||
} else {
|
||||
joypad_sdl = memnew(JoypadSDL(windows[MAIN_WINDOW_ID].hWnd));
|
||||
if (joypad_sdl->initialize() != OK) {
|
||||
ERR_PRINT("Couldn't initialize SDL joypad input driver.");
|
||||
memdelete(joypad_sdl);
|
||||
joypad_sdl = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user