X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c36f02449beace1fe721e14ad4d87a0700d0c49e..4ccae30a4dcdd995b3b566f8901a42509774d3d8:/src/mac/carbon/uma.cpp

diff --git a/src/mac/carbon/uma.cpp b/src/mac/carbon/uma.cpp
index 49ce364221..dbdb59341f 100644
--- a/src/mac/carbon/uma.cpp
+++ b/src/mac/carbon/uma.cpp
@@ -1,24 +1,34 @@
 #include "wx/defs.h"
 #include "wx/dc.h"
 #include "wx/mac/uma.h"
-#include "wx/mac/aga.h"
+#include <MacTextEditor.h>
 
-#ifdef __UNIX__
-  #include <Carbon/Carbon.h>
-#else
-  #include <Navigation.h>
+#ifndef __DARWIN__
+#  include <Navigation.h>
+#  if defined(TARGET_CARBON)
+#    if PM_USE_SESSION_APIS
+#      include <PMCore.h>
+#    endif
+#    include <PMApplication.h>
+#  else
+#    include <Printing.h>
+#  endif
 #endif
 
-// init
+// since we have decided that we only support 8.6 upwards we are
+// checking for these minimum requirements in the startup code of
+// the application so all wxWindows code can safely assume that appearance 1.1
+// windows manager, control manager, navigation services etc. are 
+// present
+
+#define wxUSE_MLTE 0
 
-#if !TARGET_CARBON
-#define	GetControlOwner( control ) (**control).contrlOwner
-// since we always call this in the right context we don't have to set and reset the port
-#define InvalWindowRgn( window , rgn ) InvalRgn( rgn )
-#endif
 
 static bool	sUMAHasAppearance = false ;
 static long sUMAAppearanceVersion = 0 ;
+static bool sUMAHasAquaLayout = false ;
+static bool sUMASystemInitialized = false ;
+
 extern int gAGABackgroundColor ;
 bool UMAHasAppearance() { return sUMAHasAppearance ; }
 long UMAGetAppearanceVersion() { return sUMAAppearanceVersion ; }
@@ -28,18 +38,22 @@ static long sUMAWindowManagerAttr = 0 ;
 
 bool UMAHasWindowManager() { return sUMAHasWindowManager ; }
 long UMAGetWindowManagerAttr() { return sUMAWindowManagerAttr ; }
+bool UMAHasAquaLayout() { return sUMAHasAquaLayout ; }
+bool UMASystemIsInitialized() { return sUMASystemInitialized ; }
+
 void UMACleanupToolbox()
 {
-#if UMA_USE_APPEARANCE
 	if ( sUMAHasAppearance )
 	{
 		UnregisterAppearanceClient() ;
 	}
-#endif
 	if ( NavServicesAvailable() )
 	{
 		NavUnload() ;
 	}
+#if wxUSE_MLTE
+	TXNTerminateTextension( ) ;
+#endif
 }
 void UMAInitToolbox( UInt16 inMoreMastersCalls )
 {
@@ -61,7 +75,6 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
 	InitCursor();
 #endif
 
-#if UMA_USE_APPEARANCE
 	long theAppearance ;
 	if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr )
 	{
@@ -76,17 +89,12 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
 			sUMAAppearanceVersion = 0x0100 ;
 		}
 	}
-#endif // UMA_USE_APPEARANCE
-#if UMA_USE_8_6
-#if UMA_USE_WINDOWMGR
 	if ( Gestalt( gestaltWindowMgrAttr, &sUMAWindowManagerAttr ) == noErr )
 	{
 		sUMAHasWindowManager = sUMAWindowManagerAttr & gestaltWindowMgrPresent ;
 	}
-#endif // UMA_USE_WINDOWMGR
-#endif
 		
-#ifndef __UNIX__
+#ifndef __DARWIN__
 #if TARGET_CARBON
 // Call currently implicitely done :		InitFloatingWindows() ;
 #else
@@ -101,8 +109,31 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
 	{
 		NavLoad() ;
 	}
+
+#if wxUSE_MLTE
+  TXNMacOSPreferredFontDescription defaults;
+  defaults.fontID = kFontIDGeneva ;
+  defaults.pointSize = (10 << 16) ;
+  defaults.fontStyle = kTXNDefaultFontStyle;
+  defaults.encoding = kTXNSystemDefaultEncoding;
+	TXNInitTextension(&defaults,  1, (kTXNAlwaysUseQuickDrawTextMask | kTXNWantMoviesMask | kTXNWantSoundMask | kTXNWantGraphicsMask));
+#endif
+  long menuMgrAttr ;
+  Gestalt( gestaltMenuMgrAttr , &menuMgrAttr ) ;
+  if ( menuMgrAttr & gestaltMenuMgrAquaLayoutMask )
+    sUMAHasAquaLayout = true ;
+  sUMASystemInitialized = true ;
+
 }
 
