]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/combocmn.cpp
Don't block in wxEventLoopManual::Dispatch() if loop was exited.
[wxWidgets.git] / src / common / combocmn.cpp
index abb162921e85c79aa1fcb9cbaadbe75a2edb6f01..814dbd9a493fa67faa043729a97435ad95a8f630 100644 (file)
@@ -1044,10 +1044,11 @@ bool wxComboCtrlBase::Create(wxWindow *parent,
     m_iFlags |= wxCC_IFLAG_CREATED;
 
     // If x and y indicate valid size, wxSizeEvent won't be
     m_iFlags |= wxCC_IFLAG_CREATED;
 
     // If x and y indicate valid size, wxSizeEvent won't be
-    // emitted automatically, so we need to add artifical one.
+    // emitted automatically, so we need to add artificial one.
     if ( size.x > 0 && size.y > 0 )
     {
         wxSizeEvent evt(size,GetId());
     if ( size.x > 0 && size.y > 0 )
     {
         wxSizeEvent evt(size,GetId());
+        evt.SetEventObject(this);
         GetEventHandler()->AddPendingEvent(evt);
     }
 
         GetEventHandler()->AddPendingEvent(evt);
     }
 
@@ -1171,7 +1172,7 @@ void wxComboCtrlBase::CalculateAreas( int btnWidth )
     // its platform default or bitmap+pushbutton background is used, but not if
     // there is vertical size adjustment or horizontal spacing.
     if ( ( (m_iFlags & wxCC_BUTTON_OUTSIDE_BORDER) ||
     // its platform default or bitmap+pushbutton background is used, but not if
     // there is vertical size adjustment or horizontal spacing.
     if ( ( (m_iFlags & wxCC_BUTTON_OUTSIDE_BORDER) ||
-                (m_bmpNormal.Ok() && m_blankButtonBg) ) &&
+                (m_bmpNormal.IsOk() && m_blankButtonBg) ) &&
          m_btnSpacingX == 0 &&
          m_btnHei <= 0 )
     {
          m_btnSpacingX == 0 &&
          m_btnHei <= 0 )
     {
@@ -1179,7 +1180,7 @@ void wxComboCtrlBase::CalculateAreas( int btnWidth )
         btnBorder = 0;
     }
     else if ( (m_iFlags & wxCC_BUTTON_COVERS_BORDER) &&
         btnBorder = 0;
     }
     else if ( (m_iFlags & wxCC_BUTTON_COVERS_BORDER) &&
-              m_btnSpacingX == 0 && !m_bmpNormal.Ok() )
+              m_btnSpacingX == 0 && !m_bmpNormal.IsOk() )
     {
         m_iFlags &= ~(wxCC_IFLAG_BUTTON_OUTSIDE);
         btnBorder = 0;
     {
         m_iFlags &= ~(wxCC_IFLAG_BUTTON_OUTSIDE);
         btnBorder = 0;
@@ -1236,7 +1237,7 @@ void wxComboCtrlBase::CalculateAreas( int btnWidth )
     //   It is larger
     //   OR
     //   button width is set to default and blank button bg is not drawn
     //   It is larger
     //   OR
     //   button width is set to default and blank button bg is not drawn
-    if ( m_bmpNormal.Ok() )
+    if ( m_bmpNormal.IsOk() )
     {
         int bmpReqWidth = m_bmpNormal.GetWidth();
         int bmpReqHeight = m_bmpNormal.GetHeight();
     {
         int bmpReqWidth = m_bmpNormal.GetWidth();
         int bmpReqHeight = m_bmpNormal.GetHeight();
@@ -1258,7 +1259,7 @@ void wxComboCtrlBase::CalculateAreas( int btnWidth )
         {
             int newY = butHeight+(customBorder*2);
             SetClientSize(wxDefaultCoord,newY);
         {
             int newY = butHeight+(customBorder*2);
             SetClientSize(wxDefaultCoord,newY);
-            if ( m_bmpNormal.Ok() || m_btnArea.width != butWidth || m_btnArea.height != butHeight )
+            if ( m_bmpNormal.IsOk() || m_btnArea.width != butWidth || m_btnArea.height != butHeight )
                 m_iFlags |= wxCC_IFLAG_HAS_NONSTANDARD_BUTTON;
             else
                 m_iFlags &= ~wxCC_IFLAG_HAS_NONSTANDARD_BUTTON;
                 m_iFlags |= wxCC_IFLAG_HAS_NONSTANDARD_BUTTON;
             else
                 m_iFlags &= ~wxCC_IFLAG_HAS_NONSTANDARD_BUTTON;
@@ -1367,16 +1368,16 @@ wxSize wxComboCtrlBase::DoGetBestSize() const
     // TODO: Better method to calculate close-to-native control height.
 
     int fhei;
     // TODO: Better method to calculate close-to-native control height.
 
     int fhei;
-    if ( m_font.Ok() )
+    if ( m_font.IsOk() )
         fhei = (m_font.GetPointSize()*2) + 5;
         fhei = (m_font.GetPointSize()*2) + 5;
-    else if ( wxNORMAL_FONT->Ok() )
+    else if ( wxNORMAL_FONT->IsOk() )
         fhei = (wxNORMAL_FONT->GetPointSize()*2) + 5;
     else
         fhei = sizeText.y + 4;
 
     // Need to force height to accomodate bitmap?
     int btnSizeY = m_btnSize.y;
         fhei = (wxNORMAL_FONT->GetPointSize()*2) + 5;
     else
         fhei = sizeText.y + 4;
 
     // Need to force height to accomodate bitmap?
     int btnSizeY = m_btnSize.y;
-    if ( m_bmpNormal.Ok() && fhei < btnSizeY )
+    if ( m_bmpNormal.IsOk() && fhei < btnSizeY )
         fhei = btnSizeY;
 
     // Control height doesn't depend on border
         fhei = btnSizeY;
 
     // Control height doesn't depend on border
@@ -1701,7 +1702,7 @@ void wxComboCtrlBase::DrawButton( wxDC& dc, const wxRect& rect, int flags )
         dc.DrawRectangle(rect);
     }
 
         dc.DrawRectangle(rect);
     }
 
-    if ( !m_bmpNormal.Ok() )
+    if ( !m_bmpNormal.IsOk() )
     {
         if ( flags & Button_BitmapOnly )
             return;
     {
         if ( flags & Button_BitmapOnly )
             return;
@@ -1751,6 +1752,7 @@ void wxComboCtrlBase::RecalcAndRefresh()
     if ( IsCreated() )
     {
         wxSizeEvent evt(GetSize(),GetId());
     if ( IsCreated() )
     {
         wxSizeEvent evt(GetSize(),GetId());
+        evt.SetEventObject(this);
         GetEventHandler()->ProcessEvent(evt);
         Refresh();
     }
         GetEventHandler()->ProcessEvent(evt);
         Refresh();
     }
@@ -2032,6 +2034,8 @@ void wxComboCtrlBase::OnCharEvent(wxKeyEvent& event)
 
 void wxComboCtrlBase::OnFocusEvent( wxFocusEvent& event )
 {
 
 void wxComboCtrlBase::OnFocusEvent( wxFocusEvent& event )
 {
+// On Mac, this leads to infinite recursion and eventually a crash 
+#ifndef __WXMAC__
     if ( event.GetEventType() == wxEVT_SET_FOCUS )
     {
         wxWindow* tc = GetTextCtrl();
     if ( event.GetEventType() == wxEVT_SET_FOCUS )
     {
         wxWindow* tc = GetTextCtrl();
@@ -2042,6 +2046,7 @@ void wxComboCtrlBase::OnFocusEvent( wxFocusEvent& event )
     }
 
     Refresh();
     }
 
     Refresh();
+#endif
 }
 
 void wxComboCtrlBase::OnIdleEvent( wxIdleEvent& WXUNUSED(event) )
 }
 
 void wxComboCtrlBase::OnIdleEvent( wxIdleEvent& WXUNUSED(event) )
@@ -2562,17 +2567,17 @@ void wxComboCtrlBase::SetButtonBitmaps( const wxBitmap& bmpNormal,
     m_bmpNormal = bmpNormal;
     m_blankButtonBg = blankButtonBg;
 
     m_bmpNormal = bmpNormal;
     m_blankButtonBg = blankButtonBg;
 
-    if ( bmpPressed.Ok() )
+    if ( bmpPressed.IsOk() )
         m_bmpPressed = bmpPressed;
     else
         m_bmpPressed = bmpNormal;
 
         m_bmpPressed = bmpPressed;
     else
         m_bmpPressed = bmpNormal;
 
-    if ( bmpHover.Ok() )
+    if ( bmpHover.IsOk() )
         m_bmpHover = bmpHover;
     else
         m_bmpHover = bmpNormal;
 
         m_bmpHover = bmpHover;
     else
         m_bmpHover = bmpNormal;
 
-    if ( bmpDisabled.Ok() )
+    if ( bmpDisabled.IsOk() )
         m_bmpDisabled = bmpDisabled;
     else
         m_bmpDisabled = bmpNormal;
         m_bmpDisabled = bmpDisabled;
     else
         m_bmpDisabled = bmpNormal;