Gitweb links:
...log
http://git.netsurf-browser.org/netsurf.git/shortlog/9774499404e1f5fb37af37c9e939718ccd70ca56
...commit
http://git.netsurf-browser.org/netsurf.git/commit/9774499404e1f5fb37af37c9e939718ccd70ca56
...tree
http://git.netsurf-browser.org/netsurf.git/tree/9774499404e1f5fb37af37c9e939718ccd70ca56
The branch, vince/gtk-tab-restyle has been updated
via 9774499404e1f5fb37af37c9e939718ccd70ca56 (commit)
from 0d62622b1af882ef9585923512e24fc51e40b91a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/netsurf.git/commit/?id=9774499404e1f5fb37af37c9e939718ccd70ca56
commit 9774499404e1f5fb37af37c9e939718ccd70ca56
Author: Vincent Sanders <[email protected]>
Commit: Vincent Sanders <[email protected]>
toolbar customisation can now apply chnages
diff --git a/frontends/gtk/toolbar.c b/frontends/gtk/toolbar.c
index c3a95b9..9c51b5b 100644
--- a/frontends/gtk/toolbar.c
+++ b/frontends/gtk/toolbar.c
@@ -1095,72 +1095,10 @@ static void nsgtk_toolbar_cast(struct nsgtk_scaffolding
*g)
-/**
- * save toolbar settings to file
- */
-static nserror nsgtk_toolbar_customisation_save(struct nsgtk_scaffolding *g)
-{
- char *choices = NULL;
- char *order;
- int order_len = PLACEHOLDER_BUTTON * 12; /* length of order buffer */
- int tbidx;
- char *cur;
- int plen;
- order = malloc(order_len);
-
- if (order == NULL) {
- return NSERROR_NOMEM;
- }
- cur = order;
-
- for (tbidx = BACK_BUTTON; tbidx < PLACEHOLDER_BUTTON; tbidx++) {
- plen = snprintf(cur,
- order_len,
- "%d;%d|",
- tbidx,
- nsgtk_scaffolding_button(g, tbidx)->location);
- if (plen == order_len) {
- /* ran out of space, bail early */
- NSLOG(netsurf, INFO,
- "toolbar ordering exceeded available space");
- break;
- }
- cur += plen;
- order_len -= plen;
- }
-
- nsoption_set_charp(toolbar_order, order);
-
- /* ensure choices are saved */
- netsurf_mkpath(&choices, NULL, 2, nsgtk_config_home, "Choices");
- if (choices != NULL) {
- nsoption_write(choices, NULL, NULL);
- free(choices);
- }
-
- return NSERROR_OK;
-}
/**
- * when 'save settings' button is clicked
- */
-static gboolean nsgtk_toolbar_persist(GtkWidget *widget, gpointer data)
-{
- struct nsgtk_scaffolding *g = (struct nsgtk_scaffolding *)data;
-
- edit_mode = false;
- /* save state to file, update toolbars for all windows */
- nsgtk_toolbar_customisation_save(g);
- nsgtk_toolbar_cast(g);
- nsgtk_toolbar_set_physical(g);
- nsgtk_toolbar_close(g);
- gtk_widget_destroy(window->window);
- return TRUE;
-}
-
-/**
* when 'reload defaults' button is clicked
*/
static gboolean nsgtk_toolbar_reset(GtkWidget *widget, gpointer data)
@@ -1401,6 +1339,77 @@ void nsgtk_toolbar_customisation_init(struct
nsgtk_scaffolding *g)
}
#endif
+
+/**
+ * save toolbar settings to file
+ */
+static nserror
+nsgtk_toolbar_customisation_save(struct nsgtk_toolbar_customisation *tbc)
+{
+ char *choices = NULL;
+ char *order;
+ int order_len;
+ int tbidx;
+ char *cur;
+ int plen;
+
+ order_len = PLACEHOLDER_BUTTON * 12; /* length of order buffer */
+ order = malloc(order_len);
+
+ if (order == NULL) {
+ return NSERROR_NOMEM;
+ }
+ cur = order;
+
+ for (tbidx = BACK_BUTTON; tbidx < PLACEHOLDER_BUTTON; tbidx++) {
+ plen = snprintf(cur,
+ order_len,
+ "%d;%d|",
+ tbidx,
+ tbc->toolbar.buttons[tbidx]->location);
+ if (plen == order_len) {
+ /* ran out of space, bail early */
+ NSLOG(netsurf, INFO,
+ "toolbar ordering exceeded available space");
+ break;
+ }
+ cur += plen;
+ order_len -= plen;
+ }
+
+ nsoption_set_charp(toolbar_order, order);
+
+ /* ensure choices are saved */
+ netsurf_mkpath(&choices, NULL, 2, nsgtk_config_home, "Choices");
+ if (choices != NULL) {
+ nsoption_write(choices, NULL, NULL);
+ free(choices);
+ }
+
+ return NSERROR_OK;
+}
+
+
+/**
+ * customisation apply handler for clicked signal
+ *
+ * when 'save settings' button is clicked
+ */
+static gboolean
+customisation_apply_clicked_cb(GtkWidget *widget, gpointer data)
+{
+ struct nsgtk_toolbar_customisation *tbc;
+ tbc = (struct nsgtk_toolbar_customisation *)data;
+
+ /* save state to file, update toolbars for all windows */
+ nsgtk_toolbar_customisation_save(tbc);
+ nsgtk_window_toolbar_update();
+ gtk_widget_destroy(tbc->container);
+
+ return TRUE;
+}
+
+
/**
* find the toolbar item with a given location.
*
@@ -1654,7 +1663,7 @@ static void
customisation_toolbar_drag_leave_cb(GtkWidget *widget,
GdkDragContext *gdc,
guint time,
- gpointer data)
+ gpointer data)
{
gtk_toolbar_set_drop_highlight_item(GTK_TOOLBAR(widget), NULL, 0);
}
@@ -2257,7 +2266,7 @@ static gboolean cutomize_button_clicked_cb(GtkWidget
*widget, gpointer data)
}
/* ensure icon sizes and text labels on toolbar are set */
- res = nsgtk_toolbar_update(&tbc->toolbar);
+ res = nsgtk_toolbar_restyle(&tbc->toolbar);
if (res != NSERROR_OK) {
goto cutomize_button_clicked_cb_error;
}
@@ -2309,12 +2318,12 @@ static gboolean cutomize_button_clicked_cb(GtkWidget
*widget, gpointer data)
G_CALLBACK(gtk_widget_destroy),
tbc->container);
-#if 0
g_signal_connect(GTK_WIDGET(gtk_builder_get_object(builder, "apply")),
"clicked",
- G_CALLBACK(nsgtk_toolbar_persist),
- g);
+ G_CALLBACK(customisation_apply_clicked_cb),
+ tbc);
+#if 0
g_signal_connect(GTK_WIDGET(gtk_builder_get_object(builder, "reset")),
"clicked",
G_CALLBACK(nsgtk_toolbar_reset),
@@ -4021,30 +4030,12 @@ nsgtk_toolbar_create(GtkBuilder *builder,
}
}
- res = apply_user_button_customisation(tb);
- if (res != NSERROR_OK) {
- free(tb);
- return res;
- }
-
- res = populate_gtk_toolbar_widget(tb);
- if (res != NSERROR_OK) {
- free(tb);
- return res;
- }
-
res = nsgtk_toolbar_update(tb);
if (res != NSERROR_OK) {
free(tb);
return res;
}
- res = toolbar_connect_signals(tb);
- if (res != NSERROR_OK) {
- free(tb);
- return res;
- }
-
*tb_out = tb;
return NSERROR_OK;
}
@@ -4059,7 +4050,7 @@ nserror nsgtk_toolbar_destroy(struct nsgtk_toolbar *tb)
}
/* exported interface documented in toolbar.h */
-nserror nsgtk_toolbar_update(struct nsgtk_toolbar *tb)
+nserror nsgtk_toolbar_restyle(struct nsgtk_toolbar *tb)
{
/*
* reset toolbar size allocation so icon size change affects
@@ -4245,3 +4236,32 @@ nserror nsgtk_toolbar_show(struct nsgtk_toolbar *tb,
bool show)
}
return NSERROR_OK;
}
+
+
+/* exported interface documented in toolbar.h */
+nserror nsgtk_toolbar_update(struct nsgtk_toolbar *tb)
+{
+ nserror res;
+
+ /* setup item locations based on user config */
+ res = apply_user_button_customisation(tb);
+ if (res != NSERROR_OK) {
+ return res;
+ }
+
+ /* populate toolbar widget */
+ res = populate_gtk_toolbar_widget(tb);
+ if (res != NSERROR_OK) {
+ return res;
+ }
+
+ /* ensure icon sizes and text labels on toolbar are set */
+ res = nsgtk_toolbar_restyle(tb);
+ if (res != NSERROR_OK) {
+ return res;
+ }
+
+ res = toolbar_connect_signals(tb);
+
+ return res;
+}
diff --git a/frontends/gtk/toolbar.h b/frontends/gtk/toolbar.h
index 75fb3ab..b699898 100644
--- a/frontends/gtk/toolbar.h
+++ b/frontends/gtk/toolbar.h
@@ -43,6 +43,13 @@ nserror nsgtk_toolbar_create(GtkBuilder *builder, struct
browser_window *(*get_b
*/
nserror nsgtk_toolbar_destroy(struct nsgtk_toolbar *toolbar);
+/**
+ * Update the toolbar items being shown based on current settings
+ *
+ * \param toolbar A toolbar returned from a creation
+ * \return NSERROR_OK on success
+ */
+nserror nsgtk_toolbar_update(struct nsgtk_toolbar *tb);
/**
* Update toolbar style and size based on current settings
@@ -50,7 +57,7 @@ nserror nsgtk_toolbar_destroy(struct nsgtk_toolbar *toolbar);
* \param toolbar A toolbar returned from a creation
* \return NSERROR_OK on success
*/
-nserror nsgtk_toolbar_update(struct nsgtk_toolbar *tb);
+nserror nsgtk_toolbar_restyle(struct nsgtk_toolbar *tb);
/**
diff --git a/frontends/gtk/window.c b/frontends/gtk/window.c
index 76e9863..9368d70 100644
--- a/frontends/gtk/window.c
+++ b/frontends/gtk/window.c
@@ -1506,7 +1506,7 @@ nserror nsgtk_window_update_all(void)
struct gui_window *gw;
for (gw = window_list; gw != NULL; gw = gw->next) {
nsgtk_tab_options_changed(nsgtk_scaffolding_notebook(gw->scaffold));
- nsgtk_toolbar_update(gw->toolbar);
+ nsgtk_toolbar_restyle(gw->toolbar);
/** \todo update search bar */
browser_window_schedule_reformat(gw->bw);
}
@@ -1525,3 +1525,14 @@ nserror nsgtk_window_toolbar_show(struct
nsgtk_scaffolding *gs, bool show)
}
return NSERROR_OK;
}
+
+/* exported interface documented in window.h */
+nserror nsgtk_window_toolbar_update(void)
+{
+ struct gui_window *gw;
+ for (gw = window_list; gw != NULL; gw = gw->next) {
+ nsgtk_toolbar_update(gw->toolbar);
+
+ }
+ return NSERROR_OK;
+}
diff --git a/frontends/gtk/window.h b/frontends/gtk/window.h
index 1b3c8aa..9d8d16e 100644
--- a/frontends/gtk/window.h
+++ b/frontends/gtk/window.h
@@ -55,6 +55,11 @@ struct nsgtk_scaffolding *nsgtk_get_scaffold(struct
gui_window *gw);
nserror nsgtk_window_update_all(void);
/**
+ * every window will have its toolbar updated to reflect user settings
+ */
+nserror nsgtk_window_toolbar_update(void);
+
+/**
* Windows associated with a scaffold will have their toolbar show state set
*/
nserror nsgtk_window_toolbar_show(struct nsgtk_scaffolding *gs, bool show);
-----------------------------------------------------------------------
Summary of changes:
frontends/gtk/toolbar.c | 192 ++++++++++++++++++++++++++---------------------
frontends/gtk/toolbar.h | 9 ++-
frontends/gtk/window.c | 13 +++-
frontends/gtk/window.h | 5 ++
4 files changed, 131 insertions(+), 88 deletions(-)
diff --git a/frontends/gtk/toolbar.c b/frontends/gtk/toolbar.c
index c3a95b9..9c51b5b 100644
--- a/frontends/gtk/toolbar.c
+++ b/frontends/gtk/toolbar.c
@@ -1095,72 +1095,10 @@ static void nsgtk_toolbar_cast(struct nsgtk_scaffolding
*g)
-/**
- * save toolbar settings to file
- */
-static nserror nsgtk_toolbar_customisation_save(struct nsgtk_scaffolding *g)
-{
- char *choices = NULL;
- char *order;
- int order_len = PLACEHOLDER_BUTTON * 12; /* length of order buffer */
- int tbidx;
- char *cur;
- int plen;
- order = malloc(order_len);
-
- if (order == NULL) {
- return NSERROR_NOMEM;
- }
- cur = order;
-
- for (tbidx = BACK_BUTTON; tbidx < PLACEHOLDER_BUTTON; tbidx++) {
- plen = snprintf(cur,
- order_len,
- "%d;%d|",
- tbidx,
- nsgtk_scaffolding_button(g, tbidx)->location);
- if (plen == order_len) {
- /* ran out of space, bail early */
- NSLOG(netsurf, INFO,
- "toolbar ordering exceeded available space");
- break;
- }
- cur += plen;
- order_len -= plen;
- }
-
- nsoption_set_charp(toolbar_order, order);
-
- /* ensure choices are saved */
- netsurf_mkpath(&choices, NULL, 2, nsgtk_config_home, "Choices");
- if (choices != NULL) {
- nsoption_write(choices, NULL, NULL);
- free(choices);
- }
-
- return NSERROR_OK;
-}
/**
- * when 'save settings' button is clicked
- */
-static gboolean nsgtk_toolbar_persist(GtkWidget *widget, gpointer data)
-{
- struct nsgtk_scaffolding *g = (struct nsgtk_scaffolding *)data;
-
- edit_mode = false;
- /* save state to file, update toolbars for all windows */
- nsgtk_toolbar_customisation_save(g);
- nsgtk_toolbar_cast(g);
- nsgtk_toolbar_set_physical(g);
- nsgtk_toolbar_close(g);
- gtk_widget_destroy(window->window);
- return TRUE;
-}
-
-/**
* when 'reload defaults' button is clicked
*/
static gboolean nsgtk_toolbar_reset(GtkWidget *widget, gpointer data)
@@ -1401,6 +1339,77 @@ void nsgtk_toolbar_customisation_init(struct
nsgtk_scaffolding *g)
}
#endif
+
+/**
+ * save toolbar settings to file
+ */
+static nserror
+nsgtk_toolbar_customisation_save(struct nsgtk_toolbar_customisation *tbc)
+{
+ char *choices = NULL;
+ char *order;
+ int order_len;
+ int tbidx;
+ char *cur;
+ int plen;
+
+ order_len = PLACEHOLDER_BUTTON * 12; /* length of order buffer */
+ order = malloc(order_len);
+
+ if (order == NULL) {
+ return NSERROR_NOMEM;
+ }
+ cur = order;
+
+ for (tbidx = BACK_BUTTON; tbidx < PLACEHOLDER_BUTTON; tbidx++) {
+ plen = snprintf(cur,
+ order_len,
+ "%d;%d|",
+ tbidx,
+ tbc->toolbar.buttons[tbidx]->location);
+ if (plen == order_len) {
+ /* ran out of space, bail early */
+ NSLOG(netsurf, INFO,
+ "toolbar ordering exceeded available space");
+ break;
+ }
+ cur += plen;
+ order_len -= plen;
+ }
+
+ nsoption_set_charp(toolbar_order, order);
+
+ /* ensure choices are saved */
+ netsurf_mkpath(&choices, NULL, 2, nsgtk_config_home, "Choices");
+ if (choices != NULL) {
+ nsoption_write(choices, NULL, NULL);
+ free(choices);
+ }
+
+ return NSERROR_OK;
+}
+
+
+/**
+ * customisation apply handler for clicked signal
+ *
+ * when 'save settings' button is clicked
+ */
+static gboolean
+customisation_apply_clicked_cb(GtkWidget *widget, gpointer data)
+{
+ struct nsgtk_toolbar_customisation *tbc;
+ tbc = (struct nsgtk_toolbar_customisation *)data;
+
+ /* save state to file, update toolbars for all windows */
+ nsgtk_toolbar_customisation_save(tbc);
+ nsgtk_window_toolbar_update();
+ gtk_widget_destroy(tbc->container);
+
+ return TRUE;
+}
+
+
/**
* find the toolbar item with a given location.
*
@@ -1654,7 +1663,7 @@ static void
customisation_toolbar_drag_leave_cb(GtkWidget *widget,
GdkDragContext *gdc,
guint time,
- gpointer data)
+ gpointer data)
{
gtk_toolbar_set_drop_highlight_item(GTK_TOOLBAR(widget), NULL, 0);
}
@@ -2257,7 +2266,7 @@ static gboolean cutomize_button_clicked_cb(GtkWidget
*widget, gpointer data)
}
/* ensure icon sizes and text labels on toolbar are set */
- res = nsgtk_toolbar_update(&tbc->toolbar);
+ res = nsgtk_toolbar_restyle(&tbc->toolbar);
if (res != NSERROR_OK) {
goto cutomize_button_clicked_cb_error;
}
@@ -2309,12 +2318,12 @@ static gboolean cutomize_button_clicked_cb(GtkWidget
*widget, gpointer data)
G_CALLBACK(gtk_widget_destroy),
tbc->container);
-#if 0
g_signal_connect(GTK_WIDGET(gtk_builder_get_object(builder, "apply")),
"clicked",
- G_CALLBACK(nsgtk_toolbar_persist),
- g);
+ G_CALLBACK(customisation_apply_clicked_cb),
+ tbc);
+#if 0
g_signal_connect(GTK_WIDGET(gtk_builder_get_object(builder, "reset")),
"clicked",
G_CALLBACK(nsgtk_toolbar_reset),
@@ -4021,30 +4030,12 @@ nsgtk_toolbar_create(GtkBuilder *builder,
}
}
- res = apply_user_button_customisation(tb);
- if (res != NSERROR_OK) {
- free(tb);
- return res;
- }
-
- res = populate_gtk_toolbar_widget(tb);
- if (res != NSERROR_OK) {
- free(tb);
- return res;
- }
-
res = nsgtk_toolbar_update(tb);
if (res != NSERROR_OK) {
free(tb);
return res;
}
- res = toolbar_connect_signals(tb);
- if (res != NSERROR_OK) {
- free(tb);
- return res;
- }
-
*tb_out = tb;
return NSERROR_OK;
}
@@ -4059,7 +4050,7 @@ nserror nsgtk_toolbar_destroy(struct nsgtk_toolbar *tb)
}
/* exported interface documented in toolbar.h */
-nserror nsgtk_toolbar_update(struct nsgtk_toolbar *tb)
+nserror nsgtk_toolbar_restyle(struct nsgtk_toolbar *tb)
{
/*
* reset toolbar size allocation so icon size change affects
@@ -4245,3 +4236,32 @@ nserror nsgtk_toolbar_show(struct nsgtk_toolbar *tb,
bool show)
}
return NSERROR_OK;
}
+
+
+/* exported interface documented in toolbar.h */
+nserror nsgtk_toolbar_update(struct nsgtk_toolbar *tb)
+{
+ nserror res;
+
+ /* setup item locations based on user config */
+ res = apply_user_button_customisation(tb);
+ if (res != NSERROR_OK) {
+ return res;
+ }
+
+ /* populate toolbar widget */
+ res = populate_gtk_toolbar_widget(tb);
+ if (res != NSERROR_OK) {
+ return res;
+ }
+
+ /* ensure icon sizes and text labels on toolbar are set */
+ res = nsgtk_toolbar_restyle(tb);
+ if (res != NSERROR_OK) {
+ return res;
+ }
+
+ res = toolbar_connect_signals(tb);
+
+ return res;
+}
diff --git a/frontends/gtk/toolbar.h b/frontends/gtk/toolbar.h
index 75fb3ab..b699898 100644
--- a/frontends/gtk/toolbar.h
+++ b/frontends/gtk/toolbar.h
@@ -43,6 +43,13 @@ nserror nsgtk_toolbar_create(GtkBuilder *builder, struct
browser_window *(*get_b
*/
nserror nsgtk_toolbar_destroy(struct nsgtk_toolbar *toolbar);
+/**
+ * Update the toolbar items being shown based on current settings
+ *
+ * \param toolbar A toolbar returned from a creation
+ * \return NSERROR_OK on success
+ */
+nserror nsgtk_toolbar_update(struct nsgtk_toolbar *tb);
/**
* Update toolbar style and size based on current settings
@@ -50,7 +57,7 @@ nserror nsgtk_toolbar_destroy(struct nsgtk_toolbar *toolbar);
* \param toolbar A toolbar returned from a creation
* \return NSERROR_OK on success
*/
-nserror nsgtk_toolbar_update(struct nsgtk_toolbar *tb);
+nserror nsgtk_toolbar_restyle(struct nsgtk_toolbar *tb);
/**
diff --git a/frontends/gtk/window.c b/frontends/gtk/window.c
index 76e9863..9368d70 100644
--- a/frontends/gtk/window.c
+++ b/frontends/gtk/window.c
@@ -1506,7 +1506,7 @@ nserror nsgtk_window_update_all(void)
struct gui_window *gw;
for (gw = window_list; gw != NULL; gw = gw->next) {
nsgtk_tab_options_changed(nsgtk_scaffolding_notebook(gw->scaffold));
- nsgtk_toolbar_update(gw->toolbar);
+ nsgtk_toolbar_restyle(gw->toolbar);
/** \todo update search bar */
browser_window_schedule_reformat(gw->bw);
}
@@ -1525,3 +1525,14 @@ nserror nsgtk_window_toolbar_show(struct
nsgtk_scaffolding *gs, bool show)
}
return NSERROR_OK;
}
+
+/* exported interface documented in window.h */
+nserror nsgtk_window_toolbar_update(void)
+{
+ struct gui_window *gw;
+ for (gw = window_list; gw != NULL; gw = gw->next) {
+ nsgtk_toolbar_update(gw->toolbar);
+
+ }
+ return NSERROR_OK;
+}
diff --git a/frontends/gtk/window.h b/frontends/gtk/window.h
index 1b3c8aa..9d8d16e 100644
--- a/frontends/gtk/window.h
+++ b/frontends/gtk/window.h
@@ -55,6 +55,11 @@ struct nsgtk_scaffolding *nsgtk_get_scaffold(struct
gui_window *gw);
nserror nsgtk_window_update_all(void);
/**
+ * every window will have its toolbar updated to reflect user settings
+ */
+nserror nsgtk_window_toolbar_update(void);
+
+/**
* Windows associated with a scaffold will have their toolbar show state set
*/
nserror nsgtk_window_toolbar_show(struct nsgtk_scaffolding *gs, bool show);
--
NetSurf Browser
_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org