+/*
+Boolean CanUseATSUI()
+	{
+	long result;
+	OSErr err = Gestalt(gestaltATSUVersion, &result);
+	return (err == noErr);
+	}
+*/
 // process manager
 long UMAGetProcessMode() 
 {
@@ -130,6 +161,7 @@ bool UMAGetProcessModeDoesActivateOnFGSwitch()
 
 void UMASetMenuTitle( MenuRef menu , StringPtr title )
 {
+/*
 #if !TARGET_CARBON
 	long 			size = GetHandleSize( (Handle) menu ) ;
 	const long 		headersize = 14 ;
@@ -152,44 +184,24 @@ void UMASetMenuTitle( MenuRef menu , StringPtr title )
 		SetHandleSize( (Handle) menu , size + (newlen - oldlen ) ) ;
 	}
 #else
+*/
 	SetMenuTitle( menu , title ) ;
-#endif
+//#endif
 }
 
 UInt32 UMAMenuEvent( EventRecord *inEvent )
 {
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
 		return MenuEvent( inEvent ) ;
-	}
-	else
-#endif
-	{
-			if ( inEvent->what == keyDown && inEvent->modifiers & cmdKey)
-			{
-				return MenuKey( inEvent->message & charCodeMask ) ;
-			}
-		return NULL ;
-	}
 }
 
 void 			UMAEnableMenuItem( MenuRef inMenu , MenuItemIndex inItem ) 
 {
-#if UMA_USE_8_6 || TARGET_CARBON
 	EnableMenuItem( inMenu , inItem ) ;
-#else
-	EnableItem( inMenu , inItem ) ;
-#endif
 }
 
 void 			UMADisableMenuItem( MenuRef inMenu , MenuItemIndex inItem ) 
 {
-#if UMA_USE_8_6 || TARGET_CARBON
 	DisableMenuItem( inMenu , inItem ) ;
-#else
-	DisableItem( inMenu , inItem ) ;
-#endif
 }
 
 void UMAAppendSubMenuItem( MenuRef menu , StringPtr l , SInt16 id ) 
@@ -256,42 +268,11 @@ void UMAInsertMenuItem( MenuRef menu , StringPtr l , MenuItemIndex item , SInt16
 	MacInsertMenuItem( menu , label , item) ;
 }
 
-void UMADrawMenuBar() 
-{
-	DrawMenuBar() ;
-}
-
-
-void UMASetMenuItemText( MenuRef menu , MenuItemIndex item , StringPtr label ) 
-{
-	::SetMenuItemText( menu , item , label ) ;
-}
-
-MenuRef	UMANewMenu( SInt16 menuid , StringPtr label ) 
-{
-	return ::NewMenu(menuid, label);
-}
-
-void UMADisposeMenu( MenuRef menu )
-{
-	DisposeMenu( menu ) ;
-}
-void UMADeleteMenu( SInt16 menuId ) 
-{
-	::DeleteMenu( menuId ) ;
-}
-
-void UMAInsertMenu( MenuRef insertMenu , SInt16 afterId ) 
-{
-	::InsertMenu( insertMenu , afterId ) ;
-}
-
-
 // quickdraw
 
 int gPrOpenCounter = 0 ;
 
-OSStatus UMAPrOpen() 
+OSStatus UMAPrOpen(void *macPrintSession)
 {
 #if !TARGET_CARBON
 	OSErr err = noErr ;
@@ -308,14 +289,18 @@ OSStatus UMAPrOpen()
 	++gPrOpenCounter ;
 	if ( gPrOpenCounter == 1 )
 	{
-		err = PMBegin() ;
+  #if PM_USE_SESSION_APIS
+	    err = PMCreateSession((PMPrintSession *)macPrintSession) ;
+  #else
+	    err = PMBegin() ;
+  #endif
 		wxASSERT( err == noErr ) ;
 	}
 	return err ;
 #endif
 }
 
