From 31000c464296932307c652e23e47908ff9570d36 Mon Sep 17 00:00:00 2001 From: "METANEOCORTEX\\Kotti" Date: Sat, 4 Feb 2023 00:51:25 +0100 Subject: [PATCH] +fix: don't force top-left if window does not fit to monitor --- src/Dialogs.c | 2 +- src/Notepad3.c | 27 +++++++++++++-------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/Dialogs.c b/src/Dialogs.c index d53d90334..ad3d84bd7 100644 --- a/src/Dialogs.c +++ b/src/Dialogs.c @@ -4594,7 +4594,7 @@ WININFO GetMyWindowPlacement(HWND hwnd, MONITORINFO *hMonitorInfo, const int off if (Settings2.LaunchInstanceFullVisible) { RECT rci; RectFromWinInfo(&wi, &rci); - FitIntoMonitorGeometry(&rci, &wi, SCR_NORMAL, true); + FitIntoMonitorGeometry(&rci, &wi, SCR_NORMAL, false); } return wi; } diff --git a/src/Notepad3.c b/src/Notepad3.c index 354605f2f..52bc44bf4 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -1352,6 +1352,17 @@ WININFO GetFactoryDefaultWndPos(HWND hwnd, const int flagsPos) // // _GetDefaultWinInfoByStrg() // +static void _IniFileWriteDefaultWindowPosition(WININFO wi) +{ + WCHAR tchScrnDim[64] = { L'\0' }; + StringCchPrintf(tchScrnDim, COUNTOF(tchScrnDim), L"%ix%i " DEF_WIN_POSITION_STRG, + GetSystemMetrics(SM_CXVIRTUALSCREEN), GetSystemMetrics(SM_CYVIRTUALSCREEN)); + StringCchPrintf(Settings2.DefaultWindowPosition, COUNTOF(Settings2.DefaultWindowPosition), + WINDOWPOS_STRGFORMAT, wi.x, wi.y, wi.cx, wi.cy, wi.dpi, wi.max); + IniFileSetString(Paths.IniFile, Constants.Window_Section, tchScrnDim, Settings2.DefaultWindowPosition); + IniFileDelete(Paths.IniFile, Constants.Settings2_Section, DEF_WIN_POSITION_STRG, true); +} + static WININFO _GetDefaultWinInfoByStrg(HWND hwnd, LPCWSTR strDefaultWinPos) { hwnd = hwnd ? hwnd : GetDesktopWindow(); @@ -1386,13 +1397,7 @@ static WININFO _GetDefaultWinInfoByStrg(HWND hwnd, LPCWSTR strDefaultWinPos) else { wi = wiDef; // overwrite bad defined default position - WCHAR tchScrnDim[64] = { L'\0' }; - StringCchPrintf(tchScrnDim, COUNTOF(tchScrnDim), L"%ix%i " DEF_WIN_POSITION_STRG, - GetSystemMetrics(SM_CXVIRTUALSCREEN), GetSystemMetrics(SM_CYVIRTUALSCREEN)); - StringCchPrintf(Settings2.DefaultWindowPosition, COUNTOF(Settings2.DefaultWindowPosition), - WINDOWPOS_STRGFORMAT, wi.x, wi.y, wi.cx, wi.cy, wi.dpi, wi.max); - IniFileSetString(Paths.IniFile, Constants.Window_Section, tchScrnDim, Settings2.DefaultWindowPosition); - IniFileDelete(Paths.IniFile, Constants.Settings2_Section, DEF_WIN_POSITION_STRG, true); + _IniFileWriteDefaultWindowPosition(wi); } return wi; } @@ -7128,13 +7133,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) WINDOWPOS_STRGFORMAT, wi.x, wi.y, wi.cx, wi.cy, wi.dpi, (int)wi.max); if (Globals.bCanSaveIniFile) { // overwrite bad defined default position - WCHAR tchScrnDim[64] = { L'\0' }; - StringCchPrintf(tchScrnDim, COUNTOF(tchScrnDim), L"%ix%i " DEF_WIN_POSITION_STRG, - GetSystemMetrics(SM_CXVIRTUALSCREEN), GetSystemMetrics(SM_CYVIRTUALSCREEN)); - StringCchPrintf(Settings2.DefaultWindowPosition, COUNTOF(Settings2.DefaultWindowPosition), - WINDOWPOS_STRGFORMAT, wi.x, wi.y, wi.cx, wi.cy, wi.dpi, wi.max); - IniFileSetString(Paths.IniFile, Constants.Window_Section, tchScrnDim, Settings2.DefaultWindowPosition); - IniFileDelete(Paths.IniFile, Constants.Settings2_Section, DEF_WIN_POSITION_STRG, true); + _IniFileWriteDefaultWindowPosition(wi); } g_DefWinInfo = wi; //~GetWinInfoByFlag(-1); // use current win pos as new default }