]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/menu.cpp
return correct item and position from wxTreeEvent::GetItem/Point() (patch 1622166)
[wxWidgets.git] / src / msw / menu.cpp
index 5d48faebf45e0e4d59b75d1e0ba02e48c9c40633..316f1a9ce9a81b13ef197790efc57434db864b82 100644 (file)
@@ -400,6 +400,28 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
         pos += 2; // for the title itself and its separator
 
     BOOL ok = false;
+    
+#if wxUSE_OWNER_DRAWN
+    // Currently, mixing owner-drawn and non-owner-drawn items results in
+    // inconsistent margins, so we force this to be owner-drawn if any other
+    // items already are. Later we might want to use a boolean in the wxMenu
+    // to avoid search. Also we might make this fix unnecessary by getting the correct
+    // margin using NONCLIENTMETRICS.
+    if ( !pItem->IsOwnerDrawn() )
+    {
+        // Check if any other items are ownerdrawn, and make ownerdrawn if so
+        wxMenuItemList::compatibility_iterator node = GetMenuItems().GetFirst();
+        while (node)
+        {
+            if (node->GetData()->IsOwnerDrawn())
+            {
+                pItem->SetOwnerDrawn(true);
+                break;
+            }
+            node = node->GetNext();
+        }
+    }
+#endif
 
     // check if we have something more than a simple text item
 #if wxUSE_OWNER_DRAWN
@@ -416,7 +438,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
             // while our owner-drawn code is not
 
             // first compile-time check
-#if defined(MIIM_BITMAP) && !defined(__MINGW32__)
+#if defined(MIIM_BITMAP) && (_WIN32_WINNT >= 0x0500)
             WinStruct<MENUITEMINFO> mii;
 
             // now run-time one: MIIM_BITMAP only works under WinME/2000+