]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/radiobox.cpp
Some improvements to accessibility behaviour
[wxWidgets.git] / src / msw / radiobox.cpp
index 94deec9009b37905cb42910bb6da1caa3b3307d5..f5bc5e6c6f88ef49d95a89ccb855dc6d47f737e0 100644 (file)
@@ -413,15 +413,21 @@ wxSize wxRadioBox::GetTotalButtonSize(const wxSize& sizeBtn) const
 
     int extraHeight = cy1;
 
+    /* We'll assume the adjustments below are OK for Win 3.1 too
 #if defined(CTL3D) && !CTL3D
     // Requires a bigger group box in plain Windows
     extraHeight *= 3;
     extraHeight /= 2;
 #endif
-
+    */
+    
     int height = GetNumVer() * sizeBtn.y + cy1/2 + extraHeight;
     int width  = GetNumHor() * (sizeBtn.x + cx1) + cx1;
 
+    // Add extra space under the label, if it exists.
+    if (!wxControl::GetLabel().IsEmpty())
+        height += cy1/2;
+
     // and also wide enough for its label
     int widthLabel;
     GetTextExtent(GetTitle(), &widthLabel, NULL);
@@ -507,10 +513,9 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
     x_offset += cx1;
     y_offset += cy1;
 
-#if defined(CTL3D) && (!CTL3D)
-    y_offset += (int)(cy1/2); // Fudge factor since buttons overlapped label
-    // JACS 2/12/93. CTL3D draws group label quite high.
-#endif
+    // Add extra space under the label, if it exists.
+    if (!wxControl::GetLabel().IsEmpty())
+        y_offset += cy1/2;
 
     int startX = x_offset;
     int startY = y_offset;
@@ -786,6 +791,10 @@ long wxRadioBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
             }
 #endif // Win32
 
+        // VZ: this code breaks radiobox redrawing under Windows XP, don't use
+        //     it. If you need to get messages from the static controls,
+        //     create them as a child of another (non static) window
+#if 0
         // This is required for the radiobox to be sensitive to mouse input,
         // e.g. for Dialog Editor.
         case WM_NCHITTEST:
@@ -801,6 +810,7 @@ long wxRadioBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
                     return (long)HTCLIENT;
             }
             break;
+#endif // 0
     }
 
     return wxControl::MSWWindowProc(nMsg, wParam, lParam);
@@ -874,7 +884,7 @@ LRESULT APIENTRY _EXPORT wxRadioBtnWndProc(HWND hwnd,
         case WM_NOTIFY:
             {
                 NMHDR* hdr = (NMHDR *)lParam;
-                if ( (int)hdr->code == TTN_NEEDTEXT )
+                if ( hdr->code == TTN_NEEDTEXT )
                 {
                     wxRadioBox *radiobox = (wxRadioBox *)
                         ::GetWindowLong(hwnd, GWL_USERDATA);