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);