aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>2009-08-22 00:37:48 +0800
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>2009-08-22 00:37:48 +0800
commit84e30dab1428affe335ef904377d07f8b5fdeb66 (patch)
treefee9c8ec124a2b5804f6bb4ee31772db56a6e374 /libempathy-gtk
parentfd8e9c5dc2584055177c7a79021cdd53ca431c22 (diff)
parent3803736b4326d4bc00d58ccd25f910907f0b4521 (diff)
downloadgsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar
gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar.gz
gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar.bz2
gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar.lz
gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar.xz
gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.tar.zst
gsoc2013-empathy-84e30dab1428affe335ef904377d07f8b5fdeb66.zip
Merge back from master
Diffstat (limited to 'libempathy-gtk')
-rw-r--r--libempathy-gtk/empathy-audio-sink.c10
-rw-r--r--libempathy-gtk/empathy-audio-src.c12
-rw-r--r--libempathy-gtk/empathy-chat.c25
-rw-r--r--libempathy-gtk/empathy-conf.h2
-rw-r--r--libempathy-gtk/empathy-contact-list-view.c8
-rw-r--r--libempathy-gtk/empathy-contact-list-view.h1
-rw-r--r--libempathy-gtk/empathy-contact-widget.c4
-rw-r--r--libempathy-gtk/empathy-location-manager.c48
-rw-r--r--libempathy-gtk/empathy-presence-chooser.c27
-rw-r--r--libempathy-gtk/empathy-share-my-desktop.c2
-rw-r--r--libempathy-gtk/empathy-status-preset-dialog.ui4
-rw-r--r--libempathy-gtk/empathy-theme-adium.c60
-rw-r--r--libempathy-gtk/empathy-ui-utils.c23
-rw-r--r--libempathy-gtk/empathy-ui-utils.h2
14 files changed, 156 insertions, 72 deletions
diff --git a/libempathy-gtk/empathy-audio-sink.c b/libempathy-gtk/empathy-audio-sink.c
index 55f64e828..1d2169593 100644
--- a/libempathy-gtk/empathy-audio-sink.c
+++ b/libempathy-gtk/empathy-audio-sink.c
@@ -204,7 +204,15 @@ empathy_audio_sink_finalize (GObject *object)
GstElement *
empathy_audio_sink_new (void)
{
- return GST_ELEMENT (g_object_new (EMPATHY_TYPE_GST_AUDIO_SINK, NULL));
+ static gboolean registered = FALSE;
+
+ if (!registered) {
+ if (!gst_element_register (NULL, "empathyaudiosink",
+ GST_RANK_NONE, EMPATHY_TYPE_GST_AUDIO_SINK))
+ return NULL;
+ registered = TRUE;
+ }
+ return gst_element_factory_make ("empathyaudiosink", NULL);
}
void
diff --git a/libempathy-gtk/empathy-audio-src.c b/libempathy-gtk/empathy-audio-src.c
index 0497439bf..a3416f2ea 100644
--- a/libempathy-gtk/empathy-audio-src.c
+++ b/libempathy-gtk/empathy-audio-src.c
@@ -343,7 +343,15 @@ out:
GstElement *
empathy_audio_src_new (void)
{
- return GST_ELEMENT (g_object_new (EMPATHY_TYPE_GST_AUDIO_SRC, NULL));
+ static gboolean registered = FALSE;
+
+ if (!registered) {
+ if (!gst_element_register (NULL, "empathyaudiosrc",
+ GST_RANK_NONE, EMPATHY_TYPE_GST_AUDIO_SRC))
+ return NULL;
+ registered = TRUE;
+ }
+ return gst_element_factory_make ("empathyaudiosrc", NULL);
}
void
@@ -375,3 +383,5 @@ empathy_audio_src_get_volume (EmpathyGstAudioSrc *src)
return volume;
}
+
+
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index d52d7af93..9096beeae 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -401,9 +401,18 @@ chat_send (EmpathyChat *chat,
if (msg[0] == '/' &&
!g_str_has_prefix (msg, "/me") &&
!g_str_has_prefix (msg, "/say")) {
- empathy_chat_view_append_event (chat->view,
- _("Unsupported command"));
- return;
+ /* Also allow messages with two slashes before the first space,
+ * so it is possible to send an /unix/path */
+ int slash_count = 0, i;
+ for (i = 0; msg[i] && msg[i] != ' ' && slash_count < 2; i++) {
+ if (msg[i] == '/')
+ slash_count++;
+ }
+ if (slash_count == 1) {
+ empathy_chat_view_append_event (chat->view,
+ _("Unsupported command"));
+ return;
+ }
}
/* We can send the message */
@@ -1183,7 +1192,10 @@ build_part_message (guint reason,
break;
case TP_CHANNEL_GROUP_CHANGE_REASON_KICKED:
if (actor_name != NULL) {
- g_string_append_printf (s, _("%s was kicked by %s"),
+ /* translators: reverse the order of these arguments
+ * if the kicked should come before the kicker in your locale.
+ */
+ g_string_append_printf (s, _("%1$s was kicked by %2$s"),
name, actor_name);
} else {
g_string_append_printf (s, _("%s was kicked"), name);
@@ -1191,7 +1203,10 @@ build_part_message (guint reason,
break;
case TP_CHANNEL_GROUP_CHANGE_REASON_BANNED:
if (actor_name != NULL) {
- g_string_append_printf (s, _("%s was banned by %s"),
+ /* translators: reverse the order of these arguments
+ * if the banned should come before the banner in your locale.
+ */
+ g_string_append_printf (s, _("%1$s was banned by %2$s"),
name, actor_name);
} else {
g_string_append_printf (s, _("%s was banned"), name);
diff --git a/libempathy-gtk/empathy-conf.h b/libempathy-gtk/empathy-conf.h
index 2383a7edf..d8e34f6b9 100644
--- a/libempathy-gtk/empathy-conf.h
+++ b/libempathy-gtk/empathy-conf.h
@@ -78,7 +78,7 @@ struct _EmpathyConfClass {
#define EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM EMPATHY_PREFS_PATH "/contacts/sort_criterium"
#define EMPATHY_PREFS_HINTS_CLOSE_MAIN_WINDOW EMPATHY_PREFS_PATH "/hints/close_main_window"
#define EMPATHY_PREFS_SALUT_ACCOUNT_CREATED EMPATHY_PREFS_PATH "/accounts/salut_created"
-#define EMPATHY_PREFS_USE_NM EMPATHY_PREFS_PATH "/use_nm"
+#define EMPATHY_PREFS_USE_CONN EMPATHY_PREFS_PATH "/use_conn"
#define EMPATHY_PREFS_AUTOCONNECT EMPATHY_PREFS_PATH "/autoconnect"
#define EMPATHY_PREFS_IMPORT_ASKED EMPATHY_PREFS_PATH "/import_asked"
#define EMPATHY_PREFS_FILE_TRANSFER_DEFAULT_FOLDER EMPATHY_PREFS_PATH "/file_transfer/default_folder"
diff --git a/libempathy-gtk/empathy-contact-list-view.c b/libempathy-gtk/empathy-contact-list-view.c
index 2ff27b130..dcbbb18bf 100644
--- a/libempathy-gtk/empathy-contact-list-view.c
+++ b/libempathy-gtk/empathy-contact-list-view.c
@@ -364,6 +364,7 @@ contact_list_view_drag_motion (GtkWidget *widget,
gboolean is_row;
gboolean is_different = FALSE;
gboolean cleanup = TRUE;
+ int action = 0;
is_row = gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget),
x,
@@ -382,6 +383,13 @@ contact_list_view_drag_motion (GtkWidget *widget,
cleanup &= FALSE;
}
+ if (context->actions == GDK_ACTION_COPY) {
+ action = context->suggested_action;
+ } else if (context->actions & GDK_ACTION_MOVE) {
+ action = GDK_ACTION_MOVE;
+ }
+ gdk_drag_status (context, action, time);
+
if (!is_different && !cleanup) {
return TRUE;
}
diff --git a/libempathy-gtk/empathy-contact-list-view.h b/libempathy-gtk/empathy-contact-list-view.h
index 6666cfbb7..17de5239b 100644
--- a/libempathy-gtk/empathy-contact-list-view.h
+++ b/libempathy-gtk/empathy-contact-list-view.h
@@ -29,6 +29,7 @@
#include <gtk/gtk.h>
#include <libempathy/empathy-contact.h>
+#include <libempathy/empathy-enum-types.h>
#include "empathy-contact-list-store.h"
#include "empathy-contact-menu.h"
diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c
index 5b2e2de91..d6f806360 100644
--- a/libempathy-gtk/empathy-contact-widget.c
+++ b/libempathy-gtk/empathy-contact-widget.c
@@ -600,6 +600,10 @@ contact_widget_contact_setup (EmpathyContactWidget *information)
PANGO_WRAP_WORD_CHAR);
gtk_label_set_line_wrap (GTK_LABEL (information->label_status),
TRUE);
+
+ if (!(information->flags & EMPATHY_CONTACT_WIDGET_FOR_TOOLTIP))
+ gtk_label_set_selectable (GTK_LABEL (information->label_status), TRUE);
+
gtk_box_pack_start (GTK_BOX (information->hbox_presence),
information->label_status, TRUE, TRUE, 0);
gtk_widget_show (information->label_status);
diff --git a/libempathy-gtk/empathy-location-manager.c b/libempathy-gtk/empathy-location-manager.c
index 278af72f2..2018b5c5a 100644
--- a/libempathy-gtk/empathy-location-manager.c
+++ b/libempathy-gtk/empathy-location-manager.c
@@ -21,6 +21,10 @@
#include "config.h"
+/* Needed for trunc */
+#define _ISOC9X_SOURCE 1
+#define _ISOC99_SOURCE 1
+#include <math.h>
#include <string.h>
#include <time.h>
@@ -63,7 +67,6 @@ typedef struct {
GeoclueAddress *gc_address;
gboolean reduce_accuracy;
- gdouble reduce_value;
EmpathyAccountManager *account_manager;
/* The idle id for publish_on_idle func */
@@ -194,13 +197,13 @@ publish_location (EmpathyLocationManager *location_manager,
if (!conn)
return;
- if (force_publication == FALSE)
+ if (!force_publication)
{
if (!empathy_conf_get_bool (conf, EMPATHY_PREFS_LOCATION_PUBLISH,
&can_publish))
return;
- if (can_publish == FALSE)
+ if (!can_publish)
return;
}
@@ -312,7 +315,8 @@ address_changed_cb (GeoclueAddress *address,
{
GValue *new_value;
/* Discard street information if reduced accuracy is on */
- if (priv->reduce_accuracy && strcmp (key, EMPATHY_LOCATION_STREET) == 0)
+ if (priv->reduce_accuracy &&
+ !tp_strdiff (key, EMPATHY_LOCATION_STREET))
continue;
new_value = tp_g_value_slice_new_string (value);
@@ -368,7 +372,11 @@ position_changed_cb (GeocluePosition *position,
if (fields & GEOCLUE_POSITION_FIELDS_LONGITUDE)
{
- longitude += priv->reduce_value;
+
+ if (priv->reduce_accuracy)
+ /* Truncate at 1 decimal place */
+ longitude = trunc (longitude * 10.0) / 10.0;
+
new_value = tp_g_value_slice_new_double (longitude);
g_hash_table_insert (priv->location, g_strdup (EMPATHY_LOCATION_LON),
new_value);
@@ -381,7 +389,10 @@ position_changed_cb (GeocluePosition *position,
if (fields & GEOCLUE_POSITION_FIELDS_LATITUDE)
{
- latitude += priv->reduce_value;
+ if (priv->reduce_accuracy)
+ /* Truncate at 1 decimal place */
+ latitude = trunc (latitude * 10.0) / 10.0;
+
new_value = tp_g_value_slice_new_double (latitude);
g_hash_table_replace (priv->location, g_strdup (EMPATHY_LOCATION_LAT),
new_value);
@@ -535,15 +546,15 @@ publish_cb (EmpathyConf *conf,
DEBUG ("Publish Conf changed");
- if (empathy_conf_get_bool (conf, key, &can_publish) == FALSE)
+ if (!empathy_conf_get_bool (conf, key, &can_publish))
return;
- if (can_publish == TRUE)
+ if (can_publish)
{
- if (priv->geoclue_is_setup == FALSE)
+ if (!priv->geoclue_is_setup)
setup_geoclue (manager);
/* if still not setup than the init failed */
- if (priv->geoclue_is_setup == FALSE)
+ if (!priv->geoclue_is_setup)
return;
geoclue_address_get_address_async (priv->gc_address,
@@ -577,11 +588,11 @@ resource_cb (EmpathyConf *conf,
if (!empathy_conf_get_bool (conf, key, &resource_enabled))
return;
- if (strcmp (key, EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK) == 0)
+ if (!tp_strdiff (key, EMPATHY_PREFS_LOCATION_RESOURCE_NETWORK))
resource = GEOCLUE_RESOURCE_NETWORK;
- if (strcmp (key, EMPATHY_PREFS_LOCATION_RESOURCE_CELL) == 0)
+ if (!tp_strdiff (key, EMPATHY_PREFS_LOCATION_RESOURCE_CELL))
resource = GEOCLUE_RESOURCE_CELL;
- if (strcmp (key, EMPATHY_PREFS_LOCATION_RESOURCE_GPS) == 0)
+ if (!tp_strdiff (key, EMPATHY_PREFS_LOCATION_RESOURCE_GPS))
resource = GEOCLUE_RESOURCE_GPS;
if (resource_enabled)
@@ -609,17 +620,6 @@ accuracy_cb (EmpathyConf *conf,
return;
priv->reduce_accuracy = enabled;
- if (enabled)
- {
- GRand *rand = g_rand_new_with_seed (time (NULL));
- priv->reduce_value = g_rand_double_range (rand, -0.25, 0.25);
- g_rand_free (rand);
- }
- else
- {
- priv->reduce_value = 0.0;
- }
-
if (!priv->geoclue_is_setup)
return;
diff --git a/libempathy-gtk/empathy-presence-chooser.c b/libempathy-gtk/empathy-presence-chooser.c
index 69b031c05..ba36e091c 100644
--- a/libempathy-gtk/empathy-presence-chooser.c
+++ b/libempathy-gtk/empathy-presence-chooser.c
@@ -35,6 +35,7 @@
#include <telepathy-glib/util.h>
+#include <libempathy/empathy-connectivity.h>
#include <libempathy/empathy-idle.h>
#include <libempathy/empathy-utils.h>
#include <libempathy/empathy-status-presets.h>
@@ -98,6 +99,9 @@ typedef enum {
typedef struct {
EmpathyIdle *idle;
+ EmpathyConnectivity *connectivity;
+
+ gulong state_change_signal_id;
gboolean editing_status;
int block_set_editing;
@@ -710,6 +714,14 @@ presence_chooser_entry_focus_out_cb (EmpathyPresenceChooser *chooser,
}
static void
+presence_chooser_connectivity_state_change (EmpathyConnectivity *connectivity,
+ gboolean new_online,
+ EmpathyPresenceChooser *chooser)
+{
+ gtk_widget_set_sensitive (GTK_WIDGET (chooser), new_online);
+}
+
+static void
empathy_presence_chooser_init (EmpathyPresenceChooser *chooser)
{
EmpathyPresenceChooserPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (chooser,
@@ -780,6 +792,14 @@ empathy_presence_chooser_init (EmpathyPresenceChooser *chooser)
/* FIXME: this string sucks */
gtk_widget_set_tooltip_text (GTK_WIDGET (chooser),
_("Set your presence and current status"));
+
+ priv->connectivity = empathy_connectivity_dup_singleton ();
+ priv->state_change_signal_id = g_signal_connect (priv->connectivity,
+ "state-change",
+ G_CALLBACK (presence_chooser_connectivity_state_change),
+ chooser);
+ presence_chooser_connectivity_state_change (priv->connectivity,
+ empathy_connectivity_is_online (priv->connectivity), chooser);
}
static void
@@ -802,6 +822,12 @@ presence_chooser_finalize (GObject *object)
object);
g_object_unref (priv->idle);
+ g_signal_handler_disconnect (priv->connectivity,
+ priv->state_change_signal_id);
+ priv->state_change_signal_id = 0;
+
+ g_object_unref (priv->connectivity);
+
G_OBJECT_CLASS (empathy_presence_chooser_parent_class)->finalize (object);
}
@@ -1049,6 +1075,7 @@ presence_chooser_menu_add_item (GtkWidget *menu,
gtk_widget_show (image);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);
gtk_widget_show (item);
g_object_set_data_full (G_OBJECT (item),
diff --git a/libempathy-gtk/empathy-share-my-desktop.c b/libempathy-gtk/empathy-share-my-desktop.c
index 4c60e435f..01c2e183f 100644
--- a/libempathy-gtk/empathy-share-my-desktop.c
+++ b/libempathy-gtk/empathy-share-my-desktop.c
@@ -212,7 +212,7 @@ empathy_share_my_desktop_connection_ready (TpConnection *connection,
g_hash_table_insert (request, TP_IFACE_CHANNEL ".TargetHandle", value);
/* org.freedesktop.Telepathy.Channel.Type.StreamTube.Service */
- value = tp_g_value_slice_new_static_string ("x_vnc");
+ value = tp_g_value_slice_new_static_string ("rfb");
g_hash_table_insert (request,
TP_IFACE_CHANNEL_TYPE_STREAM_TUBE ".Service",
value);
diff --git a/libempathy-gtk/empathy-status-preset-dialog.ui b/libempathy-gtk/empathy-status-preset-dialog.ui
index ead8ab85d..3e76eb6aa 100644
--- a/libempathy-gtk/empathy-status-preset-dialog.ui
+++ b/libempathy-gtk/empathy-status-preset-dialog.ui
@@ -46,7 +46,7 @@
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="remove-button">
- <property name="label" translatable="yes">gtk-remove</property>
+ <property name="label">gtk-remove</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
@@ -95,7 +95,7 @@
</child>
<child>
<object class="GtkButton" id="add-button">
- <property name="label" translatable="yes">gtk-add</property>
+ <property name="label">gtk-add</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c
index 2889aa304..e1094f1be 100644
--- a/libempathy-gtk/empathy-theme-adium.c
+++ b/libempathy-gtk/empathy-theme-adium.c
@@ -298,33 +298,6 @@ theme_adium_parse_body (EmpathyThemeAdium *theme,
EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
&use_smileys);
- if (use_smileys) {
- /* Replace smileys by a <img/> tag */
- string = g_string_sized_new (strlen (text));
- smileys = empathy_smiley_manager_parse (priv->smiley_manager, text);
- for (l = smileys; l; l = l->next) {
- EmpathySmiley *smiley;
-
- smiley = l->data;
- if (smiley->path) {
- g_string_append_printf (string,
- "<abbr title='%s'><img src=\"%s\"/ alt=\"%s\"/></abbr>",
- smiley->str, smiley->path, smiley->str);
- } else {
- gchar *str;
-
- str = g_markup_escape_text (smiley->str, -1);
- g_string_append (string, str);
- g_free (str);
- }
- empathy_smiley_free (smiley);
- }
- g_slist_free (smileys);
-
- g_free (ret);
- text = ret = g_string_free (string, FALSE);
- }
-
/* Add <a href></a> arround links */
uri_regex = empathy_uri_regex_dup_singleton ();
match = g_regex_match (uri_regex, text, 0, &match_info);
@@ -334,6 +307,8 @@ theme_adium_parse_body (EmpathyThemeAdium *theme,
string = g_string_sized_new (strlen (text));
do {
+ gchar *real_url;
+
g_match_info_fetch_pos (match_info, 0, &s, &e);
if (s > last) {
@@ -343,12 +318,15 @@ theme_adium_parse_body (EmpathyThemeAdium *theme,
}
/* Append the link inside <a href=""></a> tag */
+ real_url = empathy_make_absolute_url (text + s);
+
g_string_append (string, "<a href=\"");
- g_string_append_len (string, text + s, e - s);
+ g_string_append (string, real_url);
g_string_append (string, "\">");
g_string_append_len (string, text + s, e - s);
g_string_append (string, "</a>");
+ g_free (real_url);
last = e;
} while (g_match_info_next (match_info, NULL));
@@ -359,7 +337,33 @@ theme_adium_parse_body (EmpathyThemeAdium *theme,
g_free (ret);
text = ret = g_string_free (string, FALSE);
+ } else if (use_smileys) {
+ /* Replace smileys by a <img/> tag */
+ string = g_string_sized_new (strlen (text));
+ smileys = empathy_smiley_manager_parse (priv->smiley_manager, text);
+ for (l = smileys; l; l = l->next) {
+ EmpathySmiley *smiley;
+
+ smiley = l->data;
+ if (smiley->path) {
+ g_string_append_printf (string,
+ "<abbr title='%s'><img src=\"%s\"/ alt=\"%s\"/></abbr>",
+ smiley->str, smiley->path, smiley->str);
+ } else {
+ gchar *str;
+
+ str = g_markup_escape_text (smiley->str, -1);
+ g_string_append (string, str);
+ g_free (str);
+ }
+ empathy_smiley_free (smiley);
+ }
+ g_slist_free (smileys);
+
+ g_free (ret);
+ text = ret = g_string_free (string, FALSE);
}
+
g_match_info_free (match_info);
g_regex_unref (uri_regex);
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index 3dcefdcfb..c12cbd1c9 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -1321,20 +1321,26 @@ empathy_get_toplevel_window (GtkWidget *widget)
return NULL;
}
-/* The URL opening code can't handle schemeless strings, so we try to be
+/** empathy_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
*/
-static gchar *
-fixup_url (const gchar *url)
+gchar *
+empathy_make_absolute_url (const gchar *url)
{
g_return_val_if_fail (url != NULL, NULL);
if (g_str_has_prefix (url, "ghelp:") ||
g_str_has_prefix (url, "mailto:") ||
strstr (url, ":/")) {
- return NULL;
+ return g_strdup (url);
}
if (strstr (url, "@")) {
@@ -1354,12 +1360,9 @@ empathy_url_show (GtkWidget *parent,
g_return_if_fail (parent == NULL || GTK_IS_WIDGET (parent));
g_return_if_fail (url != NULL);
- real_url = fixup_url (url);
- if (real_url) {
- url = real_url;
- }
+ real_url = empathy_make_absolute_url (url);
- gtk_show_uri (parent ? gtk_widget_get_screen (parent) : NULL, url,
+ gtk_show_uri (parent ? gtk_widget_get_screen (parent) : NULL, real_url,
gtk_get_current_event_time (), &error);
if (error) {
@@ -1476,6 +1479,8 @@ empathy_send_file_with_file_chooser (EmpathyContact *contact)
gtk_dialog_set_default_response (GTK_DIALOG (widget),
GTK_RESPONSE_OK);
+ gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (widget), FALSE);
+
g_signal_connect (widget, "response",
G_CALLBACK (file_manager_send_file_response_cb),
contact);
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index 312835f0c..afb409af4 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -109,6 +109,8 @@ GtkWidget * empathy_link_button_new (const gchar *url,
void empathy_send_file_with_file_chooser (EmpathyContact *contact);
void empathy_receive_file_with_file_chooser (EmpathyFTHandler *handler);
+gchar * empathy_make_absolute_url (const gchar *url);
+
G_END_DECLS
#endif /* __EMPATHY_UI_UTILS_H__ */