Fix to adjust the position of the partial Frame
authorChoi Munseok <ms47.choi@samsung.com>
Sat, 13 Apr 2013 15:14:55 +0000 (00:14 +0900)
committerChoi Munseok <ms47.choi@samsung.com>
Sat, 13 Apr 2013 15:14:55 +0000 (00:14 +0900)
Change-Id: If042c8254c1435e350620fe26ce3bbb77574d92a
Signed-off-by: Choi Munseok <ms47.choi@samsung.com>
src/ui/controls/FUiCtrl_FormImpl.cpp
src/ui/controls/FUiCtrl_FrameImpl.cpp

index 30b77d3..8b51414 100644 (file)
@@ -1132,17 +1132,61 @@ _FormImpl::OnChangeLayout(_ControlOrientation orientation)
                        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);
index c4a02a8..1700864 100644 (file)
@@ -351,17 +351,61 @@ _FrameImpl::OnChangeLayout(_ControlOrientation orientation)
                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);