roundabout,
created on Monday, 23 June 2025, 09:11:50 (1750669910),
received on Monday, 23 June 2025, 09:11:54 (1750669914)
Author identity: vlad <vlad.muntoiu@gmail.com>
c4d5054c7e23f8d1a5d545cac1e789d9d9c7b49c
panthera-www.cc
@@ -41,6 +41,14 @@ std::string url_encode(const std::string &value) {
return escaped.str();
}
bool starts_with(const Glib::ustring &str, const Glib::ustring &prefix) {
return str.size() >= prefix.size() && str.compare(0, prefix.size(), prefix) == 0;
}
bool ends_with(const Glib::ustring &str, const Glib::ustring &suffix) {
return str.size() >= suffix.size() && str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0;
}
struct SearchEngine {
Glib::ustring name;
Glib::ustring url;
@@ -346,7 +354,7 @@ protected:
if(type == WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION) {
auto action = webkit_navigation_policy_decision_get_navigation_action(WEBKIT_NAVIGATION_POLICY_DECISION(decision));
Glib::ustring url = Glib::ustring(webkit_uri_request_get_uri(webkit_navigation_action_get_request(action)));
if(url.find("://") == Glib::ustring::npos) {
if(!starts_with(url, "about:") && url.find("://") == Glib::ustring::npos) {
// It is a special scheme (mailto:, tel: etc.)
try {
Gio::AppInfo::launch_default_for_uri(url);