summaryrefslogtreecommitdiff
path: root/frontends/gtk/toolbar.c
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/gtk/toolbar.c')
-rw-r--r--frontends/gtk/toolbar.c47
1 files changed, 41 insertions, 6 deletions
diff --git a/frontends/gtk/toolbar.c b/frontends/gtk/toolbar.c
index dadddc27d..339263b72 100644
--- a/frontends/gtk/toolbar.c
+++ b/frontends/gtk/toolbar.c
@@ -148,9 +148,10 @@ struct nsgtk_toolbar_customization {
struct nsgtk_toolbar toolbar;
/**
- * toolbar gtk builder
+ * The top level container (tabBox)
*/
- GtkBuilder *builder;
+ GtkWidget *container;
+
};
/**
@@ -1530,16 +1531,34 @@ static gboolean cutomize_button_clicked_cb(GtkWidget *widget, gpointer data)
struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data;
struct nsgtk_toolbar_customization *tbc;
nserror res;
+ GtkBuilder *builder;
+ GtkNotebook *notebook;
+ struct gui_window *gw;
+
+ /* create builder */
+ res = nsgtk_builder_new_from_resname("toolbar", &builder);
+ if (res != NSERROR_OK) {
+ NSLOG(netsurf, INFO, "Toolbar UI builder init failed");
+ return TRUE;
+ }
+ gtk_builder_connect_signals(builder, NULL);
+
/* create nsgtk_toolbar_customization which has nsgtk_toolbar
* at the front so we can reuse functions that take
* nsgtk_toolbar
*/
tbc = calloc(1, sizeof(struct nsgtk_toolbar_customization));
+ if (tbc == NULL) {
+ g_object_unref(builder);
+ return TRUE;
+ }
- /* create builder*/
- res = nsgtk_builder_new_from_resname("toolbar", &tbc->builder);
- if (res != NSERROR_OK) {
- NSLOG(netsurf, INFO, "Toolbar UI builder init failed");
+ /* get container box widget which forms a page of the tabs */
+ tbc->container = GTK_WIDGET(gtk_builder_get_object(builder, "tabBox"));
+ if (tbc->container == NULL) {
+ free(tbc);
+ g_object_unref(builder);
+ NSLOG(netsurf, ERROR, "dammit");
return TRUE;
}
@@ -1550,6 +1569,22 @@ static gboolean cutomize_button_clicked_cb(GtkWidget *widget, gpointer data)
/* save and update on apply button then discard */
/* discard button causes destruction */
/* close and cleanup on destroy signal */
+
+
+ gw = tb->get_ctx; /** \todo stop assuming the context is a gui window */
+ notebook = nsgtk_scaffolding_notebook(nsgtk_get_scaffold(gw));
+
+ nsgtk_tab_add_page(notebook,
+ tbc->container,
+ false,
+ messages_get("gtkCustomizeToolbarTitle"),
+ favicon_pixbuf);
+
+ /* safe to drop the reference to the builder as the container is
+ * referenced by the notebook now.
+ */
+ g_object_unref(builder);
+
return TRUE;
}