diff --git a/src/ghtml-webkit.c b/src/ghtml-webkit.c
index bf11cf1..cd48cbe 100644
--- a/src/ghtml-webkit.c
+++ b/src/ghtml-webkit.c
@@ -916,6 +916,7 @@ static void _context_menu_document(GHtml * ghtml, GtkWidget * menu)
g_signal_connect_swapped(menuitem, "activate", G_CALLBACK(
surfer_go_forward), ghtml->surfer);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+ /* refresh */
menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_REFRESH, NULL);
g_signal_connect_swapped(menuitem, "activate", G_CALLBACK(
surfer_refresh), ghtml->surfer);
@@ -928,6 +929,8 @@ static void _context_menu_document(GHtml * ghtml, GtkWidget * menu)
_("_Save page as..."));
image = gtk_image_new_from_stock(GTK_STOCK_SAVE_AS, GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
+ g_signal_connect_swapped(menuitem, "activate", G_CALLBACK(
+ surfer_save_dialog), ghtml->surfer);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
/* separator */
menuitem = gtk_separator_menu_item_new();
diff --git a/src/surfer.c b/src/surfer.c
index 1814184..2423e05 100644
--- a/src/surfer.c
+++ b/src/surfer.c
@@ -1498,7 +1498,6 @@ void surfer_save(Surfer * surfer, char const * filename)
{
GtkWidget * view;
char const * source;
- GtkWidget * dialog;
size_t len;
FILE * fp;
char buf[256];
@@ -1509,17 +1508,8 @@ void surfer_save(Surfer * surfer, char const * filename)
return; /* XXX report error */
if(filename == NULL)
{
- dialog = gtk_file_chooser_dialog_new(_("Save file as..."),
- GTK_WINDOW(surfer->window),
- GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE,
- GTK_RESPONSE_ACCEPT, NULL);
- if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
- filename = gtk_file_chooser_get_filename(
- GTK_FILE_CHOOSER(dialog));
- gtk_widget_destroy(dialog);
- if(filename == NULL)
- return;
+ surfer_save_dialog(surfer);
+ return;
}
if(_surfer_filename_confirm(surfer, filename) != TRUE)
return;
@@ -1539,6 +1529,28 @@ void surfer_save(Surfer * surfer, char const * filename)
}
+/* surfer_save_dialog */
+void surfer_save_dialog(Surfer * surfer)
+{
+ GtkWidget * dialog;
+ gchar * filename = NULL;
+
+ dialog = gtk_file_chooser_dialog_new(_("Save file as..."),
+ GTK_WINDOW(surfer->window),
+ GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE,
+ GTK_RESPONSE_ACCEPT, NULL);
+ if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
+ filename = gtk_file_chooser_get_filename(
+ GTK_FILE_CHOOSER(dialog));
+ gtk_widget_destroy(dialog);
+ if(filename == NULL)
+ return;
+ surfer_save(surfer, filename);
+ g_free(filename);
+}
+
+
/* surfer_select_all */
void surfer_select_all(Surfer * surfer)
{
diff --git a/src/surfer.h b/src/surfer.h
index 0df1078..fcdb8f5 100644
--- a/src/surfer.h
+++ b/src/surfer.h
@@ -102,6 +102,7 @@ void surfer_close_tab(Surfer * surfer, GtkWidget * widget);
void surfer_print(Surfer * surfer);
void surfer_save(Surfer * surfer, char const * filename);
+void surfer_save_dialog(Surfer * surfer);
void surfer_find(Surfer * surfer, char const * text);