]> git.saurik.com Git - wxWidgets.git/commitdiff
[ 1587059 ] wxLaunchDefaultBrowser fix for KDE
authorRobert Roebling <robert@roebling.de>
Mon, 30 Oct 2006 11:46:44 +0000 (11:46 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 30 Oct 2006 11:46:44 +0000 (11:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42712 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/function.tex
samples/html/test/test.cpp
src/common/utilscmn.cpp

index 47d46b1b40c634db6d6d7e4e2e32fd038c2e05a2..2b06d32202f8a647e3e9a249fd43dc1ccad1882b 100644 (file)
@@ -3286,6 +3286,10 @@ Open the \arg{url} in user's default browser. If \arg{flags} parameter contains
 
 Returns \true if the application was successfully launched.
 
+Note that for some configurations of the running user, the application which
+is launched to open the given URL may be URL-dependent (e.g. a browser may be used for
+local URLs while another one may be used for remote URLs).
+
 \wxheading{Include files}
 
 <wx/utils.h>
index eeab3617a75903411bf9f5284557efb20b940c55..0336006f31c2a0fd4f37c76d85ba63b428bafd79 100644 (file)
@@ -66,7 +66,8 @@ public:
     // event handlers (these functions should _not_ be virtual)
     void OnQuit(wxCommandEvent& event);
     void OnPageOpen(wxCommandEvent& event);
-    void OnDefaultBrowser(wxCommandEvent& event);
+    void OnDefaultLocalBrowser(wxCommandEvent& event);
+    void OnDefaultWebBrowser(wxCommandEvent& event);
     void OnBack(wxCommandEvent& event);
     void OnForward(wxCommandEvent& event);
     void OnProcessor(wxCommandEvent& event);
@@ -108,7 +109,8 @@ enum
 {
     // menu items
     ID_PageOpen = wxID_HIGHEST,
-    ID_DefaultBrowser,
+    ID_DefaultLocalBrowser,
+    ID_DefaultWebBrowser,
     ID_Back,
     ID_Forward,
     ID_Processor
@@ -121,7 +123,8 @@ enum
 BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(wxID_EXIT,  MyFrame::OnQuit)
     EVT_MENU(ID_PageOpen, MyFrame::OnPageOpen)
-    EVT_MENU(ID_DefaultBrowser, MyFrame::OnDefaultBrowser)
+    EVT_MENU(ID_DefaultLocalBrowser, MyFrame::OnDefaultLocalBrowser)
+    EVT_MENU(ID_DefaultWebBrowser, MyFrame::OnDefaultWebBrowser)
     EVT_MENU(ID_Back, MyFrame::OnBack)
     EVT_MENU(ID_Forward, MyFrame::OnForward)
     EVT_MENU(ID_Processor, MyFrame::OnProcessor)
@@ -180,7 +183,8 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
     wxMenu *menuNav = new wxMenu;
 
     menuFile->Append(ID_PageOpen, _("&Open HTML page..."));
-    menuFile->Append(ID_DefaultBrowser, _("&Open current page with default browser"));
+    menuFile->Append(ID_DefaultLocalBrowser, _("&Open current page with default browser"));
+    menuFile->Append(ID_DefaultWebBrowser, _("Open a &web page with default browser"));
     menuFile->AppendSeparator();
     menuFile->Append(ID_Processor, _("&Remove bold attribute"),
                      wxEmptyString, wxITEM_CHECK);
@@ -260,7 +264,7 @@ void MyFrame::OnPageOpen(wxCommandEvent& WXUNUSED(event))
 #endif // wxUSE_FILEDLG
 }
 
-void MyFrame::OnDefaultBrowser(wxCommandEvent& WXUNUSED(event))
+void MyFrame::OnDefaultLocalBrowser(wxCommandEvent& WXUNUSED(event))
 {
     wxString page = m_Html->GetOpenedPage();
     if (!page.empty())
@@ -269,6 +273,15 @@ void MyFrame::OnDefaultBrowser(wxCommandEvent& WXUNUSED(event))
     }
 }
 
+void MyFrame::OnDefaultWebBrowser(wxCommandEvent& WXUNUSED(event))
+{
+    wxString page = m_Html->GetOpenedPage();
+    if (!page.empty())
+    {
+        wxLaunchDefaultBrowser(wxT("http://www.google.com"));
+    }
+}
+
 void MyFrame::OnBack(wxCommandEvent& WXUNUSED(event))
 {
     if (!m_Html->HistoryBack())
index daaa20101a10cbb72c40aad6ff31fe8998647182..7cf1062a5f12db663c0ab1d182a6eb1dd4287cbf 100644 (file)
@@ -855,11 +855,19 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags)
     // (non-Mac, non-MSW)
 
 #ifdef __UNIX__
-    if (wxTheApp->GetTraits()->GetDesktopEnvironment() == wxT("GNOME"))
+
+    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;
-        long res = wxExecute( wxT("gconftool-2 --get /desktop/gnome/applications/browser/exec"), output, errors, wxEXEC_NODISABLE );
+
+        // 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];
@@ -868,6 +876,12 @@ bool wxLaunchDefaultBrowser(const wxString& urlOrig, int flags)
                 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;