(e4191497a) Workaround to changing resolution in fullscreen + force borderless windowed to display resolution

This commit is contained in:
Joonas Rikkonen
2019-06-04 16:01:31 +03:00
parent a1e558d14a
commit 6ffe13b4b7
2 changed files with 31 additions and 18 deletions
@@ -192,6 +192,7 @@ namespace Barotrauma
foreach (DisplayMode mode in GraphicsAdapter.DefaultAdapter.SupportedDisplayModes)
{
if (supportedDisplayModes.Any(m => m.Width == mode.Width && m.Height == mode.Height)) { continue; }
if (mode.Width < MinSupportedResolution.X || mode.Height < MinSupportedResolution.Y) { continue; }
#if OSX
// Monogame currently doesn't support retina displays
// so we need to disable resolutions above the viewport size.
@@ -211,7 +212,6 @@ namespace Barotrauma
foreach (DisplayMode mode in supportedDisplayModes)
{
if (mode.Width < MinSupportedResolution.X || mode.Height < MinSupportedResolution.Y) { continue; }
resolutionDD.AddItem(mode.Width + "x" + mode.Height, mode);
if (GraphicsWidth == mode.Width && GraphicsHeight == mode.Height) resolutionDD.SelectItem(mode);
}
@@ -248,15 +248,32 @@ namespace Barotrauma
{
displayModeDD.SelectItem(GameMain.Config.WindowMode);
}
#endif
displayModeDD.OnSelected = (guiComponent, obj) =>
{
displayModeDD.SelectItem(WindowMode.Fullscreen);
}
else
{
displayModeDD.SelectItem(GameMain.Config.WindowMode);
}
#endif
displayModeDD.OnSelected = (guiComponent, obj) =>
{
PauseOnFocusLost = tickBox.Selected;
UnsavedSettings = true;
GameMain.Config.WindowMode = (WindowMode)guiComponent.UserData;
#if !LINUX
resolutionDD.ButtonEnabled = GameMain.Config.WindowMode == WindowMode.Windowed;
#endif
if (GameMain.Config.WindowMode == WindowMode.BorderlessWindowed)
{
resolutionDD.SelectItem(GraphicsAdapter.DefaultAdapter.SupportedDisplayModes.First(
m => m.Width == GameMain.Instance.GraphicsDevice.DisplayMode.Width &&
m.Height == GameMain.Instance.GraphicsDevice.DisplayMode.Height));
resolutionDD.ButtonEnabled = false;
}
else
{
resolutionDD.ButtonEnabled = true;
}
return true;
};