[commit] r2804 - trunk/SDK/DecoratorLib

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Fri Oct 1 11:44:30 CDT 2021


Author: ksmyth
Date: Fri Oct  1 11:44:30 2021
New Revision: 2804

Log:
Decorator drag to resize: fix position for high-dpi

Modified:
   trunk/SDK/DecoratorLib/SizeTrackerDialog.cpp
   trunk/SDK/DecoratorLib/SizeTrackerDialog.h

Modified: trunk/SDK/DecoratorLib/SizeTrackerDialog.cpp
==============================================================================
--- trunk/SDK/DecoratorLib/SizeTrackerDialog.cpp	Fri Oct  1 11:44:26 2021	(r2803)
+++ trunk/SDK/DecoratorLib/SizeTrackerDialog.cpp	Fri Oct  1 11:44:30 2021	(r2804)
@@ -87,12 +87,12 @@
 	switch(m_resizeType) {
 		case RightEdgeResize:			dx = SizeTrackerMargin, dy = 0;																	break;
 		case BottomEdgeResize:			dx = 0, dy = SizeTrackerMargin;																	break;
-		case LeftEdgeResize:			dx = -(m_initialRect.Width() + SizeTrackerMargin), dy = 0;											break;
-		case TopEdgeResize:				dx = 0, dy = -(m_initialRect.Height() + SizeTrackerMargin);											break;
-		case TopLeftCornerResize:		dx = -(m_initialRect.Width() + SizeTrackerMargin), dy = -(m_initialRect.Height() + SizeTrackerMargin);	break;
-		case TopRightCornerResize:		dx = SizeTrackerMargin, dy = -(m_initialRect.Height() + SizeTrackerMargin);							break;
+		case LeftEdgeResize:			dx = -(SizeTrackerWidth + SizeTrackerMargin), dy = 0;											break;
+		case TopEdgeResize:				dx = 0, dy = -(SizeTrackerHeight + SizeTrackerMargin);											break;
+		case TopLeftCornerResize:		dx = -(SizeTrackerWidth + SizeTrackerMargin), dy = -(SizeTrackerMargin);	break;
+		case TopRightCornerResize:		dx = SizeTrackerMargin, dy = -(SizeTrackerHeight + SizeTrackerMargin);							break;
 		case BottomRightCornerResize:	dx = SizeTrackerMargin, dy = SizeTrackerMargin;													break;
-		case BottomLeftCornerResize:	dx = -(m_initialRect.Width() + SizeTrackerMargin), dy = SizeTrackerMargin;							break;
+		case BottomLeftCornerResize:	dx = -(SizeTrackerWidth + SizeTrackerMargin), dy = SizeTrackerMargin;							break;
 	}
 
 	CPoint offsetted = pt;
@@ -108,8 +108,13 @@
 	m_mouseClick				= mouseClick;
 	m_intendedParentCWnd		= parentCWnd;
 	m_bPermanentCWnd			= isPermanentCWnd;
-	m_transformHDC				= transformHDC;
 	m_resizeType				= resizeType;
+
+	// n.b. do not save transformHDC, it is temporary
+	m_mapmode = GetMapMode(transformHDC);
+	ASSERT(mapmode == MM_ISOTROPIC);
+	GetViewportOrgEx(transformHDC, &m_viewportOrg);
+	GetViewportExtEx(transformHDC, &m_viewportExt);
 }
 
 void CSizeTrackerDialog::AdjustPositionAndText(const CPoint& point, const CRect& location)
@@ -121,6 +126,15 @@
 
 	m_staticWnd->SetWindowText(GetStrToDisplay(location));
 	CPoint adjPos = GetAdjustedPosition(point);
+
+	CClientDC transformDC(this);
+	transformDC.SetMapMode(m_mapmode);
+	transformDC.SetViewportExt(m_viewportExt);
+	transformDC.SetWindowExt(100, 100);
+	transformDC.SetViewportOrg(m_viewportOrg);
+
+	BOOL success = ::LPtoDP(transformDC, &adjPos, 1);
+
 	MoveWindow(adjPos.x, adjPos.y, m_initialRect.Width(), m_initialRect.Height());
 }
 

Modified: trunk/SDK/DecoratorLib/SizeTrackerDialog.h
==============================================================================
--- trunk/SDK/DecoratorLib/SizeTrackerDialog.h	Fri Oct  1 11:44:26 2021	(r2803)
+++ trunk/SDK/DecoratorLib/SizeTrackerDialog.h	Fri Oct  1 11:44:30 2021	(r2804)
@@ -47,11 +47,13 @@
 	CWnd*					m_intendedParentCWnd;
 	bool					m_bPermanentCWnd;
 	CWnd*					m_realParentCWnd;
-	HDC						m_transformHDC;
 	CRect					m_boundsLimit;
 	CPoint					m_mouseClick;	// Screen coordinates of the mouse click which invoked the in-place edit
 	CRect					m_initialRect;
 	ResizeType				m_resizeType;
+	int m_mapmode;
+	CPoint m_viewportOrg;
+	CSize m_viewportExt;
 
 	CString	GetStrToDisplay(const CRect& location);
 	CPoint	GetAdjustedPosition(const CPoint& pt);


More information about the gme-commit mailing list