-OSStatus UMAPrClose() 
+OSStatus UMAPrClose(void *macPrintSession)
 {
 #if !TARGET_CARBON
 	OSErr err = noErr ;
@@ -333,7 +318,12 @@ OSStatus UMAPrClose()
 	wxASSERT( gPrOpenCounter >= 1 ) ;
 	if ( gPrOpenCounter == 1 )
 	{
-		err = PMEnd() ;
+  #if PM_USE_SESSION_APIS
+	    err = PMRelease(*(PMPrintSession *)macPrintSession) ;
+	    *(PMPrintSession *)macPrintSession = kPMNoReference;
+  #else
+	    err = PMEnd() ;
+  #endif
 	}
 	--gPrOpenCounter ;
 	return err ;
@@ -342,6 +332,7 @@ OSStatus UMAPrClose()
 
 #if !TARGET_CARBON
 
+pascal QDGlobalsPtr GetQDGlobalsPtr (void) ;
 pascal QDGlobalsPtr GetQDGlobalsPtr (void)
 {
 	return QDGlobalsPtr (* (Ptr*) LMGetCurrentA5 ( ) - 0xCA);
@@ -360,11 +351,12 @@ void UMAShowWatchCursor()
 	else
 	{
 	#if TARGET_CARBON
-		Cursor preservedArrow;
-		GetQDGlobalsArrow (&preservedArrow);
-		SetQDGlobalsArrow (*watchFob);
-		InitCursor ( );
-		SetQDGlobalsArrow (&preservedArrow);
+//		Cursor preservedArrow;
+//		GetQDGlobalsArrow (&preservedArrow);
+//		SetQDGlobalsArrow (*watchFob);
+//		InitCursor ( );
+//		SetQDGlobalsArrow (&preservedArrow);
+		SetCursor (*watchFob);	
 	#else
 		SetCursor (*watchFob);	
 	#endif
@@ -387,7 +379,7 @@ GrafPtr		UMAGetWindowPort( WindowRef inWindowRef )
 {
 	wxASSERT( inWindowRef != NULL ) ;
 #if TARGET_CARBON 
-	return GetWindowPort( inWindowRef ) ; 
+	return (GrafPtr) GetWindowPort( inWindowRef ) ; 
 #else
 	return (GrafPtr) inWindowRef ;
 #endif
@@ -422,49 +414,14 @@ void 			UMAGetWTitleC( WindowRef inWindowRef , char *title )
 #endif
 }
 
-void			UMAShowWindow( WindowRef inWindowRef ) 
-{
-	ShowWindow( inWindowRef ) ;
-
-}
-
-void			UMAHideWindow( WindowRef inWindowRef ) 
-{
-	HideWindow( inWindowRef) ;
-}
-
-void 			UMASelectWindow( WindowRef inWindowRef ) 
-{
-	SelectWindow( inWindowRef ) ;
-}
-
-void			UMABringToFront( WindowRef inWindowRef ) 
-{
-	BringToFront( inWindowRef ) ;
-}
-
-void			UMASendBehind( WindowRef inWindowRef , WindowRef behindWindow ) 
-{
-	SendBehind( inWindowRef , behindWindow ) ;
-}
-
-void			UMACloseWindow(WindowRef inWindowRef) 
-{
-#if TARGET_CARBON
-#else
-	CloseWindow( inWindowRef ) ;
-#endif
-}
-
 // appearance additions
 
 void UMAActivateControl( ControlHandle inControl ) 
 {
-#if UMA_USE_APPEARANCE
-    if ( UMAHasAppearance() )
-    { 
-      if ( !UMAIsControlActive( inControl ) )
-      {
+    // we have to add the control after again to the update rgn
+    // otherwise updates get lost
+  if ( !IsControlActive( inControl ) )
+  {
         bool visible = IsControlVisible( inControl ) ;
         if ( visible )
           SetControlVisibility( inControl , false , false ) ;
@@ -474,377 +431,83 @@ void UMAActivateControl( ControlHandle inControl )
           Rect ctrlBounds ;
           InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
         }
-       }
-    }
-    else
-#endif
-#if !TARGET_CARBON
-    {
-        AGAActivateControl( inControl ) ;
-    }
-#else
-    {
-    }
-#endif
+  }
 }
 
 void UMADrawControl( ControlHandle inControl ) 
 {
     WindowRef theWindow = GetControlOwner(inControl) ;
     RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( theWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
     GetWindowUpdateRgn( theWindow , updateRgn ) ;
-#endif
-	Point zero = { 0 , 0 } ;
-	LocalToGlobal( &zero ) ;
-	OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
-#if UMA_USE_APPEARANCE
-    if ( UMAHasAppearance() )
-    {
-        ::DrawControlInCurrentPort( inControl ) ;
-    }
-    else
-#endif
-#if !TARGET_CARBON
-    {
-        AGADrawControl( inControl ) ;
-    }
-#else
-    {
-    }
-#endif
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
+	  Point zero = { 0 , 0 } ;
+	  LocalToGlobal( &zero ) ;
+	  OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
+    ::DrawControlInCurrentPort( inControl ) ;
     InvalWindowRgn( theWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-	DisposeRgn( updateRgn ) ;
-
+	  DisposeRgn( updateRgn ) ;
 }
 
 void UMAMoveControl( ControlHandle inControl , short x , short y ) 
 {
-    if ( UMAHasAppearance() )
-    {
-        bool visible = UMAIsControlVisible( inControl ) ;
-        if ( visible ) {
-          SetControlVisibility( inControl , false , false ) ;
-          Rect ctrlBounds ;
-          InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
-        }
-        ::MoveControl( inControl , x , y ) ;
-        if ( visible ) {
-          SetControlVisibility( inControl , true , false ) ;
-          Rect ctrlBounds ;
-          InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
-        }
-    }
+  bool visible = IsControlVisible( inControl ) ;
+  if ( visible ) {
+    SetControlVisibility( inControl , false , false ) ;
+    Rect ctrlBounds ;
+    InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
+  }
+  ::MoveControl( inControl , x , y ) ;
+  if ( visible ) {
+    SetControlVisibility( inControl , true , false ) ;
+    Rect ctrlBounds ;
+    InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
+  }
 }
 
 void UMASizeControl( ControlHandle inControl , short x , short y ) 
 {
-    if ( UMAHasAppearance() )
-    {
-        bool visible = UMAIsControlVisible( inControl ) ;
-        if ( visible ) {
-          SetControlVisibility( inControl , false , false ) ;
-          Rect ctrlBounds ;
-          InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
-        }
-        ::SizeControl( inControl , x , y ) ;
-        if ( visible ) {
-          SetControlVisibility( inControl , true , false ) ;
-          Rect ctrlBounds ;
-          InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
-        }
-    }
+  bool visible = IsControlVisible( inControl ) ;
+  if ( visible ) {
+    SetControlVisibility( inControl , false , false ) ;
+    Rect ctrlBounds ;
+    InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
+  } 
+  ::SizeControl( inControl , x , y ) ;
+  if ( visible ) {
+    SetControlVisibility( inControl , true , false ) ;
+    Rect ctrlBounds ;
+    InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
+  }
 }
 
 void UMADeactivateControl( ControlHandle inControl ) 
 {
-    if ( UMAHasAppearance() )
-    {
-      if ( UMAIsControlActive( inControl ) )
-      {
-        bool visible = IsControlVisible( inControl ) ;
-        if ( visible )
-          SetControlVisibility( inControl , false , false ) ;
-        ::DeactivateControl( inControl ) ;
-        if ( visible ) {
-          SetControlVisibility( inControl , true , false ) ;
-          Rect ctrlBounds ;
-          InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
-        }
-       }
-    }
+    // we have to add the control after again to the update rgn
+    // otherwise updates get lost
+     bool visible = IsControlVisible( inControl ) ;
+     if ( visible )
+       SetControlVisibility( inControl , false , false ) ;
+     ::DeactivateControl( inControl ) ;
+     if ( visible ) {
+       SetControlVisibility( inControl , true , false ) ;
+       Rect ctrlBounds ;
+       InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
+     }
 }
-
-void UMASetThemeWindowBackground	       (WindowRef 				inWindow,
-						ThemeBrush 			inBrush,
-						Boolean 				inUpdate)
-{
-#if UMA_USE_APPEARANCE
-    if ( UMAHasAppearance() )
-    {
-        ::SetThemeWindowBackground( inWindow ,inBrush , inUpdate ) ;
-    }
-    else
-#endif
-#if !TARGET_CARBON
-    {
-        AGASetThemeWindowBackground( inWindow , inBrush , inUpdate ) ;
-    }
-#else
-    {
-    }
-#endif
-}
-
-void			UMAApplyThemeBackground			(ThemeBackgroundKind 	inKind,
-								 const Rect *			bounds,
-								 ThemeDrawState 		inState,
-								 SInt16 				inDepth,
-								 Boolean 				inColorDev)
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-	/*
-		if ( sUMAAppearanceVersion >= 0x0110 )
-   			::ApplyThemeBackground( inKind ,bounds , inState , inDepth , inColorDev ) ;
-   */
-   }
-   else
-#endif
-#if !TARGET_CARBON
-   {
-   	AGAApplyThemeBackground( inKind ,bounds , inState , inDepth , inColorDev ) ;
-   }
-#else
-	{
-	}
-#endif
-}
-
-ControlHandle UMANewControl(WindowPtr 			owningWindow,
-			    const Rect *	        boundsRect,
-			    ConstStr255Param 		controlTitle,
-			    Boolean 			initiallyVisible,
-			    SInt16 			initialValue,
-			    SInt16 			minimumValue,
-			    SInt16 			maximumValue,
-			    SInt16 			procID,
-			    SInt32 			controlReference)
-{
-	ControlHandle theControl = NULL ;
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   theControl =  NewControl( owningWindow , boundsRect , controlTitle , initiallyVisible ,
-   		initialValue , minimumValue , maximumValue , procID , controlReference ) ;
-	}
-	else
-#endif
-#if !TARGET_CARBON
-	{
-		theControl = AGANewControl( owningWindow , boundsRect , controlTitle , initiallyVisible ,
-   		initialValue , minimumValue , maximumValue , procID , controlReference ) ;
-	}
-#else
-	{
-	}
-#endif
-	return theControl ;
-}
-
-void UMADisposeControl (ControlHandle 			theControl)
-{
-    if ( UMAHasAppearance() )
-    {
-        ::DisposeControl( theControl ) ;
-    }
-    else
-    {
-        ::DisposeControl( theControl ) ;
-    }
-}
-
-void UMAHiliteControl	(ControlHandle 			inControl,
-			 ControlPartCode 		hiliteState)
-{
-    if ( UMAHasAppearance() )
-    {
-        ::HiliteControl( inControl , hiliteState ) ;
-    }
-    else
-    {
-        ::HiliteControl( inControl , hiliteState ) ;
-    }
-}
-
 // shows the control and adds the region to the update region
 void UMAShowControl						(ControlHandle 			inControl)
 {
-    if ( UMAHasAppearance() )
-    {
         SetControlVisibility( inControl , true , false ) ;
         Rect ctrlBounds ;
         InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
-    }
 }
 
-// Hides the control and adds the region to the update region
+// shows the control and adds the region to the update region
 void UMAHideControl						(ControlHandle 			inControl)
 {
-    if ( UMAHasAppearance() )
-    {
-        ::HideControl( inControl ) ;
-    }
-    else
-    {
-        ::HideControl( inControl ) ;
-    }
-}
-
-
-void UMASetControlVisibility			(ControlHandle 			inControl,
-								 Boolean 				inIsVisible,
-								 Boolean 				inDoDraw)
-{
-    if ( UMAHasAppearance() )
-    {
-#if UMA_USE_APPEARANCE
-        ::SetControlVisibility( inControl , inIsVisible, inDoDraw ) ;
-#endif
-    }
-}
-
-
-
-bool UMAIsControlActive					(ControlHandle 			inControl)
-{
-#if TARGET_CARBON
-   	return IsControlActive( inControl ) ;
-#else
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   	return IsControlActive( inControl ) ;
-   }
-  else
-#endif
-  	return (**inControl).contrlHilite == 0 ;
-#endif
-}
-
-
-bool UMAIsControlVisible				(ControlHandle 			inControl)
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   	return IsControlVisible( inControl ) ;
-   }
-   else
-#endif
-  {
-#if !TARGET_CARBON
-    return (**inControl).contrlVis == 255 ;
-#endif
-  }
-  	return true ;
-}
-
-OSErr UMAGetBestControlRect				(ControlHandle 			inControl,
-								 Rect *					outRect,
-								 SInt16 *				outBaseLineOffset)
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   	return GetBestControlRect( inControl , outRect , outBaseLineOffset ) ;
-   }
-  else
-#endif
-#if !TARGET_CARBON
-  {
-  	return AGAGetBestControlRect( inControl , outRect , outBaseLineOffset ) ;
-  }
-#else
-	{
-		return noErr ;
-	}
-#endif
-}
-
-
-OSErr UMASetControlFontStyle				(ControlHandle 			inControl,
-								 const ControlFontStyleRec * inStyle)	
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-		return ::SetControlFontStyle( inControl , inStyle ) ;
-	}
-	else
-#endif
-#if !TARGET_CARBON
-		return AGASetControlFontStyle( inControl , inStyle ) ;
-#else
-	{
-		return noErr ;
-	}
-#endif
-}
-
-
-
-// control hierarchy
-
-OSErr UMACreateRootControl				(WindowPtr 				inWindow,
-								 ControlHandle *		outControl)
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   	return CreateRootControl( inWindow , outControl  ) ;
-   }
-  else
-#endif
-#if !TARGET_CARBON
-  	return AGACreateRootControl( inWindow , outControl ) ;
-#else
-	{
-		return noErr ;
-	}
-#endif
-}
-
-
-
-OSErr UMAEmbedControl					(ControlHandle 			inControl,
-								 ControlHandle 			inContainer)
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   	return EmbedControl( inControl , inContainer ) ;
-   }
-  else
-#endif
-#if !TARGET_CARBON
-  	return AGAEmbedControl( inControl , inContainer ) ; ;
-#else
-	{
-		return noErr ;
-	}
-#endif
+        SetControlVisibility( inControl , false , false ) ;
+        Rect ctrlBounds ;
+        InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
 }
