diff options
author | Vincent Sanders <vince@kyllikki.org> | 2019-08-27 23:46:40 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-09-21 10:53:41 +0100 |
commit | 8eebe695f053abb390ddc9894415f595ad7f4177 (patch) | |
tree | 89d32a9e03f9d3bc02340c6111e080fb725d8542 /frontends/gtk/scaffolding.c | |
parent | b24b28e40eb84e1ed361224b172928582b471e10 (diff) | |
download | netsurf-8eebe695f053abb390ddc9894415f595ad7f4177.tar.gz netsurf-8eebe695f053abb390ddc9894415f595ad7f4177.tar.bz2 |
allow menu activation to use the toolbar button implementations
Diffstat (limited to 'frontends/gtk/scaffolding.c')
-rw-r--r-- | frontends/gtk/scaffolding.c | 132 |
1 files changed, 39 insertions, 93 deletions
diff --git a/frontends/gtk/scaffolding.c b/frontends/gtk/scaffolding.c index 13a2ed58d..10d96810f 100644 --- a/frontends/gtk/scaffolding.c +++ b/frontends/gtk/scaffolding.c @@ -69,8 +69,8 @@ #include "gtk/print.h" #include "gtk/search.h" #include "gtk/throbber.h" -#include "gtk/toolbar.h" #include "gtk/toolbar_items.h" +#include "gtk/toolbar.h" #include "gtk/window.h" #include "gtk/gdk.h" #include "gtk/scaffolding.h" @@ -601,105 +601,40 @@ static void nsgtk_openfile_open(const char *filename) /* signal handlers for menu entries */ -MULTIHANDLER(newwindow) +/** + * menu signal handler for activation on new window item + */ +static gboolean +nsgtk_on_newwindow_activate_menu(GtkMenuItem *widget, gpointer data) { - struct browser_window *bw = nsgtk_get_browser_window(g->top_level); - const char *addr; - nsurl *url; - nserror error; - - if (nsoption_charp(homepage_url) != NULL) { - addr = nsoption_charp(homepage_url); - } else { - addr = NETSURF_HOMEPAGE; - } - - error = nsurl_create(addr, &url); - if (error == NSERROR_OK) { - error = browser_window_create(BW_CREATE_HISTORY, - url, - NULL, - bw, - NULL); - nsurl_unref(url); - } - if (error != NSERROR_OK) { - nsgtk_warning(messages_get_errorcode(error), 0); - } - + struct nsgtk_scaffolding *g = (struct nsgtk_scaffolding *)data; + nsgtk_window_item_activate(g->top_level, NEWWINDOW_BUTTON); return TRUE; } -/* exported interface documented in gtk/scaffolding.h */ -nserror nsgtk_scaffolding_new_tab(struct gui_window *gw) -{ - struct browser_window *bw = nsgtk_get_browser_window(gw); - nsurl *url = NULL; - nserror error; - - if (!nsoption_bool(new_blank)) { - const char *addr; - if (nsoption_charp(homepage_url) != NULL) { - addr = nsoption_charp(homepage_url); - } else { - addr = NETSURF_HOMEPAGE; - } - error = nsurl_create(addr, &url); - if (error != NSERROR_OK) { - nsgtk_warning(messages_get_errorcode(error), 0); - } - } - - error = browser_window_create(BW_CREATE_HISTORY | - BW_CREATE_TAB, - url, - NULL, - bw, - NULL); - if (url != NULL) { - nsurl_unref(url); - } - return error; -} - -MULTIHANDLER(newtab) +/** + * menu signal handler for activation on new tab item + */ +static gboolean +nsgtk_on_newtab_activate_menu(GtkMenuItem *widget, gpointer data) { - nserror error; - - error = nsgtk_scaffolding_new_tab(g->top_level); - if (error != NSERROR_OK) { - nsgtk_warning(messages_get_errorcode(error), 0); - } + struct nsgtk_scaffolding *g = (struct nsgtk_scaffolding *)data; + nsgtk_window_item_activate(g->top_level, NEWTAB_BUTTON); return TRUE; } -MULTIHANDLER(openfile) +/** + * menu signal handler for activation on openfile item + */ +static gboolean +nsgtk_on_openfile_activate_menu(GtkMenuItem *widget, gpointer data) { - GtkWidget *dlgOpen; - gint response; - - scaf_current = g; - dlgOpen = gtk_file_chooser_dialog_new("Open File", - scaf_current->window, - GTK_FILE_CHOOSER_ACTION_OPEN, - NSGTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - NSGTK_STOCK_OPEN, GTK_RESPONSE_OK, - NULL, NULL); - - response = gtk_dialog_run(GTK_DIALOG(dlgOpen)); - if (response == GTK_RESPONSE_OK) { - gchar *filename; - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dlgOpen)); - - nsgtk_openfile_open((const char *)filename); - - g_free(filename); - } - - gtk_widget_destroy(dlgOpen); + struct nsgtk_scaffolding *g = (struct nsgtk_scaffolding *)data; + nsgtk_window_item_activate(g->top_level, OPENFILE_BUTTON); return TRUE; } + /** * callback to determine if a path is a directory. * @@ -1001,12 +936,19 @@ MULTIHANDLER(print) return TRUE; } -MULTIHANDLER(closewindow) + +/** + * menu signal handler for activation on close window item + */ +static gboolean +nsgtk_on_closewindow_activate_menu(GtkMenuItem *widget, gpointer data) { - gtk_widget_destroy(GTK_WIDGET(g->window)); + struct nsgtk_scaffolding *g = (struct nsgtk_scaffolding *)data; + nsgtk_window_item_activate(g->top_level, CLOSEWINDOW_BUTTON); return TRUE; } + MULTIHANDLER(quit) { struct nsgtk_scaffolding *gs; @@ -1639,10 +1581,14 @@ MULTIHANDLER(prevtab) return TRUE; } -MULTIHANDLER(closetab) +/** + * menu signal handler for activation on close tab item + */ +static gboolean +nsgtk_on_closetab_activate_menu(GtkMenuItem *widget, gpointer data) { - nsgtk_tab_close_current(g->notebook); - + struct nsgtk_scaffolding *g = (struct nsgtk_scaffolding *)data; + nsgtk_window_item_activate(g->top_level, CLOSETAB_BUTTON); return TRUE; } |