#define kWindowUnifiedTitleAndToolbarAttribute (1 << 7)
// trace mask for activation tracing messages
-static const wxChar *TRACE_ACTIVATE = _T("activation");
+#define TRACE_ACTIVATE "activation"
// ----------------------------------------------------------------------------
// globals
{
event.m_keyCode = WXK_CONTROL ;
event.SetEventType( ( modifiers & controlKey ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP ) ;
- focus->GetEventHandler()->ProcessEvent( event ) ;
+ focus->HandleWindowEvent( event ) ;
}
if ( /* focus && */ (modifiers ^ wxApp::s_lastModifiers ) & shiftKey )
{
event.m_keyCode = WXK_SHIFT ;
event.SetEventType( ( modifiers & shiftKey ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP ) ;
- focus->GetEventHandler()->ProcessEvent( event ) ;
+ focus->HandleWindowEvent( event ) ;
}
if ( /* focus && */ (modifiers ^ wxApp::s_lastModifiers ) & optionKey )
{
event.m_keyCode = WXK_ALT ;
event.SetEventType( ( modifiers & optionKey ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP ) ;
- focus->GetEventHandler()->ProcessEvent( event ) ;
+ focus->HandleWindowEvent( event ) ;
}
if ( /* focus && */ (modifiers ^ wxApp::s_lastModifiers ) & cmdKey )
{
event.m_keyCode = WXK_COMMAND ;
event.SetEventType( ( modifiers & cmdKey ) ? wxEVT_KEY_DOWN : wxEVT_KEY_UP ) ;
- focus->GetEventHandler()->ProcessEvent( event ) ;
+ focus->HandleWindowEvent( event ) ;
}
wxApp::s_lastModifiers = modifiers ;
if( thisButtonIsFakeRight && ( mouseChord & 1U ) )
mouseChord = ((mouseChord & ~1U) | 2U);
- if(mouseChord & 1U)
+ if(mouseChord & 1U)
wxevent.m_leftDown = true ;
- if(mouseChord & 2U)
+ if(mouseChord & 2U)
wxevent.m_rightDown = true ;
- if(mouseChord & 4U)
+ if(mouseChord & 4U)
wxevent.m_middleDown = true ;
// translate into wx types
}
}
-ControlRef wxMacFindSubControl( wxTopLevelWindowMac* toplevelWindow, const Point& location , ControlRef superControl , ControlPartCode *outPart )
-{
- if ( superControl )
- {
- UInt16 childrenCount = 0 ;
- ControlHandle sibling ;
- Rect r ;
- OSStatus err = CountSubControls( superControl , &childrenCount ) ;
- if ( err == errControlIsNotEmbedder )
- return NULL ;
-
- wxASSERT_MSG( err == noErr , wxT("Unexpected error when accessing subcontrols") ) ;
-
- for ( UInt16 i = childrenCount ; i >=1 ; --i )
- {
- err = GetIndexedSubControl( superControl , i , & sibling ) ;
- if ( err == errControlIsNotEmbedder )
- return NULL ;
-
- wxASSERT_MSG( err == noErr , wxT("Unexpected error when accessing subcontrols") ) ;
- if ( IsControlVisible( sibling ) )
- {
- UMAGetControlBoundsInWindowCoords( sibling , &r ) ;
- if ( MacPtInRect( location , &r ) )
- {
- ControlHandle child = wxMacFindSubControl( toplevelWindow , location , sibling , outPart ) ;
- if ( child )
- {
- return child ;
- }
- else
- {
- Point testLocation = location ;
-
- if ( toplevelWindow )
- {
- testLocation.h -= r.left ;
- testLocation.v -= r.top ;
- }
-
- *outPart = TestControl( sibling , testLocation ) ;
-
- return sibling ;
- }
- }
- }
- }
- }
-
- return NULL ;
-}
-
-ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow , const Point& location , WindowRef window , ControlPartCode *outPart )
-{
-#if TARGET_API_MAC_OSX
- if ( UMAGetSystemVersion() >= 0x1030 )
- return FindControlUnderMouse( location , window , outPart ) ;
-#endif
-
- ControlRef rootControl = NULL ;
- verify_noerr( GetRootControl( window , &rootControl ) ) ;
-
- return wxMacFindSubControl( toplevelWindow , location , rootControl , outPart ) ;
-}
-
#define NEW_CAPTURE_HANDLING 1
pascal OSStatus
wxToolTip::RelayEvent( g_MacLastWindow , eventleave);
#endif
- g_MacLastWindow->GetEventHandler()->ProcessEvent(eventleave);
+ g_MacLastWindow->HandleWindowEvent(eventleave);
}
if ( currentMouseWindow )
wxToolTip::RelayEvent( currentMouseWindow , evententer );
#endif
- currentMouseWindow->GetEventHandler()->ProcessEvent(evententer);
+ currentMouseWindow->HandleWindowEvent(evententer);
}
g_MacLastWindow = currentMouseWindow ;
wxToolTip::RelayEvent( currentMouseWindow , wxevent );
#endif
- if ( currentMouseWindow->GetEventHandler()->ProcessEvent(wxevent) )
+ if ( currentMouseWindow->HandleWindowEvent(wxevent) )
{
if ((currentMouseWindowParent != NULL) &&
(currentMouseWindowParent->GetChildren().Find(currentMouseWindow) == NULL))
if (currentMouseWindow->CanAcceptFocus() && wxWindow::FindFocus()!=currentMouseWindow)
currentMouseWindow->SetFocus();
}
-
- ControlPartCode dummyPart ;
- // if built-in find control is finding the wrong control (ie static box instead of overlaid
- // button, we cannot let the standard handler do its job, but must handle manually
-
- if ( ( cEvent.GetKind() == kEventMouseDown )
-#ifdef __WXMAC_OSX__
- &&
- (FindControlUnderMouse(windowMouseLocation , window , &dummyPart) !=
- wxMacFindControlUnderMouse( toplevelWindow , windowMouseLocation , window , &dummyPart ) )
-#endif
- )
- {
- if ( currentMouseWindow->MacIsReallyEnabled() )
- {
- EventModifiers modifiers = cEvent.GetParameter<EventModifiers>(kEventParamKeyModifiers, typeUInt32) ;
- Point clickLocation = windowMouseLocation ;
-
- currentMouseWindow->MacRootWindowToWindow( &clickLocation.h , &clickLocation.v ) ;
-
- HandleControlClick( (ControlRef) currentMouseWindow->GetHandle() , clickLocation ,
- modifiers , (ControlActionUPP ) -1 ) ;
-
- if ((currentMouseWindowParent != NULL) &&
- (currentMouseWindowParent->GetChildren().Find(currentMouseWindow) == NULL))
- {
- currentMouseWindow = NULL;
- }
- }
-
- result = noErr ;
- }
}
if ( cEvent.GetKind() == kEventMouseUp && wxApp::s_captureWindow )
wxWindow* cursorTarget = currentMouseWindow ;
wxPoint cursorPoint( wxevent.m_x , wxevent.m_y ) ;
- while ( cursorTarget && !cursorTarget->MacSetupCursor( cursorPoint ) )
+ extern wxCursor gGlobalCursor;
+
+ if (!gGlobalCursor.IsOk())
{
- cursorTarget = cursorTarget->GetParent() ;
- if ( cursorTarget )
- cursorPoint += cursorTarget->GetPosition();
+ while ( cursorTarget && !cursorTarget->MacSetupCursor( cursorPoint ) )
+ {
+ cursorTarget = cursorTarget->GetParent() ;
+ if ( cursorTarget )
+ cursorPoint += cursorTarget->GetPosition();
+ }
}
}
{
EventModifiers modifiers = cEvent.GetParameter<EventModifiers>(kEventParamKeyModifiers, typeUInt32) ;
Point clickLocation = windowMouseLocation ;
-#if TARGET_API_MAC_OSX
+
HIPoint hiPoint ;
hiPoint.x = clickLocation.h ;
hiPoint.y = clickLocation.v ;
HIViewConvertPoint( &hiPoint , (ControlRef) toplevelWindow->GetHandle() , control ) ;
clickLocation.h = (int)hiPoint.x ;
clickLocation.v = (int)hiPoint.y ;
-#endif // TARGET_API_MAC_OSX
HandleControlClick( control , clickLocation , modifiers , (ControlActionUPP ) -1 ) ;
result = noErr ;
wxActivateEvent wxevent(wxEVT_ACTIVATE, true , toplevelWindow->GetId());
wxevent.SetTimestamp( cEvent.GetTicks() ) ;
wxevent.SetEventObject(toplevelWindow);
- toplevelWindow->GetEventHandler()->ProcessEvent(wxevent);
+ toplevelWindow->HandleWindowEvent(wxevent);
// we still sending an eventNotHandledErr in order to allow for default processing
}
break ;
wxActivateEvent wxevent(wxEVT_ACTIVATE, false , toplevelWindow->GetId());
wxevent.SetTimestamp( cEvent.GetTicks() ) ;
wxevent.SetEventObject(toplevelWindow);
- toplevelWindow->GetEventHandler()->ProcessEvent(wxevent);
+ toplevelWindow->HandleWindowEvent(wxevent);
// we still sending an eventNotHandledErr in order to allow for default processing
}
break ;
wxSizeEvent event( r.GetSize() , toplevelWindow->GetId() ) ;
event.SetEventObject( toplevelWindow ) ;
- toplevelWindow->GetEventHandler()->ProcessEvent(event) ;
+ toplevelWindow->HandleWindowEvent(event) ;
toplevelWindow->wxWindowMac::MacSuperChangedPosition() ; // like this only children will be notified
}
{
wxMoveEvent event( r.GetLeftTop() , toplevelWindow->GetId() ) ;
event.SetEventObject( toplevelWindow ) ;
- toplevelWindow->GetEventHandler()->ProcessEvent(event) ;
+ toplevelWindow->HandleWindowEvent(event) ;
}
result = noErr ;
wxSizeEvent wxevent( r , toplevelWindow->GetId() ) ;
wxevent.SetEventObject( toplevelWindow ) ;
wxRect adjustR = r ;
- if ( toplevelWindow->GetEventHandler()->ProcessEvent(wxevent) )
+ if ( toplevelWindow->HandleWindowEvent(wxevent) )
adjustR = wxevent.GetRect() ;
if ( toplevelWindow->GetMaxWidth() != -1 && adjustR.GetWidth() > toplevelWindow->GetMaxWidth() )
wxMacDeferredWindowDeleter::~wxMacDeferredWindowDeleter()
{
- UMADisposeWindow( (WindowRef) m_macWindow ) ;
+ DisposeWindow( (WindowRef) m_macWindow ) ;
}
bool wxTopLevelWindowMac::Create(wxWindow *parent,
DoMacCreateRealWindow( parent, title, pos , size , style , name ) ;
- SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE));
+ SetBackgroundColour(wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ));
if (GetExtraStyle() & wxFRAME_EX_METAL)
MacSetMetalAppearance(true);
return wxPoint(0, 0) ;
}
-#ifndef __WXUNIVERSAL__
-void wxTopLevelWindowMac::SetIcons( const wxIconBundle& icons )
-{
-// { SetIcon( icons.GetIcon( -1 ) ); }
-}
-#endif
-
-void wxTopLevelWindowMac::MacSetBackgroundBrush( const wxBrush &brush )
+bool wxTopLevelWindowMac::SetBackgroundColour(const wxColour& c )
{
- wxTopLevelWindowBase::MacSetBackgroundBrush( brush ) ;
-
- if ( m_macBackgroundBrush.Ok() && m_macBackgroundBrush.GetStyle() != wxTRANSPARENT && m_macBackgroundBrush.MacGetBrushKind() == kwxMacBrushTheme )
+ wxColour col = c;
+ if ( col == wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) )
+ col = wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDocumentWindowBackground));
+ else if ( col == wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE ) )
+ col = wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDialogBackgroundActive));
+
+ if ( !wxTopLevelWindowBase::SetBackgroundColour(col) && m_hasBgCol )
+ return false ;
+
+ if ( col == wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDocumentWindowBackground)) )
{
- SetThemeWindowBackground( (WindowRef) m_macWindow , m_macBackgroundBrush.MacGetTheme() , false ) ;
+ SetThemeWindowBackground( (WindowRef) m_macWindow, kThemeBrushDocumentWindowBackground, false ) ;
+ SetBackgroundStyle(wxBG_STYLE_CUSTOM);
}
-}
+ else if ( col == wxColour(wxMacCreateCGColorFromHITheme(kThemeBrushDialogBackgroundActive)) )
+ {
+ SetThemeWindowBackground( (WindowRef) m_macWindow, kThemeBrushDialogBackgroundActive, false ) ;
+ SetBackgroundStyle(wxBG_STYLE_CUSTOM);
+ }
+ return true;
+}
void wxTopLevelWindowMacInstallTopLevelWindowEventHandler(WindowRef window, EventHandlerRef* handler, void *ref)
{
}
void wxTopLevelWindowMac::DoMacCreateRealWindow(
- wxWindow* parent,
+ wxWindow* parent,
const wxString& title,
const wxPoint& pos,
const wxSize& size,
WindowClass wclass = 0;
WindowAttributes attr = kWindowNoAttributes ;
WindowGroupRef group = NULL ;
- bool activationScopeSet = false;
- WindowActivationScope activationScope = kWindowActivationScopeNone;
+ bool activationScopeSet = false;
+ WindowActivationScope activationScope = kWindowActivationScopeNone;
if ( HasFlag( wxFRAME_TOOL_WINDOW) )
{
else
{
wclass = kPlainWindowClass ;
- activationScopeSet = true;
- activationScope = kWindowActivationScopeNone;
+ activationScopeSet = true;
+ activationScope = kWindowActivationScopeNone;
}
}
else if ( HasFlag( wxPOPUP_WINDOW ) )
wclass = kDocumentWindowClass ;
attr |= kWindowInWindowMenuAttribute ;
}
-#if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
else if ( HasFlag( wxFRAME_DRAWER ) )
{
wclass = kDrawerWindowClass;
}
-#endif //10.2 and up
else
{
if ( HasFlag( wxMINIMIZE_BOX ) || HasFlag( wxMAXIMIZE_BOX ) ||
if ( HasFlag( wxCLOSE_BOX) )
attr |= kWindowCloseBoxAttribute ;
}
-
- // turn on live resizing (OS X only)
- if (UMAGetSystemVersion() >= 0x1000)
- attr |= kWindowLiveResizeAttribute;
+ attr |= kWindowLiveResizeAttribute;
if ( HasFlag(wxSTAY_ON_TOP) )
group = GetWindowGroupOfClass(kUtilityWindowClass) ;
if( parenttlw )
group = GetWindowGroupParent( GetWindowGroup( parenttlw ) );
}
-
+
attr |= kWindowCompositingAttribute;
#if 0 // wxMAC_USE_CORE_GRAPHICS ; TODO : decide on overall handling of high dpi screens (pixel vs userscale)
attr |= kWindowFrameworkScaledAttribute;
wxCHECK_RET( err == noErr, wxT("Mac OS error when trying to create new window") );
// setup a separate group for each window, so that overlays can be handled easily
-
+
WindowGroupRef overlaygroup = NULL;
verify_noerr( CreateWindowGroup( kWindowGroupAttrMoveTogether | kWindowGroupAttrLayerTogether | kWindowGroupAttrHideOnCollapse, &overlaygroup ));
verify_noerr( SetWindowGroupParent( overlaygroup, GetWindowGroup( (WindowRef) m_macWindow )));
verify_noerr( SetWindowGroup( (WindowRef) m_macWindow , overlaygroup ));
-
- if ( activationScopeSet )
- {
- verify_noerr( SetWindowActivationScope( (WindowRef) m_macWindow , activationScope ));
- }
+
+ if ( activationScopeSet )
+ {
+ verify_noerr( SetWindowActivationScope( (WindowRef) m_macWindow , activationScope ));
+ }
// the create commands are only for content rect,
// so we have to set the size again as structure bounds
SetWindowBounds( (WindowRef) m_macWindow , kWindowStructureRgn , &theBoundsRect ) ;
wxAssociateWinWithMacWindow( (WindowRef) m_macWindow , this ) ;
- UMASetWTitle( (WindowRef) m_macWindow , title , m_font.GetEncoding() ) ;
+ SetWindowTitleWithCFString( (WindowRef) m_macWindow , wxCFStringRef( title , GetFont().GetEncoding() ) );
m_peer = new wxMacControl(this , true /*isRootControl*/) ;
// There is a bug in 10.2.X for ::GetRootControl returning the window view instead of
}
#endif
-#if TARGET_API_MAC_OSX
if ( m_macWindow != NULL )
{
MacSetUnifiedAppearance( true ) ;
}
-#endif
HIViewRef growBoxRef = 0 ;
err = HIViewFindByID( HIViewGetRoot( (WindowRef)m_macWindow ), kHIViewWindowGrowBoxID, &growBoxRef );
}
wxWindowCreateEvent event(this);
- GetEventHandler()->ProcessEvent(event);
+ HandleWindowEvent(event);
}
void wxTopLevelWindowMac::ClearBackground()
s_macDeactivateWindow = NULL;
MacDelayedDeactivation(timestamp);
- MacPropagateHiliteChanged() ;
}
void wxTopLevelWindowMac::SetTitle(const wxString& title)
{
wxWindow::SetLabel( title ) ;
- UMASetWTitle( (WindowRef)m_macWindow , title , m_font.GetEncoding() ) ;
+ SetWindowTitleWithCFString( (WindowRef) m_macWindow , wxCFStringRef( title , GetFont().GetEncoding() ) ) ;
}
wxString wxTopLevelWindowMac::GetTitle() const
if ( !wxTopLevelWindowBase::Show(show) )
return false;
- bool plainTransition = false;
+ bool plainTransition = true;
#if wxUSE_SYSTEM_OPTIONS
- // code contributed by Ryan Wilcox December 18, 2003
- plainTransition = UMAGetSystemVersion() >= 0x1000 ;
if ( wxSystemOptions::HasOption(wxMAC_WINDOW_PLAIN_TRANSITION) )
plainTransition = ( wxSystemOptions::GetOptionInt( wxMAC_WINDOW_PLAIN_TRANSITION ) == 1 ) ;
#endif
// because apps expect a size event to occur at this moment
wxSizeEvent event(GetSize() , m_windowId);
event.SetEventObject(this);
- GetEventHandler()->ProcessEvent(event);
+ HandleWindowEvent(event);
}
else
{
::TransitionWindow( (WindowRef)m_macWindow, kWindowZoomTransitionEffect, kWindowHideTransitionAction, NULL );
}
- MacPropagateVisibilityChanged() ;
-
return true ;
}
+bool wxTopLevelWindowMac::ShowWithEffect(wxShowEffect effect,
+ unsigned timeout,
+ wxDirection dir)
+{
+ // TODO factor common code
+ if ( !wxTopLevelWindowBase::Show(true) )
+ return false;
+
+ WindowTransitionEffect transition = 0 ;
+ switch( effect )
+ {
+ case wxSHOW_EFFECT_ROLL :
+ case wxSHOW_EFFECT_SLIDE :
+ transition = kWindowGenieTransitionEffect;
+ break;
+ case wxSHOW_EFFECT_BLEND :
+ transition = kWindowFadeTransitionEffect;
+ break;
+ case wxSHOW_EFFECT_EXPAND :
+ default :
+ // having sheets would be fine, but this might lead to a repositioning
+#if 0
+ if ( GetParent() )
+ transition = kWindowSheetTransitionEffect;
+ else
+#endif
+ transition = kWindowZoomTransitionEffect;
+ break;
+ }
+
+ TransitionWindowOptions options;
+ options.version = 0;
+ options.duration = timeout / 1000.0;
+ options.window = transition == kWindowSheetTransitionEffect ? (WindowRef) GetParent()->MacGetTopLevelWindowRef() :0;
+ options.userData = 0;
+
+ wxSize size = wxGetDisplaySize();
+ Rect bounds;
+ GetWindowBounds( (WindowRef)m_macWindow, kWindowStructureRgn, &bounds );
+ CGRect hiBounds = CGRectMake( bounds.left, bounds.top, bounds.right - bounds.left, bounds.bottom - bounds.top );
+
+ if ( dir & wxRIGHT )
+ {
+ hiBounds.origin.x = size.x;
+ hiBounds.size.width = 0;
+ }
+ if ( dir & wxUP )
+ {
+ hiBounds.origin.y = 0;
+ hiBounds.size.height = 0;
+ }
+ if ( dir & wxDOWN )
+ {
+ hiBounds.origin.y = size.y;
+ hiBounds.size.height = 0;
+ }
+ if ( dir & wxLEFT )
+ {
+ hiBounds.origin.x = 0;
+ hiBounds.size.width = 0;
+ }
+
+ ::TransitionWindowWithOptions( (WindowRef)m_macWindow, transition, kWindowShowTransitionAction, transition == kWindowGenieTransitionEffect ? &hiBounds : NULL ,
+ false, &options );
+
+ ::SelectWindow( (WindowRef)m_macWindow ) ;
+
+ // because apps expect a size event to occur at this moment
+ wxSizeEvent event(GetSize() , m_windowId);
+ event.SetEventObject(this);
+ HandleWindowEvent(event);
+
+ return true;
+}
+
+bool wxTopLevelWindowMac::HideWithEffect(wxShowEffect effect,
+ unsigned timeout ,
+ wxDirection dir )
+{
+ if ( !wxTopLevelWindowBase::Show(false) )
+ return false;
+
+ WindowTransitionEffect transition = 0 ;
+ switch( effect )
+ {
+ case wxSHOW_EFFECT_ROLL :
+ case wxSHOW_EFFECT_SLIDE :
+ transition = kWindowGenieTransitionEffect;
+ break;
+ case wxSHOW_EFFECT_BLEND :
+ transition = kWindowFadeTransitionEffect;
+ break;
+ case wxSHOW_EFFECT_EXPAND :
+ default:
+#if 0
+ if ( GetParent() )
+ transition = kWindowSheetTransitionEffect;
+ else
+#endif
+ transition = kWindowZoomTransitionEffect;
+ break;
+ }
+ TransitionWindowOptions options;
+ options.version = 0;
+ options.duration = timeout / 1000.0;
+ options.window = transition == kWindowSheetTransitionEffect ? (WindowRef) GetParent()->MacGetTopLevelWindowRef() :0;
+ options.userData = 0;
+
+ wxSize size = wxGetDisplaySize();
+ Rect bounds;
+ GetWindowBounds( (WindowRef)m_macWindow, kWindowStructureRgn, &bounds );
+ CGRect hiBounds = CGRectMake( bounds.left, bounds.top, bounds.right - bounds.left, bounds.bottom - bounds.top );
+
+ if ( dir & wxRIGHT )
+ {
+ hiBounds.origin.x = size.x;
+ hiBounds.size.width = 0;
+ }
+ if ( dir & wxUP )
+ {
+ hiBounds.origin.y = 0;
+ hiBounds.size.height = 0;
+ }
+ if ( dir & wxDOWN )
+ {
+ hiBounds.origin.y = size.y;
+ hiBounds.size.height = 0;
+ }
+ if ( dir & wxLEFT )
+ {
+ hiBounds.origin.x = 0;
+ hiBounds.size.width = 0;
+ }
+ ::TransitionWindowWithOptions( (WindowRef)m_macWindow, transition, kWindowHideTransitionAction, transition == kWindowGenieTransitionEffect ? &hiBounds : NULL ,
+ false, &options );
+
+ return true;
+}
+
bool wxTopLevelWindowMac::ShowFullScreen(bool show, long style)
{
if ( show )
wxTopLevelWindowBase::SetExtraStyle( exStyle ) ;
-#if TARGET_API_MAC_OSX
if ( m_macWindow != NULL )
{
bool metal = GetExtraStyle() & wxFRAME_EX_METAL ;
MacSetMetalAppearance( metal ) ;
}
}
-#endif
}
bool wxTopLevelWindowMac::SetBackgroundStyle(wxBackgroundStyle style)
void wxTopLevelWindowMac::MacSetMetalAppearance( bool set )
{
-#if TARGET_API_MAC_OSX
if ( MacGetUnifiedAppearance() )
MacSetUnifiedAppearance( false ) ;
MacChangeWindowAttributes( set ? kWindowMetalAttribute : kWindowNoAttributes ,
set ? kWindowNoAttributes : kWindowMetalAttribute ) ;
-#endif
}
bool wxTopLevelWindowMac::MacGetMetalAppearance() const
{
-#if TARGET_API_MAC_OSX
return MacGetWindowAttributes() & kWindowMetalAttribute ;
-#else
- return false;
-#endif
}
void wxTopLevelWindowMac::MacSetUnifiedAppearance( bool set )
{
-#if TARGET_API_MAC_OSX
- if ( UMAGetSystemVersion() >= 0x1040 )
- {
- if ( MacGetMetalAppearance() )
- MacSetMetalAppearance( false ) ;
-
- MacChangeWindowAttributes( set ? kWindowUnifiedTitleAndToolbarAttribute : kWindowNoAttributes ,
- set ? kWindowNoAttributes : kWindowUnifiedTitleAndToolbarAttribute) ;
-
- // For some reason, Tiger uses white as the background color for this appearance,
- // while most apps using it use the typical striped background. Restore that behavior
- // for wx.
- // TODO: Determine if we need this on Leopard as well. (should be harmless either way,
- // though)
- SetBackgroundColour( wxSYS_COLOUR_WINDOW ) ;
- }
-#endif
+ if ( MacGetMetalAppearance() )
+ MacSetMetalAppearance( false ) ;
+
+ MacChangeWindowAttributes( set ? kWindowUnifiedTitleAndToolbarAttribute : kWindowNoAttributes ,
+ set ? kWindowNoAttributes : kWindowUnifiedTitleAndToolbarAttribute) ;
+
+ // For some reason, Tiger uses white as the background color for this appearance,
+ // while most apps using it use the typical striped background. Restore that behavior
+ // for wx.
+ // TODO: Determine if we need this on Leopard as well. (should be harmless either way,
+ // though)
+ SetBackgroundColour( wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW) ) ;
}
bool wxTopLevelWindowMac::MacGetUnifiedAppearance() const
{
-#if TARGET_API_MAC_OSX
- if ( UMAGetSystemVersion() >= 0x1040 )
- return MacGetWindowAttributes() & kWindowUnifiedTitleAndToolbarAttribute ;
- else
-#endif
- return false;
+ return MacGetWindowAttributes() & kWindowUnifiedTitleAndToolbarAttribute ;
}
void wxTopLevelWindowMac::MacChangeWindowAttributes( wxUint32 attributesToSet , wxUint32 attributesToClear )
void wxTopLevelWindowMac::MacPerformUpdates()
{
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
// for composited windows this also triggers a redraw of all
// invalid views in the window
- if ( UMAGetSystemVersion() >= 0x1030 )
- HIWindowFlush((WindowRef) m_macWindow) ;
- else
-#endif
- {
- // the only way to trigger the redrawing on earlier systems is to call
- // ReceiveNextEvent
-
- EventRef currentEvent = (EventRef) wxTheApp->MacGetCurrentEvent() ;
- UInt32 currentEventClass = 0 ;
- if ( currentEvent != NULL )
- {
- currentEventClass = ::GetEventClass( currentEvent ) ;
- ::GetEventKind( currentEvent ) ;
- }
-
- if ( currentEventClass != kEventClassMenu )
- {
- // when tracking a menu, strange redraw errors occur if we flush now, so leave..
- EventRef theEvent;
- ReceiveNextEvent( 0 , NULL , kEventDurationNoWait , false , &theEvent ) ;
- }
- }
+ HIWindowFlush((WindowRef) m_macWindow) ;
}
// Attracts the users attention to this window if the application is
// Make a copy of the region
RgnHandle shapeRegion = NewRgn();
- CopyRgn( (RgnHandle)region.GetWXHRGN(), shapeRegion );
+ HIShapeGetAsQDRgn( region.GetWXHRGN(), shapeRegion );
// Dispose of any shape region we may already have
RgnHandle oldRgn = (RgnHandle)GetWRefCon( (WindowRef)MacGetWindowRef() );
*(OptionBits*)param =
//kWindowCanGrow |
//kWindowCanZoom |
- //kWindowCanCollapse |
+ kWindowCanCollapse |
//kWindowCanGetWindowRegion |
//kWindowHasTitleBar |
//kWindowSupportsDragHilite |