diff --git a/Engine/source/windowManager/sdl/sdlWindow.cpp b/Engine/source/windowManager/sdl/sdlWindow.cpp index 67b636a2a..c64da01be 100644 --- a/Engine/source/windowManager/sdl/sdlWindow.cpp +++ b/Engine/source/windowManager/sdl/sdlWindow.cpp @@ -646,7 +646,11 @@ void PlatformWindowSDL::_processSDLEvent(SDL_Event &evt) break; case SDL_WINDOWEVENT_MOVED: { + S32 oldDisplay = Con::getIntVariable("pref::Video::deviceId", 0); _updateMonitorFromMove(evt); + // If display device has changed, make sure window params are compatible with the new device. + if (oldDisplay != Con::getIntVariable("pref::Video::deviceId", 0)) + Con::evaluate("configureCanvas();"); break; } case SDL_WINDOWEVENT_RESIZED: @@ -672,11 +676,6 @@ void PlatformWindowSDL::_processSDLEvent(SDL_Event &evt) case SDL_WINDOWEVENT_RESTORED: Con::setBoolVariable("pref::Video::isMaximized", false); break; - case SDL_WINDOWEVENT_DISPLAY_CHANGED: - Con::printf("Window moved to display #%d", evt.window.data1); - Con::setIntVariable("pref::Video::deviceId", evt.window.data1); - Con::evaluate("configureCanvas();"); - break; default: break; diff --git a/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript b/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript index 2c01e62c5..8722f9902 100644 --- a/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript +++ b/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript @@ -106,6 +106,7 @@ function OptionsMenu::onOpen(%this) } %this.unappliedChanges.empty(); + $pref::Video::displayDeviceId = ""; OptionsMenuCategoryList.setAsActiveMenuList(); @@ -442,6 +443,11 @@ function populateDisplaySettingsList() %resolution = _makePrettyResString(%resolution); OptionsMenuSettingsList.addOptionRow("Resolution", "$pref::Video::Resolution", %resolutionList, false, "", true, "Resolution of the game window", %resolution); + + // If the requested resolution could not be set, mark the control and pref as changed. + %resControl = OptionsMenuSettingsList.getObject(OptionsMenuSettingsList.getCount()-1); + if (%resControl.getCurrentOption() !$= %resolution) + %resControl.onChange(); } OptionsMenuSettingsList.addOptionBoolRow("VSync", "$pref::Video::enableVerticalSync", $YesNoList, false, "", true, "", "");