-
-
-
 // keyboard focus
 OSErr UMASetKeyboardFocus				(WindowPtr 				inWindow,
 								 ControlHandle 			inControl,
@@ -853,25 +516,10 @@ OSErr UMASetKeyboardFocus				(WindowPtr 				inWindow,
 	OSErr err = noErr;
 	GrafPtr port ;
 	GetPort( &port ) ;
-#if TARGET_CARBON
-	SetPort( GetWindowPort( inWindow ) ) ;
-#else
-	SetPort( inWindow ) ;
-#endif
-	SetOrigin( 0 , 0 ) ;
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   	err = SetKeyboardFocus( inWindow , inControl , inPart ) ;
-   }
-  else
-#endif
-#if !TARGET_CARBON
-  	err = AGASetKeyboardFocus( inWindow , inControl , inPart ) ;
-#else
-	{
-	}
-#endif
+
+	SetPortWindowPort( inWindow ) ;
+
+  err = SetKeyboardFocus( inWindow , inControl , inPart ) ;
 	SetPort( port ) ;
 	return err ;
 }
@@ -880,520 +528,26 @@ OSErr UMASetKeyboardFocus				(WindowPtr 				inWindow,
 
 
 // events
-
-ControlPartCode UMAHandleControlClick				(ControlHandle 			inControl,
-								 Point 					inWhere,
-								 SInt16 				inModifiers,
-								 ControlActionUPP 		inAction)		 
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   	return HandleControlClick( inControl , inWhere , inModifiers , inAction ) ;
-   }
-   else
-#endif
-#if !TARGET_CARBON
-   {
-   	return AGAHandleControlClick( inControl , inWhere , inModifiers , inAction ) ;
-   }
-#else
-	{
-		return noErr ;
-	}
-#endif
-}
-
-
-SInt16 UMAHandleControlKey				(ControlHandle 			inControl,
-								 SInt16 				inKeyCode,
-								 SInt16 				inCharCode,
-								 SInt16 				inModifiers)
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   	return HandleControlKey( inControl , inKeyCode , inCharCode , inModifiers ) ;
-   }
-   else
-#endif
-#if !TARGET_CARBON
-   {
-   	return AGAHandleControlKey(inControl , inKeyCode , inCharCode , inModifiers ) ;
-   }
-#else
-	{
-		return noErr ;
-	}
-#endif
-}
-
-
-								 
-void UMAIdleControls					(WindowPtr 				inWindow)
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   		IdleControls( inWindow ) ;
-   }
-   else
-#endif
-#if !TARGET_CARBON
-   {
-   		AGAIdleControls( inWindow ) ;
-   }
-#else
-	{
-	}
-#endif
-}
-
 void UMAUpdateControls( WindowPtr inWindow , RgnHandle inRgn ) 
 {
-    RgnHandle updateRgn = NewRgn() ;
-#if TARGET_CARBON
-    GetWindowRegion( inWindow , kWindowUpdateRgn, updateRgn ) ;
-#else
-    GetWindowUpdateRgn( inWindow , updateRgn ) ;
-#endif
+  RgnHandle updateRgn = NewRgn() ;
+  GetWindowUpdateRgn( inWindow , updateRgn ) ;
+
 	Point zero = { 0 , 0 } ;
 	LocalToGlobal( &zero ) ;
 	OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
-#if UMA_USE_APPEARANCE
-    if ( UMAHasAppearance() )
-    {
-        UpdateControls( inWindow , inRgn ) ;
-    }
-    else
-#endif
-#if !TARGET_CARBON
-    {
-        AGAUpdateControls( inWindow , inRgn ) ;
-    }
-#else
-    {
-    }
-#endif
-#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0332)
-    InvalWindowRgn( inWindow, updateRgn) ;
-#else
-    InvalRgn( updateRgn ) ;
-#endif
-	DisposeRgn( updateRgn ) ;
 
-}
-
-OSErr UMAGetRootControl( WindowPtr inWindow , ControlHandle *outControl ) 
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-		return GetRootControl( inWindow , outControl ) ;
-	}
-	else
-#endif
-#if !TARGET_CARBON
-	{
-		return AGAGetRootControl( inWindow , outControl ) ;
-	}
-#else
-	{
-		return noErr ;
-	}
-#endif
-}
-
-
-// handling control data
-
-OSErr UMASetControlData					(ControlHandle 			inControl,
-								 ControlPartCode 		inPart,
-								 ResType 				inTagName,
-								 Size 					inSize,
-								 Ptr 					inData)
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-   	 return SetControlData( inControl , inPart , inTagName , inSize , inData ) ;
-   }
-   else
-#endif
-#if !TARGET_CARBON
-		return AGASetControlData( inControl , inPart , inTagName , inSize , inData ) ;
-#else
-	{
-		return noErr ;
-	}
-#endif
-}
-
-
-
-OSErr UMAGetControlData					(ControlHandle 			inControl,
-								 ControlPartCode 		inPart,
-								 ResType 				inTagName,
-								 Size 					inBufferSize,
-								 Ptr 					outBuffer,
-								 Size *					outActualSize)
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-		return ::GetControlData( inControl , inPart , inTagName , inBufferSize , outBuffer , outActualSize ) ;
-	}
-	else
-#endif
-#if !TARGET_CARBON
-	{
-		return AGAGetControlData( inControl , inPart , inTagName , inBufferSize , outBuffer , outActualSize ) ;
-	}
-#else
-	{
-		return noErr ;
-	}
-#endif
-}
-
-
-OSErr UMAGetControlDataSize				(ControlHandle 			inControl,
-								 ControlPartCode 		inPart,
-								 ResType 				inTagName,
-								 Size *					outMaxSize)
-{
-#if UMA_USE_APPEARANCE
-	if ( UMAHasAppearance() )
-	{
-		return GetControlDataSize( inControl , inPart , inTagName , outMaxSize ) ;
-	}
-	else
-#endif
-#if !TARGET_CARBON
-	{
-		return AGAGetControlDataSize( inControl , inPart , inTagName , outMaxSize ) ;
-	}
-#else
-	{
-		return noErr ;
-	}
-#endif
-}
-
-
-
-
-
-// system 8.0 changes
-
-short UMAFindWindow( Point inPoint , WindowRef *outWindow )
-{
-	// todo add the additional area codes
-	return FindWindow( inPoint , outWindow ) ;
-}
-
-OSStatus UMAGetWindowFeatures( WindowRef inWindowRef , UInt32 *outFeatures )
-{
-#if UMA_USE_WINDOWMGR
-	return GetWindowFeatures( inWindowRef , outFeatures ) ;
-#else
-	return 0 ;
-#endif
-}
-
-OSStatus UMAGetWindowRegion( WindowRef inWindowRef , WindowRegionCode inRegionCode , RgnHandle ioWinRgn )
-{
-#if UMA_USE_WINDOWMGR
-	return GetWindowRegion( inWindowRef , inRegionCode , ioWinRgn ) ;
-#else
-	return 0 ;
-#endif
-}
-
-void UMADrawGrowIcon( WindowRef inWindowRef )
-{
-	DrawGrowIcon( inWindowRef ) ;
-}
-
-OSStatus UMACollapseWindow( WindowRef inWindowRef , Boolean inCollapseIt )
-{
-	return CollapseWindow( inWindowRef , inCollapseIt ) ;
-}
-
-OSStatus UMACollapseAllWindows( Boolean inCollapseEm )
-{
-	return CollapseAllWindows( inCollapseEm ) ;
-}
-
-Boolean UMAIsWindowCollapsed( WindowRef inWindowRef )
-{
-	return IsWindowCollapsed( inWindowRef ) ;
-}
-
-Boolean UMAIsWindowCollapsable( WindowRef inWindowRef )
-{
-	return IsWindowCollapsable( inWindowRef ) ;
-}
-
-// system 8.5 changes<MacWindows.h>
-OSStatus 	UMACreateNewWindow( WindowClass windowClass , WindowAttributes attributes , const Rect *bounds,  WindowRef *outWindow ) 
-{
-#if UMA_USE_WINDOWMGR
-	if ( UMAHasWindowManager() )
-	{
-		return CreateNewWindow( windowClass , attributes, bounds, outWindow ) ;
-	}
-	else
-#endif
-	{
-		short procID ;
-		if ( UMAHasAppearance() )
-		{
-			switch( windowClass )
-			{
-				case kMovableModalWindowClass :
-					procID = kWindowMovableModalDialogProc;
-					break ;
-				case kModalWindowClass :
-					procID = kWindowShadowDialogProc;
-					break ;
-				case kFloatingWindowClass :
-					if ( attributes & kWindowSideTitlebarAttribute )
-					{
-						if( ( attributes & kWindowResizableAttribute ) &&  
-							( attributes & kWindowFullZoomAttribute ) )
-						{
-							procID = kWindowFloatSideFullZoomGrowProc ;
-						}
-						else if( attributes & kWindowFullZoomAttribute )
-						{
-							procID = kWindowFloatSideFullZoomProc;
-						}
-						else if ( attributes & kWindowResizableAttribute )
-						{
-							procID = kWindowFloatSideGrowProc;
-						}
-						else
-						{
-							procID = kWindowFloatSideProc;
-						}
-					}
-					else
-					{
-						if( ( attributes & kWindowResizableAttribute ) &&  
-							( attributes & kWindowFullZoomAttribute ) )
-						{
-							procID = kWindowFloatFullZoomGrowProc ;
-						}
-						else if( attributes & kWindowFullZoomAttribute )
-						{
-							procID = kWindowFloatFullZoomProc;
-						}
-						else if ( attributes & kWindowResizableAttribute )
-						{
-							procID = kWindowFloatGrowProc;
-						}
-						else
-						{
-							procID = kWindowFloatProc;
-						}
-					}
-					break ;
-				case kDocumentWindowClass :
-				default :
-					if( ( attributes & kWindowResizableAttribute ) &&  
-						( attributes & kWindowFullZoomAttribute ) )
-					{
-						procID = kWindowFullZoomGrowDocumentProc;
-					}
-					else if( attributes & kWindowFullZoomAttribute )
-					{
-						procID = kWindowFullZoomDocumentProc;
-					}
-					else if ( attributes & kWindowResizableAttribute )
-					{
-						procID = kWindowGrowDocumentProc;
-					}
-					else
-					{
-						procID = kWindowDocumentProc;
-					}
-					break ;
-			}
-		}
-		else
-		{
-			switch( windowClass )
-			{
-				case kMovableModalWindowClass :
-					procID = movableDBoxProc;
-					break ;
-				case kModalWindowClass :
-					procID = altDBoxProc;
-					break ;
-				case kFloatingWindowClass :
-					if ( attributes & kWindowSideTitlebarAttribute )
-					{
-						if( ( attributes & kWindowResizableAttribute ) &&  
-							( attributes & kWindowFullZoomAttribute ) )
-						{
-							procID = floatSideZoomGrowProc ;
-						}
-						else if( attributes & kWindowFullZoomAttribute )
-						{
-							procID = floatSideZoomProc;
-						}
-						else if ( attributes & kWindowResizableAttribute )
-						{
-							procID = floatSideGrowProc;
-						}
-						else
-						{
-							procID = floatSideProc;
-						}
-					}
-					else
-					{
-						if( ( attributes & kWindowResizableAttribute ) &&  
-							( attributes & kWindowFullZoomAttribute ) )
-						{
-							procID = floatZoomGrowProc ;
-						}
-						else if( attributes & kWindowFullZoomAttribute )
-						{
-							procID = floatZoomProc;
-						}
-						else if ( attributes & kWindowResizableAttribute )
-						{
-							procID = floatGrowProc;
-						}
-						else
-						{
-							procID = floatProc;
-						}
-					}
-					break ;
-				case kDocumentWindowClass :
-				default :
-					if( ( attributes & kWindowResizableAttribute ) &&  
-						( attributes & kWindowFullZoomAttribute ) )
-					{
-						procID = zoomDocProc;
-					}
-					else if( attributes & kWindowFullZoomAttribute )
-					{
-						procID = zoomNoGrow;
-					}
-					else if ( attributes & kWindowResizableAttribute )
-					{
-						procID = documentProc;
-					}
-					else
-					{
-						procID = noGrowDocProc;
-					}
-					break ;
-					break ;
-			}
-		}
-		*outWindow = NewCWindow(nil, bounds, "\p", false, procID,  (WindowRef) -1 /*behind*/,
-				attributes & kWindowCloseBoxAttribute , (long)NULL);
-		return noErr ;		
-	}
-}
-
-OSStatus 	UMAGetWindowClass( WindowRef inWindowRef , WindowClass *outWindowClass ) 
-{
-#if UMA_USE_WINDOWMGR
-	if ( UMAHasWindowManager() )
-	{
-		return GetWindowClass( inWindowRef , outWindowClass ) ;
-	}
-	else
-#endif
-		return kDocumentWindowClass ;
-}
-
-OSStatus	UMAGetWindowAttributes( WindowRef inWindowRef , WindowAttributes *outAttributes ) 
-{
-#if UMA_USE_WINDOWMGR
-	if ( UMAHasWindowManager() )
-	{
-		return GetWindowAttributes( inWindowRef , outAttributes ) ;
-	}
-#endif
-	return kWindowNoAttributes ;
-}
-
-void UMAShowFloatingWindows() 
-{
-#if UMA_USE_WINDOWMGR
-	if ( UMAHasWindowManager() )
-	{
-		ShowFloatingWindows() ;
-	}
-#endif
-}
-
-void UMAHideFloatingWindows() 
-{
-#if UMA_USE_WINDOWMGR
-	if ( UMAHasWindowManager() )
-	{
-		HideFloatingWindows() ;
-	}
-#endif
-}
-
-Boolean 	UMAAreFloatingWindowsVisible() 
-{
-#if UMA_USE_WINDOWMGR
-	if ( UMAHasWindowManager() )
-	{
-		return AreFloatingWindowsVisible() ;
-	}
-#endif
-	return false ;
-}
-
-WindowRef UMAFrontNonFloatingWindow()
-{
-#if UMA_USE_WINDOWMGR
-	if ( UMAHasWindowManager() )
-	{
-		return FrontNonFloatingWindow() ;
-	}
-	else
-#endif
-	{
-		return FrontWindow() ;
-	}
-}
-
-WindowRef UMAFrontWindow()
-{
-#if UMA_USE_WINDOWMGR
-	if ( UMAHasWindowManager() )
-	{
-		return FrontWindow() ;
-	}
-	else
-#endif
-	{
-		return FrontWindow() ;
-	}
-}
+  UpdateControls( inWindow , inRgn ) ;
+  InvalWindowRgn( inWindow, updateRgn) ;
+	DisposeRgn( updateRgn ) ;
 
