]> git.saurik.com Git - wxWidgets.git/commitdiff
Further improvements in composite controls (wxRadioBox) on PalmOS.
authorWłodzimierz Skiba <abx@abx.art.pl>
Thu, 24 Feb 2005 10:51:11 +0000 (10:51 +0000)
committerWłodzimierz Skiba <abx@abx.art.pl>
Thu, 24 Feb 2005 10:51:11 +0000 (10:51 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32341 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/palmos/control.cpp
src/palmos/radiobox.cpp
src/palmos/window.cpp

index 90a0b34af30b9c75ca3c1679f52d68dcbe410189..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)
index a9449d5594b15032122cac51f9fa535c67083788..a82b1e6f6f95a306e22ececab76ded7a6295a914 100644 (file)
@@ -254,6 +254,8 @@ void wxRadioBox::DoMoveWindow(int x, int y, int width, int height)
 {
     wxRect oldRect = GetRect();
 
+    m_pos.x = x;
+    m_pos.y = y;
     m_size.x = width;
     m_size.y = height;
 
@@ -292,7 +294,7 @@ void wxRadioBox::DoMoveWindow(int x, int y, int width, int height)
 // get the origin of the client area in the client coordinates
 wxPoint wxRadioBox::GetClientAreaOrigin() const
 {
-    return GetParent()->GetClientAreaOrigin() + GetPosition();
+    return GetPosition();
 }
 
 void wxRadioBox::SetString(int item, const wxString& label)
index b46aad8784b9bbe46bda232e9d739475b51642ff..02a43e497a0069078e6c48565a475b34bc6ca860 100644 (file)
@@ -448,10 +448,10 @@ void wxWindowPalm::Refresh(bool eraseBack, const wxRect *rect)
         if(rect)
         {
             RectangleType dirtyRect;
-            dirtyRect.topLeft.x = rect->GetX();
-            dirtyRect.topLeft.y = rect->GetY();
-            dirtyRect.extent.x = rect->GetWidth();
-            dirtyRect.extent.y = rect->GetHeight();
+            dirtyRect.topLeft.x = rect->GetX() - 1;
+            dirtyRect.topLeft.y = rect->GetY() - 1;
+            dirtyRect.extent.x = rect->GetWidth() + 1;
+            dirtyRect.extent.y = rect->GetHeight() + 1;
             WinInvalidateRect(handle, &dirtyRect);
         }
         else
@@ -510,6 +510,10 @@ void wxWindowPalm::DoGetClientSize(int *x, int *y) const
 
 void wxWindowPalm::DoGetPosition(int *x, int *y) const
 {
+    if(x)
+        *x = 0;
+    if(y)
+        *y = 0;
 }
 
 void wxWindowPalm::DoScreenToClient(int *x, int *y) const