aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--libempathy-gtk/empathy-chat-view.c29
-rw-r--r--libempathy-gtk/empathy-ui-utils.c12
-rw-r--r--libempathy-gtk/empathy-ui-utils.h3
-rw-r--r--python/pyempathygtk/pyempathygtk.defs1
-rw-r--r--src/empathy-about-dialog.c2
-rw-r--r--src/empathy-accounts-dialog.c2
-rw-r--r--src/empathy-chat-window.c2
-rw-r--r--src/empathy-ft-manager.c2
-rw-r--r--src/empathy-main-window.c2
10 files changed, 31 insertions, 26 deletions
diff --git a/configure.ac b/configure.ac
index 041e5a48c..a56937ca4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ AC_SUBST(LIBEMPATHY_GTK_REVISION)
# Minimal version required
GLIB_REQUIRED=2.16.0
-GTK_REQUIRED=2.12.0
+GTK_REQUIRED=2.14.0
GCONF_REQUIRED=1.2.0
LIBGLADE_REQUIRED=2.0.0
LIBPANELAPPLET_REQUIRED=2.10.0
diff --git a/libempathy-gtk/empathy-chat-view.c b/libempathy-gtk/empathy-chat-view.c
index 2131cecb4..367b6308d 100644
--- a/libempathy-gtk/empathy-chat-view.c
+++ b/libempathy-gtk/empathy-chat-view.c
@@ -113,7 +113,7 @@ static gboolean chat_view_url_event_cb (GtkTextTag *
GObject *object,
GdkEvent *event,
GtkTextIter *iter,
- GtkTextBuffer *buffer);
+ EmpathyChatView *view);
static void chat_view_open_address_cb (GtkMenuItem *menuitem,
const gchar *url);
static void chat_view_copy_address_cb (GtkMenuItem *menuitem,
@@ -289,7 +289,7 @@ chat_view_setup_tags (EmpathyChatView *view)
g_signal_connect (tag,
"event",
G_CALLBACK (chat_view_url_event_cb),
- priv->buffer);
+ view);
g_signal_connect (view,
"motion-notify-event",
@@ -497,17 +497,20 @@ chat_view_event_cb (EmpathyChatView *view,
}
static gboolean
-chat_view_url_event_cb (GtkTextTag *tag,
- GObject *object,
- GdkEvent *event,
- GtkTextIter *iter,
- GtkTextBuffer *buffer)
+chat_view_url_event_cb (GtkTextTag *tag,
+ GObject *object,
+ GdkEvent *event,
+ GtkTextIter *iter,
+ EmpathyChatView *view)
{
- GtkTextIter start, end;
- gchar *str;
+ GtkTextIter start, end;
+ gchar *str;
+ EmpathyChatViewPriv *priv;
+
+ priv = GET_PRIV (view);
/* If the link is being selected, don't do anything. */
- gtk_text_buffer_get_selection_bounds (buffer, &start, &end);
+ gtk_text_buffer_get_selection_bounds (priv->buffer, &start, &end);
if (gtk_text_iter_get_offset (&start) != gtk_text_iter_get_offset (&end)) {
return FALSE;
}
@@ -517,12 +520,12 @@ chat_view_url_event_cb (GtkTextTag *tag,
if (gtk_text_iter_backward_to_tag_toggle (&start, tag) &&
gtk_text_iter_forward_to_tag_toggle (&end, tag)) {
- str = gtk_text_buffer_get_text (buffer,
+ str = gtk_text_buffer_get_text (priv->buffer,
&start,
&end,
FALSE);
- empathy_url_show (str);
+ empathy_url_show (GTK_WIDGET (view), str);
g_free (str);
}
}
@@ -533,7 +536,7 @@ chat_view_url_event_cb (GtkTextTag *tag,
static void
chat_view_open_address_cb (GtkMenuItem *menuitem, const gchar *url)
{
- empathy_url_show (url);
+ empathy_url_show (GTK_WIDGET (menuitem), url);
}
static void
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index 91783d7ce..cd5cf0766 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -1332,7 +1332,8 @@ fixup_url (const gchar *url)
}
void
-empathy_url_show (const char *url)
+empathy_url_show (GtkWidget *parent,
+ const char *url)
{
gchar *real_url;
GError *error = NULL;
@@ -1342,10 +1343,9 @@ empathy_url_show (const char *url)
url = real_url;
}
- /* FIXME: this does not work for multihead, we should use
- * GdkAppLaunchContext or gtk_show_url, see bug #514396.
- */
- g_app_info_launch_default_for_uri (url, NULL, &error);
+ gtk_show_uri (gtk_widget_get_screen (parent), url,
+ gtk_get_current_event_time (), &error);
+
if (error) {
GtkWidget *dialog;
@@ -1371,7 +1371,7 @@ link_button_hook (GtkLinkButton *button,
const gchar *link,
gpointer user_data)
{
- empathy_url_show (link);
+ empathy_url_show (GTK_WIDGET (button), link);
}
GtkWidget *
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index 932615027..4a6efc6d0 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -102,7 +102,8 @@ void empathy_window_present (GtkWindow *windo
void empathy_window_iconify (GtkWindow *window,
GtkStatusIcon *status_icon);
GtkWindow * empathy_get_toplevel_window (GtkWidget *widget);
-void empathy_url_show (const char *url);
+void empathy_url_show (GtkWidget *parent,
+ const char *url);
void empathy_toggle_button_set_state_quietly (GtkWidget *widget,
GCallback callback,
gpointer user_data,
diff --git a/python/pyempathygtk/pyempathygtk.defs b/python/pyempathygtk/pyempathygtk.defs
index e4044668f..69a17d37a 100644
--- a/python/pyempathygtk/pyempathygtk.defs
+++ b/python/pyempathygtk/pyempathygtk.defs
@@ -1812,6 +1812,7 @@
(c-name "empathy_url_show")
(return-type "none")
(parameters
+ '("GtkWidget*" "parent")
'("const-char*" "url")
)
)
diff --git a/src/empathy-about-dialog.c b/src/empathy-about-dialog.c
index 14d292585..4765e6b32 100644
--- a/src/empathy-about-dialog.c
+++ b/src/empathy-about-dialog.c
@@ -99,7 +99,7 @@ about_dialog_activate_link_cb (GtkAboutDialog *about,
const gchar *link,
gpointer data)
{
- empathy_url_show (link);
+ empathy_url_show (GTK_WIDGET (about), link);
}
void
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index 0cca7035f..72967cbda 100644
--- a/src/empathy-accounts-dialog.c
+++ b/src/empathy-accounts-dialog.c
@@ -951,7 +951,7 @@ static void
accounts_dialog_button_help_clicked_cb (GtkWidget *button,
EmpathyAccountsDialog *dialog)
{
- empathy_url_show ("ghelp:empathy?empathy-create-account");
+ empathy_url_show (button, "ghelp:empathy?empathy-create-account");
}
static void
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index 255c5d679..5a8cb1048 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -775,7 +775,7 @@ static void
chat_window_help_contents_cb (GtkWidget *menuitem,
EmpathyChatWindow *window)
{
- empathy_url_show ("ghelp:empathy?chat");
+ empathy_url_show (menuitem, "ghelp:empathy?chat");
}
static void
diff --git a/src/empathy-ft-manager.c b/src/empathy-ft-manager.c
index 78308b9d0..a506addec 100644
--- a/src/empathy-ft-manager.c
+++ b/src/empathy-ft-manager.c
@@ -556,7 +556,7 @@ ft_manager_open (EmpathyFTManager *ft_manager)
uri = g_object_get_data (G_OBJECT (tp_file), "uri");
DEBUG ("Opening URI: %s", uri);
- empathy_url_show (uri);
+ empathy_url_show (GTK_WIDGET (ft_manager->priv->window), uri);
g_object_unref (tp_file);
}
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index c5437385f..49bfe3d0a 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -924,7 +924,7 @@ static void
main_window_help_contents_cb (GtkWidget *widget,
EmpathyMainWindow *window)
{
- empathy_url_show ("ghelp:empathy");
+ empathy_url_show (widget, "ghelp:empathy");
}
static gboolean