diff --git a/gui/webdisplay/inc/ROOT/RWebDisplayArgs.hxx b/gui/webdisplay/inc/ROOT/RWebDisplayArgs.hxx index dbf1ac546a1b2281d49fe968e46abc9c0d8632dd..111b91a8225b9c4410c9308cf02844b6b0ca34f5 100644 --- a/gui/webdisplay/inc/ROOT/RWebDisplayArgs.hxx +++ b/gui/webdisplay/inc/ROOT/RWebDisplayArgs.hxx @@ -113,14 +113,9 @@ public: int GetHeight() const { return fHeight; } /// set custom executable to start web browser - void SetCustomExec(const std::string &exec) - { - SetBrowserKind(kCustom); - fExec = exec; - } - + void SetCustomExec(const std::string &exec); /// returns custom executable to start web browser - std::string GetCustomExec() const { return GetBrowserKind() == kCustom ? fExec : ""; } + std::string GetCustomExec() const; /// set http server instance, used for window display void SetHttpServer(THttpServer *serv) { fServer = serv; } diff --git a/gui/webdisplay/src/RWebDisplayArgs.cxx b/gui/webdisplay/src/RWebDisplayArgs.cxx index 3e354eb9c9f2b2234896d0ae3c2e7bb903138eae..318947c9915d41d6c2379088e4f0e78e750857d9 100644 --- a/gui/webdisplay/src/RWebDisplayArgs.cxx +++ b/gui/webdisplay/src/RWebDisplayArgs.cxx @@ -144,3 +144,22 @@ std::string ROOT::Experimental::RWebDisplayArgs::GetFullUrl() const return url; } + +/////////////////////////////////////////////////////////////////////////////////////////// +/// Configure custom web browser +/// Either just name of browser which can be used like "opera" +/// or full execution string which must includes $url like "/usr/bin/opera $url" + +void ROOT::Experimental::RWebDisplayArgs::SetCustomExec(const std::string &exec) +{ + SetBrowserKind(kCustom); + fExec = exec; +} + +/////////////////////////////////////////////////////////////////////////////////////////// +/// returns custom executable to start web browser + +std::string ROOT::Experimental::RWebDisplayArgs::GetCustomExec() const +{ + return GetBrowserKind() == kCustom ? fExec : ""; +} diff --git a/gui/webdisplay/src/RWebDisplayHandle.cxx b/gui/webdisplay/src/RWebDisplayHandle.cxx index 7d3236ac94eb710b5e07d2f0e397f3adf4cf6043..333188883d544928eac04052667518b30a3b29ed 100644 --- a/gui/webdisplay/src/RWebDisplayHandle.cxx +++ b/gui/webdisplay/src/RWebDisplayHandle.cxx @@ -139,7 +139,19 @@ ROOT::Experimental::RWebDisplayHandle::BrowserCreator::BrowserCreator(bool custo if (custom) return; if (!exec.empty()) { - fExec = exec; + if (exec.find("$url") == std::string::npos) { + fProg = exec; +#ifdef _MSC_VER + fExec = exec + " $url"; +#else + fExec = exec + " $url &"; +#endif + } else { + fExec = exec; + auto pos = exec.find(" "); + if (pos != std::string::npos) + fProg = exec.substr(0, pos); + } } else if (gSystem->InheritsFrom("TMacOSXSystem")) { fExec = "open \'$url\'"; } else if (gSystem->InheritsFrom("TWinNTSystem")) {