From c769c792fa68ebe32329d3b82d5bb819aade7ef5 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Mon, 20 May 2013 06:26:51 +0200 Subject: [PATCH] Began to implement callbacks in the context menu --- src/callbacks.c | 13 +++++++++++-- src/callbacks.h | 3 ++- src/ghtml-webkit.c | 19 +++++++++++++++---- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/callbacks.c b/src/callbacks.c index 4f31cc7..0092099 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -1,5 +1,5 @@ /* $Id$ */ -/* Copyright (c) 2006-2012 Pierre Pronchery */ +/* Copyright (c) 2006-2013 Pierre Pronchery */ /* This file is part of DeforaOS Desktop Surfer */ /* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -250,7 +250,7 @@ void on_view_page_source(gpointer data) { Surfer * surfer = data; - surfer_view_source(surfer); + on_view_source(surfer); } @@ -565,6 +565,15 @@ void on_stop(gpointer data) } +/* on_view_source */ +void on_view_source(gpointer data) +{ + Surfer * surfer = data; + + surfer_view_source(surfer); +} + + /* on_zoom_changed */ void on_zoom_changed(gpointer data, GtkWidget * widget) { diff --git a/src/callbacks.h b/src/callbacks.h index a358c51..8de3aaf 100644 --- a/src/callbacks.h +++ b/src/callbacks.h @@ -1,5 +1,5 @@ /* $Id$ */ -/* Copyright (c) 2012 Pierre Pronchery */ +/* Copyright (c) 2006-2013 Pierre Pronchery */ /* This file is part of DeforaOS Desktop Surfer */ /* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -78,6 +78,7 @@ void on_preferences(gpointer data); void on_refresh(gpointer data); void on_security(gpointer data); void on_stop(gpointer data); +void on_view_source(gpointer data); void on_zoom_changed(gpointer data, GtkWidget * widget); void on_zoom_in(gpointer data); void on_zoom_out(gpointer data); diff --git a/src/ghtml-webkit.c b/src/ghtml-webkit.c index 5943e7a..190c990 100644 --- a/src/ghtml-webkit.c +++ b/src/ghtml-webkit.c @@ -23,6 +23,7 @@ #include #include #include +#include "callbacks.h" #include "ghtml.h" #include "common/url.c" #include "../config.h" @@ -845,11 +846,13 @@ static void _context_menu_separator(GtkWidget * menu, gboolean * separator); static gboolean _on_context_menu(WebKitWebView * view, GtkWidget * menu, WebKitHitTestResult * result, gboolean keyboard, gpointer data) { - GHtml * ghtml = data; + GtkWidget * widget = data; + GHtml * ghtml; WebKitHitTestResultContext context; gboolean separator = FALSE; - /* FIXME implement the callbacks */ + /* FIXME implement every callback */ + ghtml = g_object_get_data(G_OBJECT(widget), "ghtml"); menu = gtk_menu_new(); g_object_get(result, "context", &context, NULL); if(context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE) @@ -891,14 +894,20 @@ static void _context_menu_document(GHtml * ghtml, GtkWidget * menu) /* back */ menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_BACK, NULL); - if(!ghtml_can_go_back(ghtml)) + if(!ghtml_can_go_back(ghtml->widget)) gtk_widget_set_sensitive(menuitem, FALSE); + else + g_signal_connect_swapped(menuitem, "activate", G_CALLBACK( + on_back), ghtml->surfer); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); /* forward */ menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_FORWARD, NULL); - if(!ghtml_can_go_forward(ghtml)) + if(!ghtml_can_go_forward(ghtml->widget)) gtk_widget_set_sensitive(menuitem, FALSE); + else + g_signal_connect_swapped(menuitem, "activate", G_CALLBACK( + on_forward), ghtml->surfer); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_REFRESH, NULL); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); @@ -930,6 +939,8 @@ static void _context_menu_document(GHtml * ghtml, GtkWidget * menu) menuitem = gtk_image_menu_item_new_with_mnemonic(_("View so_urce")); image = gtk_image_new_from_icon_name("surfer-view-html-source", GTK_ICON_SIZE_MENU); + g_signal_connect_swapped(menuitem, "activate", G_CALLBACK( + on_view_source), ghtml->surfer); gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); }