// ----------------------------------------------------------------------------
// 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_maximizeOnShow = FALSE;
m_macNoEraseUpdateRgn = NewRgn() ;
m_macNeedsErasing = false ;
+ m_macWindow = NULL ;
}
bool wxTopLevelWindowMac::Create(wxWindow *parent,
wxTopLevelWindowMac::~wxTopLevelWindowMac()
{
- wxToolTip::NotifyWindowDelete(m_macWindow) ;
- UMADisposeWindow( (WindowRef) m_macWindow ) ;
-
+ if ( m_macWindow )
+ {
+ wxToolTip::NotifyWindowDelete(m_macWindow) ;
+ UMADisposeWindow( (WindowRef) m_macWindow ) ;
+ }
+
wxRemoveMacWindowAssociation( this ) ;
wxTopLevelWindows.DeleteObject(this);
bool wxTopLevelWindowMac::IsIconized() const
{
- // mac dialogs cannot be iconized
+ // mac dialogs cannot be iconized
return FALSE;
}
WindowClass wclass = 0;
WindowAttributes attr = kWindowNoAttributes ;
- if ( 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) )
{
if ( HasFlag( wxDIALOG_MODAL ) )
{
- wclass = kMovableModalWindowClass ;
+ wclass = kDocumentWindowClass ; // kMovableModalWindowClass ;
}
else
{
}
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;
event.m_x += m_x;
event.m_y += m_y;
-/*
- wxPoint origin = GetClientAreaOrigin() ;
-
- event.m_x += origin.x ;
- event.m_y += origin.y ;
-*/
-
event.m_timeStamp = ev->when;
event.SetEventObject(this);
if ( wxTheApp->s_captureWindow )
wxTheApp->s_captureWindow->ScreenToClient( &x , &y ) ;
event.m_x = x ;
event.m_y = y ;
+ event.SetEventObject( wxTheApp->s_captureWindow ) ;
wxTheApp->s_captureWindow->GetEventHandler()->ProcessEvent( event ) ;
+
if ( ev->what == mouseUp )
{
wxTheApp->s_captureWindow = NULL ;