diff options
Diffstat (limited to 'tp-account-widgets')
-rw-r--r-- | tp-account-widgets/tpaw-string-parser.c | 4 | ||||
-rw-r--r-- | tp-account-widgets/tpaw-utils.c | 40 | ||||
-rw-r--r-- | tp-account-widgets/tpaw-utils.h | 5 |
3 files changed, 48 insertions, 1 deletions
diff --git a/tp-account-widgets/tpaw-string-parser.c b/tp-account-widgets/tpaw-string-parser.c index 172a76303..de7778203 100644 --- a/tp-account-widgets/tpaw-string-parser.c +++ b/tp-account-widgets/tpaw-string-parser.c @@ -21,6 +21,8 @@ #include "config.h" #include "tpaw-string-parser.h" +#include <tp-account-widgets/tpaw-utils.h> + #include "empathy-ui-utils.h" #define SCHEMES "([a-zA-Z\\+]+)" @@ -134,7 +136,7 @@ tpaw_string_replace_link (const gchar *text, gchar *title; gchar *markup; - real_url = empathy_make_absolute_url_len (text, len); + real_url = tpaw_make_absolute_url_len (text, len); /* Need to copy manually, because g_markup_printf_escaped does not work * with string precision pitfalls. */ diff --git a/tp-account-widgets/tpaw-utils.c b/tp-account-widgets/tpaw-utils.c index a31fc2681..6ee9cbed1 100644 --- a/tp-account-widgets/tpaw-utils.c +++ b/tp-account-widgets/tpaw-utils.c @@ -272,3 +272,43 @@ tpaw_get_toplevel_window (GtkWidget *widget) return NULL; } + +/** tpaw_make_absolute_url_len: + * @url: an url + * @len: a length + * + * Same as #tpaw_make_absolute_url but for a limited string length + */ +gchar * +tpaw_make_absolute_url_len (const gchar *url, + guint len) +{ + g_return_val_if_fail (url != NULL, NULL); + + if (g_str_has_prefix (url, "help:") || + g_str_has_prefix (url, "mailto:") || + strstr (url, ":/")) + return g_strndup (url, len); + + if (strstr (url, "@")) + return g_strdup_printf ("mailto:%.*s", len, url); + + return g_strdup_printf ("http://%.*s", len, url); +} + +/** tpaw_make_absolute_url: + * @url: an url + * + * The URL opening code can't handle schemeless strings, so we try to be + * smart and add http if there is no scheme or doesn't look like a mail + * address. This should work in most cases, and let us click on strings + * like "www.gnome.org". + * + * Returns: a newly allocated url with proper mailto: or http:// prefix, use + * g_free when your are done with it + */ +gchar * +tpaw_make_absolute_url (const gchar *url) +{ + return tpaw_make_absolute_url_len (url, strlen (url)); +} diff --git a/tp-account-widgets/tpaw-utils.h b/tp-account-widgets/tpaw-utils.h index 8a40dc93b..f8fad91ef 100644 --- a/tp-account-widgets/tpaw-utils.h +++ b/tp-account-widgets/tpaw-utils.h @@ -58,6 +58,11 @@ void tpaw_window_present_with_time (GtkWindow *window, guint32 timestamp); GtkWindow * tpaw_get_toplevel_window (GtkWidget *widget); +/* URL */ +gchar * tpaw_make_absolute_url (const gchar *url); +gchar * tpaw_make_absolute_url_len (const gchar *url, + guint len); + /* Copied from wocky/wocky-utils.h */ #define tpaw_implement_finish_void(source, tag) \ |