-WindowRef UMAGetActiveNonFloatingWindow()
-{
-	return NULL ;
 }
 
 bool UMAIsWindowFloating( WindowRef inWindow ) 
 {
 	WindowClass cl ;
 	
-	UMAGetWindowClass( inWindow , &cl ) ;
+	GetWindowClass( inWindow , &cl ) ;
 	return cl == kFloatingWindowClass ;
 }
 
@@ -1401,7 +555,7 @@ bool UMAIsWindowModal( WindowRef inWindow )
 {
 	WindowClass cl ;
 	
-	UMAGetWindowClass( inWindow , &cl ) ;
+	GetWindowClass( inWindow , &cl ) ;
 	return cl < kFloatingWindowClass ;
 }
 
@@ -1415,15 +569,10 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate )
 //		if ( inActivate != isHightlited )
 		GrafPtr port ;
 		GetPort( &port ) ;
-#if TARGET_CARBON
-		SetPort( GetWindowPort( inWindowRef ) ) ;
-#else
-		SetPort( inWindowRef ) ;
-#endif
-		SetOrigin( 0 , 0 ) ;
+		SetPortWindowPort( inWindowRef ) ;
 		HiliteWindow( inWindowRef , inActivate ) ;
 		ControlHandle control = NULL ;
-		UMAGetRootControl( inWindowRef , & control ) ;
+		::GetRootControl( inWindowRef , & control ) ;
 		if ( control )
 		{
 			if ( inActivate )
@@ -1436,20 +585,82 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate )
 }
 OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState ) 
 {
-#if UMA_USE_APPEARANCE
-  if ( UMAHasAppearance() )
-  {
-    ::DrawThemePlacard( inRect , inState ) ;
-  }
-  else
-#endif
-#if !TARGET_CARBON
+  return ::DrawThemePlacard( inRect , inState ) ;
+}
+
+static OSStatus helpMenuStatus = noErr ;
+static MenuItemIndex firstCustomItemIndex = 0 ;
+
+OSStatus UMAGetHelpMenu(
+  MenuRef *        outHelpMenu,
+  MenuItemIndex *  outFirstCustomItemIndex)
+{
+#if TARGET_CARBON
+  return HMGetHelpMenu( outHelpMenu , outFirstCustomItemIndex ) ;
+#else
+  MenuRef helpMenuHandle ;
+  helpMenuStatus = HMGetHelpMenuHandle( &helpMenuHandle ) ;
+  if ( firstCustomItemIndex == 0 && helpMenuStatus == noErr )
   {
+    firstCustomItemIndex = CountMenuItems( helpMenuHandle ) + 1 ;
   }
-#else
+  if ( outFirstCustomItemIndex )
   {
+    *outFirstCustomItemIndex = firstCustomItemIndex ;
   }
+  *outHelpMenu = helpMenuHandle ;
+  return helpMenuStatus ;
 #endif
-  return noErr ;
+}
+
+wxMacPortStateHelper::wxMacPortStateHelper( GrafPtr newport) 
+{
+  m_clip = NULL ;
+  Setup( newport ) ;
+}
+
+wxMacPortStateHelper::wxMacPortStateHelper()
+{
+	m_clip = NULL ;
+}
+
+void wxMacPortStateHelper::Setup( GrafPtr newport )
+{
+	GetPort( &m_oldPort ) ;
+	SetPort( newport ) ;
+	wxASSERT_MSG( m_clip == NULL , "Cannot call setup twice" ) ;
+	m_clip = NewRgn() ;
+	GetClip( m_clip );
+	m_textFont = GetPortTextFont( (CGrafPtr) newport);
+	m_textSize = GetPortTextSize( (CGrafPtr) newport);
+	m_textStyle = GetPortTextFace( (CGrafPtr) newport);
+	m_textMode = GetPortTextMode( (CGrafPtr) newport);	
+	GetThemeDrawingState( &m_drawingState ) ;
+	m_currentPort = newport ;
+}
+void wxMacPortStateHelper::Clear()
+{
+	if ( m_clip )
+	{
+		DisposeRgn( m_clip ) ;
+		DisposeThemeDrawingState( m_drawingState ) ;
+		m_clip = NULL ;
+	}
+}
+
+wxMacPortStateHelper::~wxMacPortStateHelper()
+{
+	if ( m_clip )
+	{
+		SetPort( m_currentPort ) ;
+		SetClip( m_clip ) ;
+		DisposeRgn( m_clip ) ;
+		TextFont( m_textFont );
+		TextSize( m_textSize );
+		TextFace( m_textStyle );
+		TextMode( m_textMode );
+		SetThemeDrawingState( m_drawingState , true ) ;
+		SetPort( m_oldPort ) ;
+	}
 }