ekiga r6694 - trunk/lib/engine/gui/gtk-frontend
- From: jpuydt svn gnome org
- To: svn-commits-list gnome org
- Subject: ekiga r6694 - trunk/lib/engine/gui/gtk-frontend
- Date: Sun, 24 Aug 2008 22:57:57 +0000 (UTC)
Author: jpuydt
Date: Sun Aug 24 22:57:57 2008
New Revision: 6694
URL: http://svn.gnome.org/viewvc/ekiga?rev=6694&view=rev
Log:
Implemented opening a link on click in the chat area, fixing bug #548751
Modified:
trunk/lib/engine/gui/gtk-frontend/Makefile.am
trunk/lib/engine/gui/gtk-frontend/chat-area.cpp
Modified: trunk/lib/engine/gui/gtk-frontend/Makefile.am
==============================================================================
--- trunk/lib/engine/gui/gtk-frontend/Makefile.am (original)
+++ trunk/lib/engine/gui/gtk-frontend/Makefile.am Sun Aug 24 22:57:57 2008
@@ -5,6 +5,7 @@
AM_CPPFLAGS = $(XML_CFLAGS) $(SIGC_CFLAGS) $(GTK_CFLAGS)
INCLUDES = \
+ -I$(top_srcdir)/lib/ \
-I$(top_srcdir)/lib/gui \
-I$(top_srcdir)/lib/gmconf \
-I$(top_srcdir)/lib/engine/framework \
Modified: trunk/lib/engine/gui/gtk-frontend/chat-area.cpp
==============================================================================
--- trunk/lib/engine/gui/gtk-frontend/chat-area.cpp (original)
+++ trunk/lib/engine/gui/gtk-frontend/chat-area.cpp Sun Aug 24 22:57:57 2008
@@ -43,7 +43,9 @@
#include "gm-text-anchored-tag.h"
#include "gm-text-smiley.h"
#include "gm-text-extlink.h"
+
#include "gm-smileys.h"
+#include "toolbox/toolbox.h"
#include <string.h>
#include <stdarg.h>
@@ -124,6 +126,12 @@
/* declaration of callbacks */
+static void on_extlink_tag_event (GtkTextTag* tag,
+ GObject* textview,
+ GdkEvent* event,
+ GtkTextIter* iter,
+ gpointer data);
+
static void on_smiley_activated (GtkMenuItem *item,
gpointer data);
@@ -237,6 +245,33 @@
/* implementation of callbacks */
static void
+on_extlink_tag_event (GtkTextTag* tag,
+ G_GNUC_UNUSED GObject* textview,
+ GdkEvent* event,
+ GtkTextIter* iter,
+ G_GNUC_UNUSED gpointer data)
+{
+ if (event->type == GDK_BUTTON_PRESS && event->button.button == 1) {
+
+ gchar* link = NULL;
+ GtkTextIter* start = gtk_text_iter_copy (iter);
+ GtkTextIter* end = gtk_text_iter_copy (iter);
+
+ gtk_text_iter_backward_to_tag_toggle (start, tag);
+ gtk_text_iter_forward_to_tag_toggle (end, tag);
+
+ link = gtk_text_buffer_get_slice (gtk_text_iter_get_buffer (iter),
+ start, end, FALSE);
+
+ gm_open_uri (link);
+
+ g_free (link);
+ gtk_text_iter_free (end);
+ gtk_text_iter_free (start);
+ }
+}
+
+static void
on_smiley_activated (GtkMenuItem *item,
gpointer data)
{
@@ -555,6 +590,8 @@
"foreground", "blue",
"underline", PANGO_UNDERLINE_SINGLE,
NULL);
+ g_signal_connect (G_OBJECT (tag), "event",
+ G_CALLBACK (on_extlink_tag_event), NULL);
helper = gm_text_extlink_new ("\\<(http[s]?|[s]?ftp)://[^[:blank:]]+\\>", tag);
gm_text_buffer_enhancer_add_helper (self->priv->enhancer, helper);
g_object_unref (helper);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]