[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