]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/utils_osx.cpp
Forgot about the drag source delegate, which is the perfect place to put GiveFeedback...
[wxWidgets.git] / src / osx / utils_osx.cpp
index 8a612a66dafe954942253f27918e4db7a3c08a11..bd165782c5e6319728c3a5a1a3cfdc0b0eafdba4 100644 (file)
@@ -93,12 +93,20 @@ 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) )
+    wxCFRef<CFMutableStringRef> cfMutableString(CFStringCreateMutableCopy(NULL, 0, wxCFStringRef(document)));
+    CFStringNormalize(cfMutableString,kCFStringNormalizationFormD);
+    wxCFRef<CFURLRef> curl(CFURLCreateWithFileSystemPath(kCFAllocatorDefault, cfMutableString , kCFURLPOSIXPathStyle, false));
+    OSStatus err = LSOpenCFURLRef( curl , NULL );
+    
+    if (err == noErr)
+    {
         return true;
-
-    return false;
+    }
+    else
+    {
+        wxLogDebug(wxT("Default Application Launch error %d"), (int) err);
+        return false;
+    }
 }
 
 // ----------------------------------------------------------------------------
@@ -154,9 +162,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
 }
 
 /*