]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/menu.h
Only compile wxStd{Input,Output}Stream if wxUSE_STREAMS==1.
[wxWidgets.git] / include / wx / msw / menu.h
index 8262a9f1808cda4ab989df664cc4c93a96b740d8..f19beacbf76ea631772bf0a4eb7c2be684bf26f9 100644 (file)
@@ -67,16 +67,13 @@ public:
 
     bool MSWCommand(WXUINT param, WXWORD id);
 
-    // semi-private accessors
-        // get the window which contains this menu
-    wxWindow *GetWindow() const;
-        // get the menu handle
+    // get the native menu handle
     WXHMENU GetHMenu() const { return m_hMenu; }
 
 #if wxUSE_ACCEL
     // called by wxMenuBar to build its accel table from the accels of all menus
-    bool HasAccels() const { return !m_accels.IsEmpty(); }
-    size_t GetAccelCount() const { return m_accels.GetCount(); }
+    bool HasAccels() const { return !m_accels.empty(); }
+    size_t GetAccelCount() const { return m_accels.size(); }
     size_t CopyAccels(wxAcceleratorEntry *accels) const;
 
     // called by wxMenuItem when its accels changes
@@ -84,8 +81,32 @@ public:
 
     // helper used by wxMenu itself (returns the index in m_accels)
     int FindAccel(int id) const;
+
+    // used only by wxMDIParentFrame currently but could be useful elsewhere:
+    // returns a new accelerator table with accelerators for just this menu
+    // (shouldn't be called if we don't have any accelerators)
+    wxAcceleratorTable *CreateAccelTable() const;
 #endif // wxUSE_ACCEL
 
+#if wxUSE_OWNER_DRAWN
+
+    int GetMaxAccelWidth()
+    {
+        if (m_maxAccelWidth == -1)
+            CalculateMaxAccelWidth();
+        return m_maxAccelWidth;
+    }
+
+    void ResetMaxAccelWidth()
+    {
+        m_maxAccelWidth = -1;
+    }
+
+private:
+    void CalculateMaxAccelWidth();
+
+#endif // wxUSE_OWNER_DRAWN
+
 protected:
     virtual wxMenuItem* DoAppend(wxMenuItem *item);
     virtual wxMenuItem* DoInsert(size_t pos, wxMenuItem *item);
@@ -115,6 +136,17 @@ private:
     wxAcceleratorArray m_accels;
 #endif // wxUSE_ACCEL
 
+#if wxUSE_OWNER_DRAWN
+    // true if the menu has any ownerdrawn items
+    bool m_ownerDrawn;
+
+    // the max width of menu items bitmaps
+    int m_maxBitmapWidth;
+
+    // the max width of menu items accels
+    int m_maxAccelWidth;
+#endif // wxUSE_OWNER_DRAWN
+
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxMenu)
 };
 
@@ -183,9 +215,6 @@ public:
 #endif
 
 #if wxUSE_ACCEL
-    // get the accel table for all the menus
-    const wxAcceleratorTable& GetAccelTable() const { return m_accelTable; }
-
     // update the accel table (must be called after adding/deleting a menu)
     void RebuildAccelTable();
 #endif // wxUSE_ACCEL
@@ -213,10 +242,6 @@ protected:
     // Return the MSW position for a wxMenu which is sometimes different from
     // the wxWidgets position.
     int MSWPositionForWxMenu(wxMenu *menu, int wxpos);
-#if wxUSE_ACCEL
-    // the accelerator table for all accelerators in all our menus
-    wxAcceleratorTable m_accelTable;
-#endif // wxUSE_ACCEL
 
 #if defined(__WXWINCE__) && wxUSE_TOOLBAR
     wxToolBar*  m_toolBar;