diff --git a/src/ghtml-gtkhtml.c b/src/ghtml-gtkhtml.c
index 73a8474..18ad787 100644
--- a/src/ghtml-gtkhtml.c
+++ b/src/ghtml-gtkhtml.c
@@ -38,6 +38,7 @@
#include
#include
#include "ghtml.h"
+#include "callbacks.h"
#include "../config.h"
#define max(a, b) ((a) > (b) ? (a) : (b))
@@ -104,6 +105,8 @@ static GHtmlConn * _ghtml_stream_load(GHtml * ghtml, HtmlStream * stream,
gchar const * url, gchar const * post);
/* callbacks */
+static gboolean _on_button_press_event(GtkWidget* widget,
+ GdkEventButton * event, gpointer data);
static void _on_link_clicked(HtmlDocument * document, const gchar * url);
static void _on_request_url(HtmlDocument * document, const gchar * url,
HtmlStream * stream);
@@ -130,6 +133,8 @@ GtkWidget * ghtml_new(Surfer * surfer)
ghtml->conns_cnt = 0;
ghtml->html_view = html_view_new();
g_object_set_data(G_OBJECT(ghtml->html_view), "ghtml", ghtml);
+ g_signal_connect(G_OBJECT(ghtml->html_view), "button-press-event",
+ G_CALLBACK(_on_button_press_event), ghtml);
g_signal_connect(G_OBJECT(ghtml->html_view), "on-url", G_CALLBACK(
_on_url), NULL);
ghtml->html_document = html_document_new();
@@ -927,6 +932,42 @@ static void _http_timeout(GHtmlConn * conn)
/* callbacks */
+static gboolean _on_button_press_event(GtkWidget* widget,
+ GdkEventButton * event, gpointer data)
+{
+ GHtml * ghtml = data;
+ Surfer * surfer;
+ GtkWidget * menu;
+ GtkWidget * menuitem;
+
+ if(event->type == GDK_BUTTON_PRESS
+ && event->button == 3)
+ {
+ surfer = ghtml->surfer;
+ menu = gtk_menu_new();
+ menuitem = gtk_image_menu_item_new_from_stock(
+ GTK_STOCK_GO_BACK, NULL);
+ g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(
+ on_back), surfer);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+ menuitem = gtk_image_menu_item_new_from_stock(
+ GTK_STOCK_GO_FORWARD, NULL);
+ g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(
+ on_forward), surfer);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+ menuitem = gtk_image_menu_item_new_from_stock(
+ GTK_STOCK_REFRESH, NULL);
+ g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(
+ on_refresh), surfer);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+ gtk_widget_show_all(menu);
+ gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
+ event->button, event->time);
+ }
+ return FALSE;
+}
+
+
static void _on_link_clicked(HtmlDocument * document, const gchar * url)
{
GHtml * ghtml;