]> git.saurik.com Git - wxWidgets.git/blobdiff - src/palmos/control.cpp
Fixed wxPropertySheetDialog for Smartphone
[wxWidgets.git] / src / palmos / control.cpp
index 5f60d345ca7cd78d5216660c50dd8f2e8c190296..3b9b881995a1914e6f47fb3811597882f4537597 100644 (file)
@@ -123,7 +123,14 @@ bool wxControl::PalmCreateControl(ControlStyleType style,
             w = size.x == wxDefaultCoord ? 1 : size.x,
             h = size.y == wxDefaultCoord ? 1 : size.y;
 
-    AdjustForParentClientOrigin(x, y);
+    wxWindow *win = this;
+    while(win->GetParent())
+    {
+        win = win->GetParent();
+        wxPoint pt(win->GetClientAreaOrigin());
+        x += pt.x;
+        y += pt.y;
+    }
 
     ControlType *control = CtlNewControl(
                                (void **)&form,
@@ -299,18 +306,23 @@ void wxControl::DoSetBounds( RectangleType &rect )
 
 void wxControl::DoGetPosition( int *x, int *y ) const
 {
+    int ox = 0, oy = 0;
+    AdjustForParentClientOrigin(ox, oy);
+
     RectangleType rect;
     DoGetBounds(rect);
+
     if(x)
-        *x = rect.topLeft.x;
+        *x = rect.topLeft.x - ox;
     if(y)
-        *y = rect.topLeft.y;
+        *y = rect.topLeft.y - oy;
 }
 
 void wxControl::DoGetSize( int *width, int *height ) const
 {
     RectangleType rect;
     DoGetBounds(rect);
+
     if(width)
         *width = rect.extent.x;
     if(height)
@@ -332,7 +344,7 @@ void wxControl::DoMoveWindow(int x, int y, int width, int height)
 bool wxControl::Enable(bool enable)
 {
     ControlType *control = (ControlType *)GetObjectPtr();
-    if( (IsPalmControl()) || (control == NULL))
+    if( !IsPalmControl() || (control == NULL))
         return false;
     if( CtlEnabled(control) == enable)
         return false;
@@ -343,7 +355,7 @@ bool wxControl::Enable(bool enable)
 bool wxControl::IsEnabled() const
 {
     ControlType *control = (ControlType *)GetObjectPtr();
-    if( (IsPalmControl()) || (control == NULL))
+    if( !IsPalmControl() || (control == NULL))
         return false;
     return CtlEnabled(control);
 }