From: Andrej Kacian Date: Fri, 8 Feb 2019 19:05:06 +0000 (+0100) Subject: Add image_cache_size pref to Litehtml X-Git-Tag: 3.17.4~112 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=98b4e701430e6767bae77a7d23f5b0903959aaf8 Add image_cache_size pref to Litehtml --- diff --git a/src/plugins/litehtml_viewer/lh_prefs.c b/src/plugins/litehtml_viewer/lh_prefs.c index fec2ff56f..7dcc7aa73 100644 --- a/src/plugins/litehtml_viewer/lh_prefs.c +++ b/src/plugins/litehtml_viewer/lh_prefs.c @@ -43,12 +43,15 @@ LHPrefs lh_prefs; struct _LHPrefsPage { PrefsPage page; GtkWidget *enable_remote_content; + GtkWidget *image_cache_size; }; typedef struct _LHPrefsPage LHPrefsPage; static PrefParam param[] = { { "enable_remote_content", "FALSE", &lh_prefs.enable_remote_content, P_BOOL, NULL, NULL, NULL }, + { "image_cache_size", "20", &lh_prefs.image_cache_size, P_INT, + NULL, NULL, NULL }, { NULL, NULL, NULL, 0, NULL, NULL, NULL } }; @@ -91,9 +94,12 @@ static void create_lh_prefs_page(PrefsPage *page, GtkWindow *window, LHPrefsPage *prefs_page = (LHPrefsPage *)page; GtkWidget *vbox; GtkWidget *vbox_remote; + GtkWidget *hbox; GtkWidget *frame; GtkWidget *label; GtkWidget *enable_remote_content; + GtkWidget *image_cache_size; + GtkObject *adj; vbox = gtk_vbox_new(FALSE, 3); gtk_container_set_border_width(GTK_CONTAINER(vbox), VBOX_BORDER); @@ -115,7 +121,25 @@ static void create_lh_prefs_page(PrefsPage *page, GtkWindow *window, gtk_box_pack_start(GTK_BOX(vbox_remote), enable_remote_content, FALSE, FALSE, 0); gtk_widget_show_all(vbox_remote); + /* Image cache size */ + hbox = gtk_hbox_new(FALSE, 8); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + + label = gtk_label_new(_("Size of image cache in megabytes")); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); + + adj = gtk_adjustment_new(0, 0, 99999, 1, 10, 0); + image_cache_size = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1, 0); + gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(image_cache_size), TRUE); + gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(image_cache_size), FALSE); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(image_cache_size), + lh_prefs.image_cache_size); + gtk_box_pack_start(GTK_BOX(hbox), image_cache_size, FALSE, FALSE, 0); + + gtk_widget_show_all(hbox); + prefs_page->enable_remote_content = enable_remote_content; + prefs_page->image_cache_size = image_cache_size; prefs_page->page.widget = vbox; } @@ -129,6 +153,8 @@ static void save_lh_prefs_page(PrefsPage *page) lh_prefs.enable_remote_content = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(prefs_page->enable_remote_content)); + lh_prefs.image_cache_size = gtk_spin_button_get_value_as_int( + GTK_SPIN_BUTTON(prefs_page->image_cache_size)); save_prefs(); } diff --git a/src/plugins/litehtml_viewer/lh_prefs.h b/src/plugins/litehtml_viewer/lh_prefs.h index 25dcbd245..d226fe6c2 100644 --- a/src/plugins/litehtml_viewer/lh_prefs.h +++ b/src/plugins/litehtml_viewer/lh_prefs.h @@ -29,6 +29,7 @@ typedef struct _LHPrefs LHPrefs; struct _LHPrefs { gboolean enable_remote_content; + gint image_cache_size; }; LHPrefs *lh_prefs_get(void); diff --git a/src/plugins/litehtml_viewer/lh_widget.cpp b/src/plugins/litehtml_viewer/lh_widget.cpp index 152053da7..3fcb359c5 100644 --- a/src/plugins/litehtml_viewer/lh_widget.cpp +++ b/src/plugins/litehtml_viewer/lh_widget.cpp @@ -217,6 +217,7 @@ statusbar_pop: void lh_widget::open_html(const gchar *contents) { + clear_images(lh_prefs_get()->image_cache_size * 1024 * 1000); lh_widget_statusbar_push("Loading HTML part ..."); m_html = litehtml::document::createFromString(contents, this, &m_context); m_rendered_width = 0;