[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34500] trunk/blender/intern/ghost/intern/ GHOST_WindowWin32.cpp: Apply multimonitor fix part of patch [#25612]
Nathan Letwory
nathan at letworyinteractive.com
Wed Jan 26 13:19:20 CET 2011
Revision: 34500
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34500
Author: jesterking
Date: 2011-01-26 12:19:19 +0000 (Wed, 26 Jan 2011)
Log Message:
-----------
Apply multimonitor fix part of patch [#25612]
Submitted by Alexander Kuznetsov
Fixes [#23630] Negative OS screen coords not stored/used
Reported by Mort (mnme)
Modified Paths:
--------------
trunk/blender/intern/ghost/intern/GHOST_WindowWin32.cpp
Modified: trunk/blender/intern/ghost/intern/GHOST_WindowWin32.cpp
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_WindowWin32.cpp 2011-01-26 10:46:43 UTC (rev 34499)
+++ trunk/blender/intern/ghost/intern/GHOST_WindowWin32.cpp 2011-01-26 12:19:19 UTC (rev 34500)
@@ -141,31 +141,45 @@
{
if (state != GHOST_kWindowStateFullScreen) {
RECT rect;
+ MONITORINFO monitor;
GHOST_TUns32 tw, th;
width += GetSystemMetrics(SM_CXSIZEFRAME)*2;
height += GetSystemMetrics(SM_CYSIZEFRAME)*2 + GetSystemMetrics(SM_CYCAPTION);
+ rect.left = left;
+ rect.right = left + width;
+ rect.top = top;
+ rect.bottom = top + height;
+
+ monitor.cbSize=sizeof(monitor);
+ monitor.dwFlags=0;
+
// take taskbar into account
- SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
- th = rect.bottom - rect.top;
- tw = rect.right - rect.left;
+ GetMonitorInfo(MonitorFromRect(&rect,MONITOR_DEFAULTTONEAREST),&monitor);
+ th = monitor.rcWork.bottom - monitor.rcWork.top;
+ tw = monitor.rcWork.right - monitor.rcWork.left;
+
if(tw < width)
{
width = tw;
- left = rect.left;
+ left = monitor.rcWork.left;
}
- else if(left < rect.left)
- left = rect.left;
+ else if(monitor.rcWork.right < left + (int)width)
+ left = monitor.rcWork.right - width;
+ else if(left < monitor.rcWork.left)
+ left = monitor.rcWork.left;
if(th < height)
{
height = th;
- top = rect.top;
+ top = monitor.rcWork.top;
}
- else if(top < rect.top)
- top = rect.top;
+ else if(monitor.rcWork.bottom < top + (int)height)
+ top = monitor.rcWork.bottom - height;
+ else if(top < monitor.rcWork.top)
+ top = monitor.rcWork.top;
m_hWnd = ::CreateWindow(
s_windowClassName, // pointer to registered class name
More information about the Bf-blender-cvs
mailing list