From 14fcde26fd930df86066416cfaab4710d91ab3ce Mon Sep 17 00:00:00 2001 From: cxl Date: Mon, 2 May 2011 11:42:50 +0000 Subject: [PATCH] *CtrlCore: Fixed issue with large layout (too big for screen) and WM_GETMINMAXINFO git-svn-id: svn://ultimatepp.org/upp/trunk@3395 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlCore/CtrlPos.cpp | 3 ++- uppsrc/CtrlCore/Win32Proc.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/uppsrc/CtrlCore/CtrlPos.cpp b/uppsrc/CtrlCore/CtrlPos.cpp index a83c32f49..67a22480b 100644 --- a/uppsrc/CtrlCore/CtrlPos.cpp +++ b/uppsrc/CtrlCore/CtrlPos.cpp @@ -2,7 +2,7 @@ NAMESPACE_UPP -#define LLOG(x) // LOG(x) +#define LLOG(x) // DLOG(x) #define LTIMING(x) // RTIMING(x) bool Ctrl::Logc::IsEmpty() const { @@ -233,6 +233,7 @@ void Ctrl::UpdateRect0() Rect r = GetWorkArea(); rect = CalcRect(r, r); } + LLOG("UpdateRect0 " << Name() << " to " << rect); LTIMING("UpdateRect0 SyncLayout"); SyncLayout(); } diff --git a/uppsrc/CtrlCore/Win32Proc.cpp b/uppsrc/CtrlCore/Win32Proc.cpp index ff79621de..3ae236660 100644 --- a/uppsrc/CtrlCore/Win32Proc.cpp +++ b/uppsrc/CtrlCore/Win32Proc.cpp @@ -440,8 +440,12 @@ LRESULT Ctrl::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { case WM_GETMINMAXINFO: { MINMAXINFO *mmi = (MINMAXINFO *)lParam; - Rect minr(Point(50, 50), GetMinSize()); - Rect maxr(Point(50, 50), GetMaxSize()); + Rect frmrc = Size(200, 200); + ::AdjustWindowRect(frmrc, WS_OVERLAPPEDWINDOW, FALSE); + Size msz = Ctrl::GetWorkArea().Deflated(-frmrc.left, -frmrc.top, + frmrc.right - 200, frmrc.bottom - 200).GetSize(); + Rect minr(Point(50, 50), min(msz, GetMinSize())); + Rect maxr(Point(50, 50), min(msz, GetMaxSize())); dword style = ::GetWindowLong(hwnd, GWL_STYLE); dword exstyle = ::GetWindowLong(hwnd, GWL_EXSTYLE); AdjustWindowRectEx(minr, style, FALSE, exstyle);