]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/listbox.cpp
fix for late redraw messages in a already destroyed window hierarchy
[wxWidgets.git] / src / mac / carbon / listbox.cpp
index 4a623eb59b72fee778dd86f83d20a604490bf3a1..8322a7a2f2e98643b062e46273b914445aa40f4c 100644 (file)
@@ -72,16 +72,19 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect
                                      Cell cell, short dataOffset, short dataLength,
                                      ListHandle listHandle )
 {
+    wxListBox*          list;
+    list = (wxListBox*) GetControlReference( (ControlHandle) GetListRefCon(listHandle) );
+    if ( list == NULL )
+        return ;
+    
     GrafPtr savePort;
     GrafPtr grafPtr;
     RgnHandle savedClipRegion;
     SInt32 savedPenMode;
-    wxListBox*          list;
     GetPort(&savePort);
     SetPort((**listHandle).port);
     grafPtr = (**listHandle).port ;
     // typecast our refCon
-    list = (wxListBox*) GetControlReference( (ControlHandle) GetListRefCon(listHandle) );
     
     //  Calculate the cell rect.
     
@@ -286,11 +289,11 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
     OptionBits  options = 0;
     if ( style & wxLB_MULTIPLE )
     {
-        options += lNoExtend ;
+        options += lExtendDrag + lUseSense  ;
     }
     else if ( style & wxLB_EXTENDED )
     {
-        options += lExtendDrag ;
+        // default behaviour
     }
     else
     {
@@ -313,6 +316,8 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
 wxListBox::~wxListBox()
 {
     FreeData() ;
+    // avoid access during destruction
+    SetControlReference( (ControlHandle) m_macControl , NULL ) ;
     if ( m_macList )
     {
 #if !TARGET_CARBON