pFrameImpl->GetCore().SetMovable(true);
FloatPoint prevPoint = pFrameImpl->GetPositionF();
+ FloatDimension prevSize = pFrameImpl->GetSizeF();
+
FloatPoint curPoint(0.0f, 0.0f);
if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
{
- curPoint.x = portraitSize.width / portraitSize.height * prevPoint.x;
- curPoint.y = portraitSize.height / portraitSize.width * prevPoint.y;
+ if (prevPoint.x < 0.0f)
+ {
+ float prevGap = prevSize.width + prevPoint.x;
+ float curGap = portraitSize.width / portraitSize.height * prevGap;
+
+ curPoint.x = curGap - prevSize.width;
+ }
+ else
+ {
+ curPoint.x = portraitSize.width / portraitSize.height * prevPoint.x;
+ }
+
+ if (prevPoint.y < 0.0f)
+ {
+ float prevGap = prevSize.height + prevPoint.y;
+ float curGap = portraitSize.height / portraitSize.width * prevGap;
+
+ curPoint.y = curGap - prevSize.height;
+ }
+ else
+ {
+ curPoint.y = portraitSize.height / portraitSize.width * prevPoint.y;
+ }
}
else
{
- curPoint.x = portraitSize.height / portraitSize.width * prevPoint.x;
- curPoint.y = portraitSize.width / portraitSize.height * prevPoint.y;
+ if (prevPoint.x < 0.0f)
+ {
+ float prevGap = prevSize.width + prevPoint.x;
+ float curGap = portraitSize.height / portraitSize.width * prevGap;
+
+ curPoint.x = curGap - prevSize.width;
+ }
+ else
+ {
+ curPoint.x = portraitSize.height / portraitSize.width * prevPoint.x;
+ }
+
+ if (prevPoint.y < 0.0f)
+ {
+ float prevGap = prevSize.height + prevPoint.y;
+ float curGap = portraitSize.width / portraitSize.height * prevGap;
+
+ curPoint.y = curGap - prevSize.height;
+ }
+ else
+ {
+ curPoint.y = portraitSize.width / portraitSize.height * prevPoint.y;
+ }
}
pFrameImpl->SetPosition(curPoint);
SetMovable(true);
FloatPoint prevPoint = GetPositionF();
+ FloatDimension prevSize = GetSizeF();
+
FloatPoint curPoint(0.0f, 0.0f);
if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
{
- curPoint.x = screenSize.width / screenSize.height * prevPoint.x;
- curPoint.y = screenSize.height / screenSize.width * prevPoint.y;
+ if (prevPoint.x < 0.0f)
+ {
+ float prevGap = prevSize.width + prevPoint.x;
+ float curGap = screenSize.width / screenSize.height * prevGap;
+
+ curPoint.x = curGap - prevSize.width;
+ }
+ else
+ {
+ curPoint.x = screenSize.width / screenSize.height * prevPoint.x;
+ }
+
+ if (prevPoint.y < 0.0f)
+ {
+ float prevGap = prevSize.height + prevPoint.y;
+ float curGap = screenSize.height / screenSize.width * prevGap;
+
+ curPoint.y = curGap - prevSize.height;
+ }
+ else
+ {
+ curPoint.y = screenSize.height / screenSize.width * prevPoint.y;
+ }
}
else
{
- curPoint.x = screenSize.height / screenSize.width * prevPoint.x;
- curPoint.y = screenSize.width / screenSize.height * prevPoint.y;
+ if (prevPoint.x < 0.0f)
+ {
+ float prevGap = prevSize.width + prevPoint.x;
+ float curGap = screenSize.height / screenSize.width * prevGap;
+
+ curPoint.x = curGap - prevSize.width;
+ }
+ else
+ {
+ curPoint.x = screenSize.height / screenSize.width * prevPoint.x;
+ }
+
+ if (prevPoint.y < 0.0f)
+ {
+ float prevGap = prevSize.height + prevPoint.y;
+ float curGap = screenSize.width / screenSize.height * prevGap;
+
+ curPoint.y = curGap - prevSize.height;
+ }
+ else
+ {
+ curPoint.y = screenSize.width / screenSize.height * prevPoint.y;
+ }
}
SetPosition(curPoint);