From 6dee4e11837b2953eded52d64105957ca6ba0e46 Mon Sep 17 00:00:00 2001 From: NovaRain Date: Thu, 29 Jun 2023 21:34:41 +0800 Subject: [PATCH] Removed capping of console window position and size * for multi-monitor setup, leaving only minimum size of 640x480. --- artifacts/ddraw.ini | 5 +++-- sfall/ConsoleWindow.cpp | 17 +++++++---------- sfall/Modules/ScriptExtender.cpp | 2 +- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/artifacts/ddraw.ini b/artifacts/ddraw.ini index b5d62db4..92a193fe 100644 --- a/artifacts/ddraw.ini +++ b/artifacts/ddraw.ini @@ -66,7 +66,7 @@ GraphicsWidth=0 GraphicsHeight=0 ;Window position data. Do not modify -;Set to -1 or 0 to reset if the window position is incorrect +;Set to -1 or 0 to reset the window position to the center or top-left corner WindowData=-1 ;Uncomment the option to use a hardware shader (requires DX9 graphics mode) @@ -890,7 +890,7 @@ AlwaysFindScripts=0 Test_ForceFloats=0 ;These options control what output is saved in the debug log (sfall-log.txt) -;Prints messages duing sfall initialization +;Prints messages during sfall initialization Init=1 ;Prints messages relating to hook scripts Hook=0 @@ -911,6 +911,7 @@ Fixes=1 ConsoleWindow=0b0000 ;Console window position and size data. Do not modify +;Clear the data to reset the window position and size ConsoleWindowData= ;Set the code page for the console window (Default is your system code page) diff --git a/sfall/ConsoleWindow.cpp b/sfall/ConsoleWindow.cpp index 51bb4845..f4c94a3e 100644 --- a/sfall/ConsoleWindow.cpp +++ b/sfall/ConsoleWindow.cpp @@ -47,10 +47,6 @@ BOOL WINAPI ConsoleCtrlHandler(DWORD dwCtrlType) { } void ConsoleWindow::loadPosition() { - std::string windowDataStr = IniReader::GetStringDefaultConfig("Debugging", "ConsoleWindowData", ""); - std::vector windowDataSplit = split(windowDataStr, ','); - if (windowDataSplit.size() < 4) return; - HWND wnd; if (!tryGetWindow(&wnd)) return; @@ -61,16 +57,17 @@ void ConsoleWindow::loadPosition() { dlog_f("Error setting console ctrl handler: 0x%x\n", DL_MAIN, GetLastError()); } + std::string windowDataStr = IniReader::GetStringDefaultConfig("Debugging", "ConsoleWindowData", ""); + std::vector windowDataSplit = split(windowDataStr, ','); + int windowData[5]; for (size_t i = 0; i < 5; i++) { windowData[i] = i < windowDataSplit.size() ? atoi(windowDataSplit.at(i).c_str()) : 0; } - int screenWidth = GetSystemMetrics(SM_CXSCREEN), - screenHeight = GetSystemMetrics(SM_CYSCREEN); - LONG w = min(max(windowData[2], 640), screenWidth), - h = min(max(windowData[3], 480), screenHeight), - x = min(max(windowData[0], -w/2), screenWidth - w/2), - y = min(max(windowData[1], 0), screenHeight - h/2); + LONG w = max(windowData[2], 640), + h = max(windowData[3], 480), + x = windowData[0], + y = windowData[1]; UINT showCmd = windowData[4] != 0 ? windowData[4] : SW_SHOWNORMAL; dlog_f("Setting console window position: (%d, %d), size: %dx%d, showCmd: %d\n", DL_MAIN, x, y, w, h, showCmd); diff --git a/sfall/Modules/ScriptExtender.cpp b/sfall/Modules/ScriptExtender.cpp index 1dcf4fb5..123dce89 100644 --- a/sfall/Modules/ScriptExtender.cpp +++ b/sfall/Modules/ScriptExtender.cpp @@ -661,7 +661,7 @@ static void PrepareGlobalScriptsList() { baseName = baseName.substr(0, lastDot); // script name without extension if (!IsGameScript(baseName.c_str())) { - globalScriptFilesList.push_back(baseName); + globalScriptFilesList.push_back(std::move(baseName)); } } fo::func::db_free_file_list(&filenames, 0);