]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/uma.cpp
* In _GSocket_Get_Mac_Socket(), do not call CFSocketSetSocketFlags to turn
[wxWidgets.git] / src / mac / carbon / uma.cpp
index c8073ac49f4df870375ad8bf425a2d62b488edae..68a62c217c20be23aa4745ae4bd977bca67ae35e 100644 (file)
@@ -10,6 +10,9 @@
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/defs.h"
+
+#if wxUSE_GUI
+
 #include "wx/dc.h"
 #include <MacTextEditor.h>
 
@@ -30,6 +33,7 @@
 #endif
 #include "wx/mac/uma.h"
 
+
 // 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
@@ -40,7 +44,8 @@ static bool    sUMAHasAppearance = false ;
 static long sUMAAppearanceVersion = 0 ;
 static long sUMASystemVersion = 0 ;
 static bool sUMAHasAquaLayout = false ;
-static bool sUMASystemInitialized = false ;
+
+static bool sUMAHasInittedAppearance = false;
 
 extern int gAGABackgroundColor ;
 bool UMAHasAppearance() { return sUMAHasAppearance ; }
@@ -53,11 +58,11 @@ static long sUMAWindowManagerAttr = 0 ;
 bool UMAHasWindowManager() { return sUMAHasWindowManager ; }
 long UMAGetWindowManagerAttr() { return sUMAWindowManagerAttr ; }
 bool UMAHasAquaLayout() { return sUMAHasAquaLayout ; }
-bool UMASystemIsInitialized() { return sUMASystemInitialized ; }
+
 
 void UMACleanupToolbox()
 {
-    if ( sUMAHasAppearance )
+    if (sUMAHasInittedAppearance)
     {
         UnregisterAppearanceClient() ;
     }
@@ -68,26 +73,29 @@ void UMACleanupToolbox()
   if ( TXNTerminateTextension != (void*) kUnresolvedCFragSymbolAddress )
       TXNTerminateTextension( ) ;
 }
-void UMAInitToolbox( UInt16 inMoreMastersCalls )
+void UMAInitToolbox( UInt16 inMoreMastersCalls, bool isEmbedded )
 {
 #if !TARGET_CARBON
     ::MaxApplZone();
     for (long i = 1; i <= inMoreMastersCalls; i++)
         ::MoreMasters();
 
-    ::InitGraf(&qd.thePort);
-    ::InitFonts();
-    ::InitMenus();
-    ::TEInit();
-    ::InitDialogs(0L);
-    ::FlushEvents(everyEvent, 0);
-    ::InitCursor();
+    if (!isEmbedded)
+    {
+        ::InitGraf(&qd.thePort);
+        ::InitFonts();
+        ::InitMenus();
+        ::TEInit();
+        ::InitDialogs(0L);
+        ::FlushEvents(everyEvent, 0);
+    }
+
     long total,contig;
     PurgeSpace(&total, &contig);
-#else
-    InitCursor();
 #endif
 
+    ::InitCursor();
+
     if ( Gestalt(gestaltSystemVersion, &sUMASystemVersion) != noErr)
         sUMASystemVersion = 0x0000 ;
 
@@ -95,7 +103,17 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
     if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr )
     {
         sUMAHasAppearance = true ;
-        RegisterAppearanceClient();
+        OSStatus status = RegisterAppearanceClient();
+        // If status equals appearanceProcessRegisteredErr it means the
+        // appearance client already was registered (For example if we run
+        // embedded, the host might have registered it). In such a case
+        // we don't unregister it later on.
+        if (status != appearanceProcessRegisteredErr)
+        {
+            // Appearance client wasn't registered yet.
+            sUMAHasInittedAppearance = true;
+        }
+
         if ( Gestalt( gestaltAppearanceVersion, &theAppearance ) == noErr )
         {
             sUMAAppearanceVersion = theAppearance ;
@@ -113,10 +131,13 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
 #if TARGET_CARBON
 // Call currently implicitely done :        InitFloatingWindows() ;
 #else
-    if ( sUMAHasWindowManager )
-        InitFloatingWindows() ;
-    else
-        InitWindows();
+    if (!isEmbedded)
+    {
+        if ( sUMAHasWindowManager )
+            InitFloatingWindows() ;
+        else
+            InitWindows();
+    }
 #endif
 
     if ( NavServicesAvailable() )
@@ -140,7 +161,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
 
     TXNMacOSPreferredFontDescription fontDescriptions[] =
     {
-        { fontId , (fontSize << 16) ,kTXNDefaultFontStyle, kTXNSystemDefaultEncoding } ,
+        { fontId , (fontSize << 16) ,kTXNDefaultFontStyle, kTXNSystemDefaultEncoding }
     } ;
     int noOfFontDescriptions = sizeof( fontDescriptions ) / sizeof(TXNMacOSPreferredFontDescription) ;
 #if 0 // TARGET_CARBON
@@ -158,7 +179,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
   }
 
 
-  sUMASystemInitialized = true ;
+  UMASetSystemIsInitialized(true);
 
 }
 
@@ -295,7 +316,7 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn
             // for some reasons this must be 0 right now
             // everything else leads to just the first function key item
             // to be selected. Thanks to Ryan Wilcox for finding out.
-            macKey = 0 ; 
+            macKey = 0 ;
             glyph = kMenuF1Glyph + ( key - WXK_F1 ) ;
             if ( key >= WXK_F13 )
                 glyph += 13 ;
@@ -777,3 +798,21 @@ OSStatus UMAPutScrap( Size size , OSType type , void *data )
     return err ;
 }
 
+#endif  // wxUSE_GUI
+
+#if wxUSE_BASE
+
+static bool sUMASystemInitialized = false ;
+
+bool UMASystemIsInitialized()
+{
+    return sUMASystemInitialized ;
+}
+
+void UMASetSystemIsInitialized(bool val)
+{
+    sUMASystemInitialized = val;
+}
+
+
+#endif // wxUSE_BASE