diff options
Diffstat (limited to 'frontends/gtk/toolbar.c')
-rw-r--r-- | frontends/gtk/toolbar.c | 47 |
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; } |