]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/radiobox.cpp
*** empty log message ***
[wxWidgets.git] / src / msw / radiobox.cpp
index 5d50a6c2f036df916193d489bbe05b4f98fdf12b..6f63ec57b4b6c7c43391f09c01d486faaef18c76 100644 (file)
@@ -147,19 +147,8 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
 
   SetFont(* parent->GetFont());
 
-  // Subclass again for purposes of dialog editing mode
   SubclassWin((WXHWND)m_hWnd);
 
-/* Label will be the same as button font now.
-  if (labelFont)
-  {
-    labelFont->RealizeResource();
-    if (labelFont->GetResourceHandle())
-      SendMessage(ms_handle,WM_SETFONT,
-                (WPARAM)labelFont->GetResourceHandle(),0L);
-  }
-*/
-
   // Some radio boxes test consecutive id.
   (void)NewControlId() ;
   m_radioButtons = new WXHWND[n];
@@ -255,15 +244,6 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
                            0,0,0,0,
                            (HWND) parent->GetHWND(), (HMENU) m_windowId, wxGetInstance(), NULL) ;
 
-/*
-  if (labelFont)
-  {
-    labelFont->RealizeResource();
-    if (labelFont->GetResourceHandle())
-      SendMessage(ms_handle,WM_SETFONT,
-                (WPARAM)labelFont->GetResourceHandle(),0L);
-  }
-*/
   the_handle = (HWND) parent->GetHWND();
 
 #if CTL3D
@@ -410,6 +390,8 @@ void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags)
   if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
     yy = currentY;
 
+  AdjustForParentClientOrigin(xx, yy, sizeFlags);
+
   char buf[400];
 
   int y_offset = yy;
@@ -453,7 +435,7 @@ void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags)
 
     int nbHor,nbVer;
 
-    if (m_windowStyle & wxRA_VERTICAL)
+    if (m_windowStyle & wxRA_HORIZONTAL)
     {
       nbVer = m_majorDim ;
       nbHor = (m_noItems+m_majorDim-1)/m_majorDim ;
@@ -494,7 +476,7 @@ void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags)
     // Bidimensional radio adjustment
     if (i&&((i%m_majorDim)==0)) // Why is this omitted for i = 0?
     {
-      if (m_windowStyle & wxRA_VERTICAL)
+      if (m_windowStyle & wxRA_HORIZONTAL)
       {
         y_offset = startY;
         x_offset += maxWidth + cx1 ;
@@ -527,7 +509,7 @@ void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags)
     }
 
     MoveWindow((HWND) m_radioButtons[i],x_offset,y_offset,eachWidth,eachHeight,TRUE);
-    if (m_windowStyle & wxRA_VERTICAL)
+    if (m_windowStyle & wxRA_HORIZONTAL)
     {
       y_offset += maxHeight;
       if (m_radioWidth[0]>0)
@@ -576,6 +558,15 @@ void wxRadioBox::GetPosition(int *x, int *y) const
   {
     ::ScreenToClient((HWND) parent->GetHWND(), &point);
   }
+  // We may be faking the client origin.
+  // So a window that's really at (0, 30) may appear
+  // (to wxWin apps) to be at (0, 0).
+  if (GetParent())
+  {
+    wxPoint pt(GetParent()->GetClientAreaOrigin());
+    point.x -= pt.x;
+    point.y -= pt.y;
+  }
 
   *x = point.x;
   *y = point.y;
@@ -599,11 +590,6 @@ void wxRadioBox::SetLabel(const wxString& label)
 
 void wxRadioBox::SetFocus(void)
 {
-/*
-  if (m_noItems > 0)
-   ::SetFocus((HWND) m_radioButtons[0]);
-*/
-/* Begin Alberts Patch 26. 5. 1997*/
   if (m_noItems > 0)
   {
     if (m_selectedButton == -1)
@@ -611,7 +597,6 @@ void wxRadioBox::SetFocus(void)
     else
       ::SetFocus((HWND) m_radioButtons[m_selectedButton]);
   }
-/* Ende Alberts Patch*/
 
 }
 
@@ -714,36 +699,6 @@ bool wxRadioBox::SetStringSelection (const wxString& s)
     return FALSE;
 }
 
-/*
-void wxRadioBox::SetLabelFont(wxFont *font)
-{
-  // Decrement the usage count of the old label font
-  // (we may be able to free it up)
-  if (labelFont)
-    labelFont->ReleaseResource();
-
-  labelFont = font;
-
-  // Increment usage count
-  if (font)
-    font->UseResource();
-
-  HWND hWnd = GetHWND();
-  if (hWnd != 0)
-  {
-    if (font)
-    {
-      font->RealizeResource();
-
-      if (font->GetResourceHandle())
-        SendMessage(hWnd, WM_SETFONT,
-                  (WPARAM)font->GetResourceHandle(),TRUE);
-    }
-  }
-}
-
-*/
-
 bool wxRadioBox::ContainsHWND(WXHWND hWnd) const
 {
        int i;
@@ -759,4 +714,21 @@ void wxRadioBox::Command (wxCommandEvent & event)
   ProcessCommand (event);
 }
 
+long wxRadioBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
+{
+       if (nMsg == WM_NCHITTEST)
+    {
+        int xPos = LOWORD(lParam);  // horizontal position of cursor
+        int yPos = HIWORD(lParam);  // vertical position of cursor
+
+        ScreenToClient(&xPos, &yPos);
+
+        // Make sure you can drag by the top of the groupbox, but let
+        // other (enclosed) controls get mouse events also
+        if (yPos < 10)
+            return (long)HTCLIENT;
+    }
+
+       return wxControl::MSWWindowProc(nMsg, wParam, lParam);
+}