]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/radiobox.cpp
corrections for Mac OS X
[wxWidgets.git] / src / msw / radiobox.cpp
index 529c46dbd38c839197dc9df1847e31f89faef991..54cd5c5a9708a839d3b3519e36fc10dd382aecce 100644 (file)
@@ -1025,6 +1025,49 @@ LRESULT APIENTRY _EXPORT wxRadioBtnWndProc(HWND hwnd,
                     }
                 }
             }
+            break;
+
+#ifdef __WIN32__
+        case WM_HELP:
+        {
+            wxRadioBox *radiobox = (wxRadioBox *)
+                    ::GetWindowLong(hwnd, GWL_USERDATA);
+
+            wxCHECK_MSG( radiobox, 0, wxT("radio button without radio box?") );
+
+            bool processed = TRUE;
+
+            HELPINFO* info = (HELPINFO*) lParam;
+            // Don't yet process menu help events, just windows
+            if (info->iContextType == HELPINFO_WINDOW)
+            {
+                wxWindow* subjectOfHelp = radiobox;
+                bool eventProcessed = FALSE;
+                while (subjectOfHelp && !eventProcessed)
+                {
+                    wxHelpEvent helpEvent(wxEVT_HELP, subjectOfHelp->GetId(), wxPoint(info->MousePos.x, info->MousePos.y) ) ; // info->iCtrlId);
+                    helpEvent.SetEventObject(radiobox);
+                    eventProcessed = radiobox->GetEventHandler()->ProcessEvent(helpEvent);
+
+                    // Go up the window hierarchy until the event is handled (or not)
+                    subjectOfHelp = subjectOfHelp->GetParent();
+                }
+                processed = eventProcessed;
+            }
+            else if (info->iContextType == HELPINFO_MENUITEM)
+            {
+                wxHelpEvent helpEvent(wxEVT_HELP, info->iCtrlId) ;
+                helpEvent.SetEventObject(radiobox);
+                processed = radiobox->GetEventHandler()->ProcessEvent(helpEvent);
+            }
+            else processed = FALSE;
+
+            if (processed)
+                return 0;
+
+            break;
+        }
+#endif
     }
 
     return ::CallWindowProc(CASTWNDPROC s_wndprocRadioBtn, hwnd, message, wParam, lParam);