// ----------------------------------------------------------------------------
// list of all frames and modeless dialogs
-wxWindowList wxModelessWindows;
+wxWindowList wxModelessWindows;
+
+// double click testing
+static Point gs_lastWhere;
+static long gs_lastWhen = 0;
+
+// cursor stuff
+extern int wxBusyCursorCount;
+
// ============================================================================
// wxTopLevelWindowMac implementation
m_macWindow = NULL ;
}
+class wxMacDeferredWindowDeleter : public wxObject
+{
+public :
+ wxMacDeferredWindowDeleter( WindowRef windowRef )
+ {
+ m_macWindow = windowRef ;
+ }
+ virtual ~wxMacDeferredWindowDeleter()
+ {
+ UMADisposeWindow( (WindowRef) m_macWindow ) ;
+ }
+ protected :
+ WindowRef m_macWindow ;
+} ;
+
bool wxTopLevelWindowMac::Create(wxWindow *parent,
wxWindowID id,
const wxString& title,
if ( m_macWindow )
{
wxToolTip::NotifyWindowDelete(m_macWindow) ;
- UMADisposeWindow( (WindowRef) m_macWindow ) ;
+ wxPendingDelete.Append( new wxMacDeferredWindowDeleter( (WindowRef) m_macWindow ) ) ;
}
wxRemoveMacWindowAssociation( this ) ;
WindowClass wclass = 0;
WindowAttributes attr = kWindowNoAttributes ;
- if ( HasFlag( wxFRAME_TOOL_WINDOW) || HasFlag(wxTINY_CAPTION_HORIZ) || HasFlag(wxTINY_CAPTION_VERT) )
+ if ( HasFlag( wxFRAME_TOOL_WINDOW) /*|| HasFlag(wxTINY_CAPTION_HORIZ) || HasFlag(wxTINY_CAPTION_VERT)*/ )
{
wclass = kFloatingWindowClass ;
if ( HasFlag(wxTINY_CAPTION_VERT) )
}
else
{
- wclass = kModalWindowClass ;
+ wclass = kDocumentWindowClass ;
}
if ( HasFlag( wxMINIMIZE_BOX ) || HasFlag( wxMAXIMIZE_BOX ) )
::SendBehind( (WindowRef)m_macWindow , NULL ) ;
}
-Point lastWhere ;
-long lastWhen = 0 ;
-extern int wxBusyCursorCount ;
-
void wxTopLevelWindowMac::MacFireMouseEvent( WXEVENTREF evr )
{
EventRecord *ev = (EventRecord*) evr ;
if ( ev->what == mouseDown )
{
- if ( ev->when - lastWhen <= GetDblTime() )
+ if ( ev->when - gs_lastWhen <= GetDblTime() )
{
- if ( abs( localwhere.h - lastWhere.h ) < 3 || abs( localwhere.v - lastWhere.v ) < 3 )
+ if ( abs( localwhere.h - gs_lastWhere.h ) < 3 && abs( localwhere.v - gs_lastWhere.v ) < 3 )
{
+ // This is not right if the second mouse down
+ // event occured in a differen window. We
+ // correct this in MacDispatchMouseEvent.
if ( controlDown )
event.SetEventType(wxEVT_RIGHT_DCLICK ) ;
else
event.SetEventType(wxEVT_LEFT_DCLICK ) ;
}
- lastWhen = 0 ;
+ gs_lastWhen = 0 ;
}
else
{
- lastWhen = ev->when ;
+ gs_lastWhen = ev->when ;
}
- lastWhere = localwhere ;
+ gs_lastWhere = localwhere ;
}
event.m_x = localwhere.h;