+ //
+ // Add space at the end of the menu for the submenu expansion arrow.
+ // This will also allow offsetting the accel string from the right edge
+ //
+ *pWidth = (size_t)(*pWidth + GetDefaultMarginWidth() * 1.5);
+
+ //
+ // JACS: items still look too tightly packed, so adding 5 pixels.
+ //
+ (*pHeight) += 5;
+
+ //
+ // Ray Gilbert's changes - Corrects the problem of a BMP
+ // being placed next to text in a menu item, and the BMP does
+ // not match the size expected by the system. This will
+ // resize the space so the BMP will fit. Without this, BMPs
+ // must be no larger or smaller than 16x16.
+ //
+ if (m_bmpChecked.Ok())
+ {
+ //
+ // Is BMP height larger then text height?
+ //
+ size_t nAdjustedHeight = m_bmpChecked.GetHeight() +
+ wxSystemSettings::GetMetric(wxSYS_EDGE_Y);
+ if (*pHeight < nAdjustedHeight)
+ *pHeight = nAdjustedHeight;
+
+ //
+ // Does BMP encroach on default check menu position?
+ //
+ size_t nAdjustedWidth = m_bmpChecked.GetWidth() +
+ (wxSystemSettings::GetMetric(wxSYS_EDGE_X) * 2);
+
+ //
+ // Do we need to widen margin to fit BMP?
+ //
+ if ((size_t)GetMarginWidth() < nAdjustedWidth)
+ SetMarginWidth(nAdjustedWidth);
+
+ //
+ // Add the size of the bitmap to our total size...
+ //
+ *pWidth += GetMarginWidth();
+ }
+
+ //
+ // Add the size of the bitmap to our total size - even if we don't have
+ // a bitmap we leave room for one...
+ //
+ *pWidth += GetMarginWidth();
+
+ //
+ // Make sure that this item is at least as
+ // tall as the user's system settings specify
+ //
+ const size_t heightStd = 6; // FIXME: get value from the system
+ if ( *pHeight < heightStd )
+ *pHeight = heightStd;
+ m_nHeight = *pHeight; // remember height for use in OnDrawItem
+ return true;