+
+ if (!m_strAccel.IsEmpty())
+ {
+ // measure the accelerator string, and add it's width to
+ // the total item width, plus 16 (Accelerators are right justified,
+ // with the right edge of the text rectangle 16 pixels left of
+ // the right edge of the menu)
+
+ int accel_width, accel_height;
+ dc.GetTextExtent(m_strAccel, &accel_width, &accel_height);
+ *pwidth += accel_width;
+ }
+
+ // 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) (GetDefaultMarginWidth() * 1.5);
+
+ // JACS: items still look too tightly packed, so adding 5 pixels.
+ (*pheight) = (*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 adjustedHeight = m_bmpChecked.GetHeight() +
+ wxSystemSettings::GetMetric(wxSYS_EDGE_Y);
+ if (*pheight < adjustedHeight)
+ *pheight = adjustedHeight;
+
+ // Does BMP encroach on default check menu position?
+ size_t adjustedWidth = m_bmpChecked.GetWidth() +
+ (wxSystemSettings::GetMetric(wxSYS_EDGE_X) * 2);
+// if (ms_nDefaultMarginWidth < adjustedWidth)
+// *pwidth += adjustedWidth - ms_nDefaultMarginWidth;
+
+ // Do we need to widen margin to fit BMP?
+ if ((size_t)GetMarginWidth() != adjustedWidth)
+ SetMarginWidth(adjustedWidth);
+
+ // 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
+ if (*pheight < m_nMinHeight)
+ *pheight = m_nMinHeight;
+