]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/utilscmn.cpp
added wxAuiNotebook::Split() documentation
[wxWidgets.git] / src / common / utilscmn.cpp
index 73905fd61ee5dfd8133145741dc5137057cd60ee..7cf1062a5f12db663c0ab1d182a6eb1dd4287cbf 100644 (file)
@@ -483,8 +483,12 @@ bool wxPlatform::Is(int platform)
     if (platform == wxPORT_MGL)
         return true;
 #endif
     if (platform == wxPORT_MGL)
         return true;
 #endif
-#ifdef __WXOS2__
-    if (platform == wxPORT_OS2)
+#ifdef __OS2__
+    if (platform == wxOS_OS2)
+        return true;
+#endif
+#ifdef __WXPM__
+    if (platform == wxPORT_PM)
         return true;
 #endif
 #ifdef __WXCOCOA__
         return true;
 #endif
 #ifdef __WXCOCOA__
@@ -723,10 +727,13 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags)
     wxUnusedVar(flags);
 
     // set the scheme of url to http if it does not have one
     wxUnusedVar(flags);
 
     // set the scheme of url to http if it does not have one
+    // RR: This doesn't work if the url is just a local path
     wxString url(urlOrig);
     wxString url(urlOrig);
-    if ( !wxURI(url).HasScheme() )
+    wxURI uri(url);
+    if ( !uri.HasScheme() )
         url.Prepend(wxT("http://"));
 
         url.Prepend(wxT("http://"));
 
+
 #if defined(__WXMSW__)
 
 #if wxUSE_IPC
 #if defined(__WXMSW__)
 
 #if wxUSE_IPC
@@ -734,7 +741,13 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags)
     {
         // ShellExecuteEx() opens the URL in an existing window by default so
         // we can't use it if we need a new window
     {
         // ShellExecuteEx() opens the URL in an existing window by default so
         // we can't use it if we need a new window
-        wxRegKey key(wxRegKey::HKCR, url.BeforeFirst(':') + _T("\\shell\\open"));
+        wxRegKey key(wxRegKey::HKCR, uri.GetScheme() + _T("\\shell\\open"));
+        if ( !key.Exists() )
+        {
+            // try default browser, it must be registered at least for http URLs
+            key.SetName(wxRegKey::HKCR, _T("http\\shell\\open"));
+        }
+
         if ( key.Exists() )
         {
             wxRegKey keyDDE(key, wxT("DDEExec"));
         if ( key.Exists() )
         {
             wxRegKey keyDDE(key, wxT("DDEExec"));
@@ -812,8 +825,8 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags)
 #elif defined(__WXMAC__)
     OSStatus err;
     ICInstance inst;
 #elif defined(__WXMAC__)
     OSStatus err;
     ICInstance inst;
-    SInt32 startSel;
-    SInt32 endSel;
+    long int startSel;
+    long int endSel;
 
     err = ICStart(&inst, 'STKA'); // put your app creator code here
     if (err == noErr)
 
     err = ICStart(&inst, 'STKA'); // put your app creator code here
     if (err == noErr)
@@ -838,11 +851,43 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags)
         wxLogDebug(wxT("ICStart error %d"), (int) err);
         return false;
     }
         wxLogDebug(wxT("ICStart error %d"), (int) err);
         return false;
     }
-#elif wxUSE_MIMETYPE
-    // Non-windows way
+#else 
+    // (non-Mac, non-MSW)
+
+#ifdef __UNIX__
+
+    wxString desktop = wxTheApp->GetTraits()->GetDesktopEnvironment();
+
+    // GNOME and KDE desktops have some applications which should be always installed
+    // together with their main parts, which give us the
+    if (desktop == wxT("GNOME"))
+    {
+        wxArrayString errors;
+        wxArrayString output;
+
+        // gconf will tell us the path of the application to use as browser
+        long res = wxExecute( wxT("gconftool-2 --get /desktop/gnome/applications/browser/exec"),
+                              output, errors, wxEXEC_NODISABLE );
+        if (res >= 0 && errors.GetCount() == 0)
+        {
+            wxString cmd = output[0];
+            cmd << _T(' ') << url;
+            if (wxExecute(cmd))
+                return true;
+        }
+    }
+    else if (desktop == wxT("KDE"))
+    {
+        // kfmclient directly opens the given URL
+        if (wxExecute(wxT("kfmclient openURL ") + url))
+            return true;
+    }
+#endif
+
     bool ok = false;
     wxString cmd;
 
     bool ok = false;
     wxString cmd;
 
+#if wxUSE_MIMETYPE
     wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(_T("html"));
     if ( ft )
     {
     wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(_T("html"));
     if ( ft )
     {
@@ -852,6 +897,7 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags)
         ok = ft->GetOpenCommand(&cmd, wxFileType::MessageParameters(url));
         delete ft;
     }
         ok = ft->GetOpenCommand(&cmd, wxFileType::MessageParameters(url));
         delete ft;
     }
+#endif // wxUSE_MIMETYPE
 
     if ( !ok || cmd.empty() )
     {
 
     if ( !ok || cmd.empty() )
     {
@@ -1073,7 +1119,7 @@ wxWindow* wxFindWindowAtPoint(wxWindow* win, const wxPoint& pt)
     }
 
     wxRect rect(pos, sz);
     }
 
     wxRect rect(pos, sz);
-    if (rect.Inside(pt))
+    if (rect.Contains(pt))
         return win;
 
     return NULL;
         return win;
 
     return NULL;