]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/utils_osx.cpp
'Set to Unspecified' -> 'Set Value to Unspecified'
[wxWidgets.git] / src / osx / utils_osx.cpp
index 8bd06e843e20fcb3b3bd4958abadf8de9ed17f06..20d791b1a7373967f6af31d6d7f1c1f2873d062d 100644 (file)
@@ -17,6 +17,7 @@
 #ifndef WX_PRECOMP
     #include "wx/intl.h"
     #include "wx/app.h"
+    #include "wx/log.h"
     #if wxUSE_GUI
         #include "wx/toplevel.h"
         #include "wx/font.h"
 #endif
 
 #include "wx/osx/private.h"
-
-#ifdef wxOSX_USE_COCOA
-// to get the themeing APIs
-#include <Carbon/Carbon.h>
-#endif
-
 #include "wx/osx/private/timer.h"
 
 #include "wx/evtloop.h"
@@ -87,6 +82,49 @@ void wxDisplaySize(int *width, int *height)
     if ( height )
         *height = (int)bounds.size.height;
 }
+
+#if wxUSE_GUI
+
+// ----------------------------------------------------------------------------
+// Launch document with default app
+// ----------------------------------------------------------------------------
+
+bool wxLaunchDefaultApplication(const wxString& document, int flags)
+{
+    wxUnusedVar(flags);
+
+    static const char * const OPEN_CMD = "/usr/bin/open";
+    if ( wxFileExists(OPEN_CMD) &&
+            wxExecute(wxString(OPEN_CMD) + " " + document) )
+        return true;
+
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+// Launch default browser
+// ----------------------------------------------------------------------------
+
+bool wxDoLaunchDefaultBrowser(const wxString& url, int flags)
+{
+    wxUnusedVar(flags);
+    wxCFRef< CFURLRef > curl( CFURLCreateWithString( kCFAllocatorDefault,
+                              wxCFStringRef( url ), NULL ) );
+    OSStatus err = LSOpenCFURLRef( curl , NULL );
+
+    if (err == noErr)
+    {
+        return true;
+    }
+    else
+    {
+        wxLogDebug(wxT("Browser Launch error %d"), (int) err);
+        return false;
+    }
+}
+
+#endif // wxUSE_GUI
+
 #endif
 
 void wxDisplaySizeMM(int *width, int *height)
@@ -116,9 +154,31 @@ wxEventLoopBase* wxGUIAppTraits::CreateEventLoop()
     return new wxEventLoop;
 }
 
+wxNonOwnedWindow *wxFindWindowFromWXWindow(WXWindow inWindowRef);
+wxWindow* wxFindWindowAtPoint(wxWindow* win, const wxPoint& pt);
+
 wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
 {
-    return wxGenericFindWindowAtPoint(pt);
+#if wxOSX_USE_CARBON
+
+    Point screenPoint = { pt.y , pt.x };
+    WindowRef windowRef;
+
+    if ( FindWindow( screenPoint , &windowRef ) )
+    {
+        wxNonOwnedWindow *nonOwned = wxFindWindowFromWXWindow( windowRef );
+
+        if ( nonOwned )
+            return wxFindWindowAtPoint( nonOwned , pt );
+    }
+
+    return NULL;
+
+#else
+
+    return wxGenericFindWindowAtPoint( pt );
+
+#endif
 }
 
 /*