aboutsummaryrefslogtreecommitdiff
path: root/svte.c
diff options
context:
space:
mode:
Diffstat (limited to 'svte.c')
-rw-r--r--svte.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/svte.c b/svte.c
index 76013fc..10bb28a 100644
--- a/svte.c
+++ b/svte.c
@@ -74,6 +74,8 @@ static void configure_window();
static void tab_focus(GtkNotebook *notebook, GtkNotebookPage *page,
guint page_num, gpointer user_data);
static void set_window_title(term *t);
+static void launch_url(char *url);
+
static inline term* get_current_term();
static inline term* get_nth_term(guint page);
@@ -109,6 +111,12 @@ static inline term* get_current_term(){
return t;
}
+
+static void launch_url(char *url) {
+ g_spawn_command_line_async(g_strconcat(DEFAULT_BROWSER_COMMAND, " ", url, NULL), NULL);
+}
+
+
/* key event handler */
gboolean event_key(GtkWidget *widget, GdkEventKey *event) {
guint(g) = event->keyval;
@@ -161,6 +169,21 @@ gboolean event_key(GtkWidget *widget, GdkEventKey *event) {
/* button event handler */
gboolean event_button(GtkWidget *widget, GdkEventButton *button_event, struct term *t) {
+
+ glong col = 0;
+ glong row = 0;
+ int ret = 0;
+ gchar *match;
+
+ if(button_event->button == 1) {
+ match = vte_terminal_match_check(VTE_TERMINAL(t->vte),
+ button_event->x / vte_terminal_get_char_width (VTE_TERMINAL (t->vte)),
+ button_event->y / vte_terminal_get_char_height (VTE_TERMINAL (t->vte)),
+ &ret);
+ launch_url(match);
+ return TRUE;
+
+ }
return FALSE;
}
@@ -394,7 +417,7 @@ static void configure_window() {
tab_new();
gtk_widget_show_all(svte.win);
-
+
/* add the callback signals */
g_signal_connect(G_OBJECT(svte.win), "destroy", G_CALLBACK(quit), NULL);
g_signal_connect(svte.win, "key-press-event", G_CALLBACK(event_key), NULL);