]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/menu.cpp
Use generic collapsible pane for wxOS2.
[wxWidgets.git] / src / univ / menu.cpp
index 80023293d8314af45d79022ca1b4c637a1f5d665..ba228442fa3f4b0cdad986bd2e63897bbad421df 100644 (file)
 
 #if wxUSE_MENUS
 
+#include "wx/menu.h"
+#include "wx/stockitem.h"
+
 #ifndef WX_PRECOMP
     #include "wx/dynarray.h"
     #include "wx/control.h"      // for FindAccelIndex()
-    #include "wx/menu.h"
     #include "wx/settings.h"
     #include "wx/accel.h"
     #include "wx/log.h"
     #include "wx/frame.h"
+    #include "wx/dcclient.h"
 #endif // WX_PRECOMP
 
 #include "wx/popupwin.h"
 #include "wx/evtloop.h"
-#include "wx/dcclient.h"
 
 #include "wx/univ/renderer.h"
 
@@ -121,7 +123,7 @@ class wxPopupMenuWindow : public wxPopupTransientWindow
 public:
     wxPopupMenuWindow(wxWindow *parent, wxMenu *menu);
 
-    ~wxPopupMenuWindow();
+    virtual ~wxPopupMenuWindow();
 
     // override the base class version to select the first item initially
     virtual void Popup(wxWindow *focus = NULL);
@@ -345,7 +347,7 @@ void wxPopupMenuWindow::SetCurrentItem(wxMenuItemIter node)
 
 void wxPopupMenuWindow::ChangeCurrent(wxMenuItemIter node)
 {
-    if ( node != m_nodeCurrent )
+    if ( !m_nodeCurrent || !node || (node != m_nodeCurrent) )
     {
         wxMenuItemIter nodeOldCurrent = m_nodeCurrent;
 
@@ -761,7 +763,7 @@ void wxPopupMenuWindow::ProcessMouseMove(const wxPoint& pt)
     // the window (see below)
     if ( node )
     {
-        if ( node != m_nodeCurrent )
+        if ( !m_nodeCurrent || (node != m_nodeCurrent) )
         {
             ChangeCurrent(node);
 
@@ -1541,6 +1543,7 @@ void wxMenuItem::SetText(const wxString& text)
     if ( text != m_text )
     {
         // first call the base class version to change m_text
+        // (and also check if we don't have a stock menu item)
         wxMenuItemBase::SetText(text);
 
         UpdateAccelInfo();