summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/cookie_manager.c10
-rw-r--r--desktop/global_history.c10
-rw-r--r--desktop/hotlist.c10
-rw-r--r--desktop/sslcert_viewer.c10
-rw-r--r--desktop/tree.c10
-rw-r--r--desktop/treeview.c42
-rw-r--r--desktop/treeview.h3
-rw-r--r--frontends/atari/gui.c7
-rw-r--r--frontends/gtk/cookies.c6
-rw-r--r--frontends/gtk/global_history.c6
-rw-r--r--frontends/gtk/hotlist.c6
-rw-r--r--frontends/gtk/ssl_cert.c6
-rw-r--r--frontends/riscos/gui.c6
13 files changed, 72 insertions, 60 deletions
diff --git a/desktop/cookie_manager.c b/desktop/cookie_manager.c
index 082a14a75..b0c48a7fc 100644
--- a/desktop/cookie_manager.c
+++ b/desktop/cookie_manager.c
@@ -756,6 +756,11 @@ nserror cookie_manager_init(struct core_window_callback_table *cw_t,
{
nserror err;
+ err = treeview_init();
+ if (err != NSERROR_OK) {
+ return err;
+ }
+
LOG("Generating cookie manager data");
/* Init. cookie manager treeview entry fields */
@@ -822,6 +827,11 @@ nserror cookie_manager_fini(void)
if (cm_ctx.values[i].value != NULL)
free((void *) cm_ctx.values[i].value);
+ err = treeview_fini();
+ if (err != NSERROR_OK) {
+ return err;
+ }
+
LOG("Finalised cookie manager");
return err;
diff --git a/desktop/global_history.c b/desktop/global_history.c
index d60874c67..b6f488228 100644
--- a/desktop/global_history.c
+++ b/desktop/global_history.c
@@ -724,6 +724,11 @@ nserror global_history_init(struct core_window_callback_table *cw_t,
{
nserror err;
+ err = treeview_init();
+ if (err != NSERROR_OK) {
+ return err;
+ }
+
LOG("Loading global history");
/* Init. global history treeview time */
@@ -804,6 +809,11 @@ nserror global_history_fini(void)
if (gh_ctx.fields[i].field != NULL)
lwc_string_unref(gh_ctx.fields[i].field);
+ err = treeview_fini();
+ if (err != NSERROR_OK) {
+ return err;
+ }
+
LOG("Finalised global history");
return err;
diff --git a/desktop/hotlist.c b/desktop/hotlist.c
index cce69be8e..e344b3b57 100644
--- a/desktop/hotlist.c
+++ b/desktop/hotlist.c
@@ -1232,6 +1232,11 @@ nserror hotlist_init(struct core_window_callback_table *cw_t,
{
nserror err;
+ err = treeview_init();
+ if (err != NSERROR_OK) {
+ return err;
+ }
+
LOG("Loading hotlist");
hl_ctx.tree = NULL;
@@ -1298,6 +1303,11 @@ nserror hotlist_fini(const char *path)
if (hl_ctx.fields[i].field != NULL)
lwc_string_unref(hl_ctx.fields[i].field);
+ err = treeview_fini();
+ if (err != NSERROR_OK) {
+ return err;
+ }
+
LOG("Finalised hotlist");
return err;
diff --git a/desktop/sslcert_viewer.c b/desktop/sslcert_viewer.c
index 93d6919e6..09a281c1c 100644
--- a/desktop/sslcert_viewer.c
+++ b/desktop/sslcert_viewer.c
@@ -353,6 +353,11 @@ nserror sslcert_viewer_init(struct core_window_callback_table *cw_t,
assert(ssl_d != NULL);
+ err = treeview_init();
+ if (err != NSERROR_OK) {
+ return err;
+ }
+
LOG("Building certificate viewer");
/* Init. certificate chain treeview entry fields */
@@ -427,6 +432,11 @@ nserror sslcert_viewer_fini(struct sslcert_session_data *ssl_d)
/* Destroy the sslcert_session_data */
sslcert_cleanup_session(ssl_d);
+ err = treeview_fini();
+ if (err != NSERROR_OK) {
+ return err;
+ }
+
LOG("Finalised ssl certificate viewer");
return err;
diff --git a/desktop/tree.c b/desktop/tree.c
index bfe8e9874..a5c97c33c 100644
--- a/desktop/tree.c
+++ b/desktop/tree.c
@@ -55,7 +55,6 @@ struct tree {
struct sslcert_session_data *ssl_current_session = NULL;
const char *tree_hotlist_path = NULL;
-int treeview_inits;
static void treeview_test_redraw_request(struct core_window *cw,
const struct rect *r)
@@ -128,11 +127,6 @@ static bool treeview_test_init(struct tree *tree)
{
nserror err;
- treeview_inits++;
-
- if (treeview_inits == 1)
- treeview_init(0);
-
switch (tree->flags) {
case TREE_COOKIES:
assert(ssl_current_session == NULL &&
@@ -195,10 +189,6 @@ static bool treeview_test_fini(struct tree *tree)
break;
}
- if (treeview_inits == 1)
- treeview_fini();
- treeview_inits--;
-
return true;
}
diff --git a/desktop/treeview.c b/desktop/treeview.c
index f2af5e8a1..5e4ceed12 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -24,6 +24,7 @@
#include "utils/log.h"
#include "utils/nsurl.h"
+#include "utils/nsoption.h"
#include "netsurf/bitmap.h"
#include "netsurf/content.h"
#include "netsurf/plotters.h"
@@ -44,7 +45,7 @@
#define REDRAW_MAX 8000
struct treeview_globals {
- bool initialised;
+ unsigned initialised;
int line_height;
int furniture_width;
int step_width;
@@ -3588,7 +3589,7 @@ static void treeview_init_plot_styles(int font_pt_size)
/* Text colour */
plot_style_even.text.family = PLOT_FONT_FAMILY_SANS_SERIF;
- plot_style_even.text.size = font_pt_size * FONT_SIZE_SCALE;
+ plot_style_even.text.size = font_pt_size;
plot_style_even.text.weight = 400;
plot_style_even.text.flags = FONTF_NONE;
plot_style_even.text.foreground = ns_system_colour_char("WindowText");
@@ -3948,23 +3949,33 @@ static nserror treeview_init_furniture(void)
/* Exported interface, documented in treeview.h */
-nserror treeview_init(int font_pt_size)
+nserror treeview_init(void)
{
- int font_px_size;
+ long long font_px_size;
+ long long font_pt_size;
nserror err;
- if (tree_g.initialised == true)
+ if (tree_g.initialised > 0) {
+ tree_g.initialised++;
return NSERROR_OK;
+ }
LOG("Initialising treeview module");
- if (font_pt_size <= 0)
- font_pt_size = 11;
+ /* TODO: Should we add an extra `treeview_font_size` option for
+ * treeviews instead of reusing the html rendering default
+ * font size?
+ */
+ font_pt_size = nsoption_int(font_size);
+ if (font_pt_size <= 0) {
+ font_pt_size = 11 * 10;
+ }
- font_px_size = (font_pt_size * FIXTOINT(nscss_screen_dpi) + 36) / 72;
+ font_px_size = (font_pt_size * FIXTOINT(nscss_screen_dpi) /
+ 10 + 36) / 72;
tree_g.line_height = (font_px_size * 8 + 3) / 6;
- treeview_init_plot_styles(font_pt_size);
+ treeview_init_plot_styles(font_pt_size * FONT_SIZE_SCALE / 10);
treeview_init_resources();
err = treeview_init_furniture();
if (err != NSERROR_OK)
@@ -3976,7 +3987,7 @@ nserror treeview_init(int font_pt_size)
tree_g.icon_step = 23;
tree_g.move_offset = 18;
- tree_g.initialised = true;
+ tree_g.initialised++;
LOG("Initialised treeview module");
@@ -3989,6 +4000,15 @@ nserror treeview_fini(void)
{
int i;
+ if (tree_g.initialised > 1) {
+ tree_g.initialised--;
+ return NSERROR_OK;
+
+ } else if (tree_g.initialised == 0) {
+ LOG("Warning: tried to finalise uninitialised treeview module");
+ return NSERROR_OK;
+ }
+
LOG("Finalising treeview module");
for (i = 0; i < TREE_RES_LAST; i++) {
@@ -4004,7 +4024,7 @@ nserror treeview_fini(void)
guit->bitmap->destroy(plot_style_even.furn[TREE_FURN_CONTRACT].bmp);
guit->bitmap->destroy(plot_style_even.furn[TREE_FURN_CONTRACT].sel);
- tree_g.initialised = false;
+ tree_g.initialised--;
LOG("Finalised treeview module");
diff --git a/desktop/treeview.h b/desktop/treeview.h
index 25349ad36..abe0e568d 100644
--- a/desktop/treeview.h
+++ b/desktop/treeview.h
@@ -112,10 +112,9 @@ struct treeview_callback_table {
/**
* Prepare treeview module for treeview usage
*
- * \param font_pt_size Treeview text size in pt. Set to <= 0 for default.
* \return NSERROR_OK on success, appropriate error otherwise
*/
-nserror treeview_init(int font_pt_size);
+nserror treeview_init(void);
/**
* Finalise the treeview module (all treeviews must have been destroyed first)
diff --git a/frontends/atari/gui.c b/frontends/atari/gui.c
index eb15777b4..1cf51d31d 100644
--- a/frontends/atari/gui.c
+++ b/frontends/atari/gui.c
@@ -40,7 +40,6 @@
#include "netsurf/cookie_db.h"
#include "netsurf/url_db.h"
#include "content/backing_store.h"
-#include "desktop/treeview.h"
#include "atari/gemtk/gemtk.h"
#include "atari/gui.h"
@@ -828,9 +827,6 @@ static void gui_quit(void)
atari_hotlist_destroy();
atari_cookie_manager_destroy();
- /* shutdown netsurf treeview framework: */
- treeview_fini();
-
/* shutdown the toolbar framework: */
toolbar_exit();
@@ -1037,9 +1033,6 @@ static void gui_init(int argc, char** argv)
}
gemtk_wm_init();
- /* Initialize the netsurf treeview framework with default font size: */
- treeview_init(0);
-
/* Initialize the specific treeview windows: */
atari_global_history_init();
atari_hotlist_init();
diff --git a/frontends/gtk/cookies.c b/frontends/gtk/cookies.c
index 3c5d93a87..d0fae974f 100644
--- a/frontends/gtk/cookies.c
+++ b/frontends/gtk/cookies.c
@@ -29,7 +29,6 @@
#include "netsurf/keypress.h"
#include "netsurf/plotters.h"
#include "desktop/cookie_manager.h"
-#include "desktop/treeview.h"
#include "gtk/cookies.h"
#include "gtk/plotters.h"
@@ -247,11 +246,6 @@ static nserror nsgtk_cookies_init(void)
return NSERROR_OK;
}
- res = treeview_init(0);
- if (res != NSERROR_OK) {
- return res;
- }
-
ncwin = malloc(sizeof(struct nsgtk_cookie_window));
if (ncwin == NULL) {
return NSERROR_NOMEM;
diff --git a/frontends/gtk/global_history.c b/frontends/gtk/global_history.c
index b41d06ef6..7d647057b 100644
--- a/frontends/gtk/global_history.c
+++ b/frontends/gtk/global_history.c
@@ -30,7 +30,6 @@
#include "netsurf/keypress.h"
#include "netsurf/plotters.h"
#include "desktop/global_history.h"
-#include "desktop/treeview.h"
#include "gtk/compat.h"
#include "gtk/plotters.h"
@@ -300,11 +299,6 @@ static nserror nsgtk_global_history_init(void)
return NSERROR_OK;
}
- res = treeview_init(0);
- if (res != NSERROR_OK) {
- return res;
- }
-
ncwin = malloc(sizeof(struct nsgtk_global_history_window));
if (ncwin == NULL) {
return NSERROR_NOMEM;
diff --git a/frontends/gtk/hotlist.c b/frontends/gtk/hotlist.c
index 2d0641ff2..c47d1da3f 100644
--- a/frontends/gtk/hotlist.c
+++ b/frontends/gtk/hotlist.c
@@ -31,7 +31,6 @@
#include "netsurf/keypress.h"
#include "netsurf/plotters.h"
#include "desktop/hotlist.h"
-#include "desktop/treeview.h"
#include "gtk/compat.h"
#include "gtk/plotters.h"
@@ -318,11 +317,6 @@ static nserror nsgtk_hotlist_init(void)
return NSERROR_OK;
}
- res = treeview_init(0);
- if (res != NSERROR_OK) {
- return res;
- }
-
ncwin = malloc(sizeof(struct nsgtk_hotlist_window));
if (ncwin == NULL) {
return NSERROR_NOMEM;
diff --git a/frontends/gtk/ssl_cert.c b/frontends/gtk/ssl_cert.c
index 1cf0bebac..8270b1563 100644
--- a/frontends/gtk/ssl_cert.c
+++ b/frontends/gtk/ssl_cert.c
@@ -29,7 +29,6 @@
#include "netsurf/keypress.h"
#include "netsurf/plotters.h"
#include "desktop/sslcert_viewer.h"
-#include "desktop/treeview.h"
#include "gtk/plotters.h"
#include "gtk/scaffolding.h"
@@ -177,11 +176,6 @@ nserror gtk_cert_verify(struct nsurl *url,
struct nsgtk_crtvrfy_window *ncwin;
nserror res;
- res = treeview_init(0);
- if (res != NSERROR_OK) {
- return res;
- }
-
ncwin = malloc(sizeof(struct nsgtk_crtvrfy_window));
if (ncwin == NULL) {
return NSERROR_NOMEM;
diff --git a/frontends/riscos/gui.c b/frontends/riscos/gui.c
index 7c5216462..9d5f6bb40 100644
--- a/frontends/riscos/gui.c
+++ b/frontends/riscos/gui.c
@@ -55,7 +55,6 @@
#include "netsurf/cookie_db.h"
#include "netsurf/url_db.h"
#include "desktop/save_complete.h"
-#include "desktop/treeview.h"
#include "content/backing_store.h"
#include "riscos/gui.h"
@@ -1227,11 +1226,6 @@ static nserror gui_init(int argc, char** argv)
die(error->errmess);
}
- ret = treeview_init(12);
- if (ret != NSERROR_OK) {
- die("Failed to initialise treeview");
- }
-
/* Initialise themes before dialogs */
ro_gui_theme_initialise();