diff options
author | Vincent Sanders <vince@kyllikki.org> | 2019-09-01 15:43:19 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-09-21 10:53:41 +0100 |
commit | 85b65921ed38b3ce0bd795e9455afbd53610b309 (patch) | |
tree | b78306af01cdaf6b2f749413575ae12225dadeb6 /frontends/gtk/scaffolding.c | |
parent | 2e8861dc05325c88cfb8130e7eddd0967e4d4b09 (diff) | |
download | netsurf-85b65921ed38b3ce0bd795e9455afbd53610b309.tar.gz netsurf-85b65921ed38b3ce0bd795e9455afbd53610b309.tar.bz2 |
cleanup scaffolding a bit
Diffstat (limited to 'frontends/gtk/scaffolding.c')
-rw-r--r-- | frontends/gtk/scaffolding.c | 270 |
1 files changed, 126 insertions, 144 deletions
diff --git a/frontends/gtk/scaffolding.c b/frontends/gtk/scaffolding.c index ccfe1a1f2..8c6a3991d 100644 --- a/frontends/gtk/scaffolding.c +++ b/frontends/gtk/scaffolding.c @@ -17,67 +17,32 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include <assert.h> -#include <stdbool.h> -#include <stdio.h> -#include <errno.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> #include <gtk/gtk.h> -#include <gdk-pixbuf/gdk-pixbuf.h> #include "utils/utils.h" -#include "utils/dirent.h" -#include "utils/messages.h" -#include "utils/corestrings.h" #include "utils/log.h" -#include "utils/nsoption.h" -#include "utils/file.h" #include "utils/nsurl.h" -#include "netsurf/content.h" -#include "netsurf/keypress.h" +#include "utils/messages.h" +#include "utils/nsoption.h" #include "netsurf/browser_window.h" -#include "netsurf/plotters.h" #include "desktop/browser_history.h" #include "desktop/hotlist.h" -#include "desktop/print.h" -#include "desktop/save_complete.h" -#ifdef WITH_PDF_EXPORT -#include "desktop/font_haru.h" -#include "desktop/save_pdf.h" -#endif -#include "desktop/save_text.h" -#include "desktop/searchweb.h" #include "desktop/search.h" #include "gtk/compat.h" #include "gtk/warn.h" -#include "gtk/cookies.h" -#include "gtk/completion.h" -#include "gtk/preferences.h" -#include "gtk/about.h" -#include "gtk/viewsource.h" -#include "gtk/bitmap.h" -#include "gtk/gui.h" -#include "gtk/global_history.h" -#include "gtk/local_history.h" -#include "gtk/hotlist.h" -#include "gtk/download.h" -#include "gtk/menu.h" -#include "gtk/plotters.h" -#include "gtk/print.h" -#include "gtk/search.h" -#include "gtk/throbber.h" #include "gtk/toolbar_items.h" #include "gtk/toolbar.h" +#include "gtk/menu.h" +#include "gtk/local_history.h" +#include "gtk/download.h" +#include "gtk/gui.h" #include "gtk/window.h" -#include "gtk/gdk.h" -#include "gtk/scaffolding.h" +#include "gtk/completion.h" #include "gtk/tabs.h" -#include "gtk/viewdata.h" +#include "gtk/search.h" #include "gtk/resources.h" -#include "gtk/layout_pango.h" +#include "gtk/scaffolding.h" /** @@ -131,7 +96,9 @@ struct nsgtk_scaffolding { */ static struct nsgtk_scaffolding *scaf_current; -/** global list for interface changes */ +/** + * global list for interface changes + */ static struct nsgtk_scaffolding *scaf_list = NULL; /** @@ -410,6 +377,7 @@ nsgtk_window_edit_menu_hidden(GtkWidget *widget, return TRUE; } + /** * gtk event handler for popup menu being hidden. * @@ -417,8 +385,8 @@ nsgtk_window_edit_menu_hidden(GtkWidget *widget, * \param g scaffolding handle * \return TRUE to indicate event handled */ -static gboolean nsgtk_window_popup_menu_hidden(GtkWidget *widget, - struct nsgtk_scaffolding *g) +static gboolean +nsgtk_window_popup_menu_hidden(GtkWidget *widget, struct nsgtk_scaffolding *g) { nsgtk_scaffolding_enable_edit_actions_sensitivity(g); return TRUE; @@ -426,35 +394,6 @@ static gboolean nsgtk_window_popup_menu_hidden(GtkWidget *widget, /** - * update handler for URL entry widget - * - * \param widget The widget receiving the delete event - * \param event The event - * \param data The context pointer passed when the connection was made. - * \return TRUE to indicate signal handled. - */ -gboolean -nsgtk_window_url_changed(GtkWidget *widget, - GdkEventKey *event, - gpointer data) -{ - return nsgtk_completion_update(GTK_ENTRY(widget)); -} - -/* exported interface documented in gtk/scaffolding.h */ -nserror nsgtk_scaffolding_toolbar_context_menu(struct nsgtk_scaffolding *gs) -{ - /* set visibility for right-click popup menu */ - popup_menu_hide(gs->menu_popup, true, false, true, false); - popup_menu_show(gs->menu_popup, false, false, false, true); - - nsgtk_menu_popup_at_pointer(gs->menu_popup->popup_menu, NULL); - - return NSERROR_OK; -} - - -/** * Update the menus when the number of tabs changes. * * \todo toolbar sensitivity @@ -615,8 +554,6 @@ MENUHANDLER(paste, PASTE_BUTTON); */ MENUHANDLER(delete, DELETE_BUTTON); - - /** * menu signal handler for activation on selectall item */ @@ -1092,6 +1029,7 @@ nsgtk_new_scaffolding_popup(struct nsgtk_scaffolding *g, GtkAccelGroup *group) return nmenu; } + /** * Create and connect handlers to link popup menu. * @@ -1139,14 +1077,6 @@ nsgtk_new_scaffolding_link_popup(struct nsgtk_scaffolding *g, return nmenu; } -/* exported interface documented in gtk/scaffolding.h */ -struct nsgtk_scaffolding *nsgtk_current_scaffolding(void) -{ - if (scaf_current == NULL) { - scaf_current = scaf_list; - } - return scaf_current; -} /** * initialiase the menu signal handlers ready for connection @@ -1274,6 +1204,49 @@ static void nsgtk_menu_set_sensitivity(struct nsgtk_scaffolding *g) } /** + * create and initialise menus + */ +nserror nsgtk_menus_create(struct nsgtk_scaffolding *gs) +{ + GtkMenuShell *menushell; + GtkAccelGroup *group; + + menushell = GTK_MENU_SHELL(gtk_builder_get_object(gs->builder, + "menubar")); + + group = gtk_accel_group_new(); + + gtk_window_add_accel_group(gs->window, group); + + gs->menu_bar = nsgtk_menu_bar_create(menushell, group); + + /* toolbar URL bar menu bar search bar signal handlers */ + g_signal_connect(gs->menu_bar->edit_submenu->edit, + "show", + G_CALLBACK(nsgtk_window_edit_menu_shown), + gs); + + g_signal_connect(gs->menu_bar->edit_submenu->edit, + "hide", + G_CALLBACK(nsgtk_window_edit_menu_hidden), + gs); + + + /* create popup menu */ + gs->menu_popup = nsgtk_new_scaffolding_popup(gs, group); + + gs->link_menu = nsgtk_new_scaffolding_link_popup(gs, group); + + /* set up the menu signal handlers */ + nsgtk_menu_initialise(gs); + nsgtk_menu_connect_signals(gs); + nsgtk_menu_set_sensitivity(gs); + + return NSERROR_OK; +} + + +/** * update search toolbar size and style */ static nserror nsgtk_search_update(struct gtk_search *search) @@ -1389,6 +1362,16 @@ static nserror nsgtk_search_connect_signals(struct nsgtk_scaffolding *gs) /* exported interface documented in gtk/scaffolding.h */ +struct nsgtk_scaffolding *nsgtk_current_scaffolding(void) +{ + if (scaf_current == NULL) { + scaf_current = scaf_list; + } + return scaf_current; +} + + +/* exported interface documented in gtk/scaffolding.h */ void nsgtk_scaffolding_toolbars(struct nsgtk_scaffolding *g) { // nsgtk_toolbar_update(g->toolbar); @@ -1396,7 +1379,6 @@ void nsgtk_scaffolding_toolbars(struct nsgtk_scaffolding *g) } - /* exported function documented in gtk/scaffolding.h */ void nsgtk_window_set_title(struct gui_window *gw, const char *title) { @@ -1515,6 +1497,7 @@ struct nsgtk_scaffolding *nsgtk_scaffolding_iterate(struct nsgtk_scaffolding *g) return g->next; } + /* exported interface documented in gtk/scaffolding.h */ void nsgtk_scaffolding_reset_offset(struct nsgtk_scaffolding *g) { @@ -1523,6 +1506,13 @@ void nsgtk_scaffolding_reset_offset(struct nsgtk_scaffolding *g) /* exported interface documented in gtk/scaffolding.h */ +struct gui_window *nsgtk_scaffolding_top_level(struct nsgtk_scaffolding *g) +{ + return g->top_level; +} + + +/* exported interface documented in gtk/scaffolding.h */ void nsgtk_scaffolding_toggle_search_bar_visibility(struct nsgtk_scaffolding *g) { gboolean vis; @@ -1541,11 +1531,6 @@ void nsgtk_scaffolding_toggle_search_bar_visibility(struct nsgtk_scaffolding *g) } } -/* exported interface documented in gtk/scaffolding.h */ -struct gui_window *nsgtk_scaffolding_top_level(struct nsgtk_scaffolding *g) -{ - return g->top_level; -} /* exported interface documented in gtk/scaffolding.h */ void nsgtk_scaffolding_set_top_level(struct gui_window *gw) @@ -1572,9 +1557,9 @@ void nsgtk_scaffolding_set_top_level(struct gui_window *gw) /* Ensure the window's title bar is updated */ nsgtk_window_set_title(gw, browser_window_get_title(bw)); - } + /* exported interface documented in scaffolding.h */ void nsgtk_scaffolding_set_sensitivity(struct nsgtk_scaffolding *g) { @@ -1607,9 +1592,23 @@ void nsgtk_scaffolding_set_sensitivity(struct nsgtk_scaffolding *g) /* exported interface documented in gtk/scaffolding.h */ -void nsgtk_scaffolding_context_menu(struct nsgtk_scaffolding *g, - gdouble x, - gdouble y) +nserror nsgtk_scaffolding_toolbar_context_menu(struct nsgtk_scaffolding *gs) +{ + /* set visibility for right-click popup menu */ + popup_menu_hide(gs->menu_popup, true, false, true, false); + popup_menu_show(gs->menu_popup, false, false, false, true); + + nsgtk_menu_popup_at_pointer(gs->menu_popup->popup_menu, NULL); + + return NSERROR_OK; +} + + +/* exported interface documented in gtk/scaffolding.h */ +void +nsgtk_scaffolding_context_menu(struct nsgtk_scaffolding *g, + gdouble x, + gdouble y) { GtkMenu *gtkmenu; struct browser_window *bw; @@ -1653,13 +1652,11 @@ void nsgtk_scaffolding_context_menu(struct nsgtk_scaffolding *g, } - /* exported interface documented in gtk/scaffolding.h */ struct nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) { nserror res; struct nsgtk_scaffolding *gs; - GtkAccelGroup *group; gs = calloc(1, sizeof(*gs)); if (gs == NULL) { @@ -1679,25 +1676,13 @@ struct nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) gtk_builder_connect_signals(gs->builder, NULL); + /* containing window setup */ gs->window = GTK_WINDOW(gtk_builder_get_object(gs->builder, "wndBrowser")); - gs->notebook = GTK_NOTEBOOK(gtk_builder_get_object(gs->builder, - "notebook")); - - - res = nsgtk_search_create(gs->builder, &gs->search); - if (res != NSERROR_OK) { - free(gs); - return NULL; - } - - group = gtk_accel_group_new(); - gtk_window_add_accel_group(gs->window, group); - - gs->menu_bar = nsgtk_menu_bar_create(GTK_MENU_SHELL(gtk_builder_get_object(gs->builder, "menubar")), group); - /* set this window's size and position to what's in the options, or - * or some sensible default if they're not set yet. + /** + * set this window's size and position to what's in the options, or + * some sensible default if they are not set yet. */ if (nsoption_int(window_width) > 0) { gtk_window_move(gs->window, @@ -1714,19 +1699,6 @@ struct nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) gtk_window_set_default_size(gs->window, 1000, 700); } - - nsgtk_tab_init(gs); - - g_signal_connect_after(gs->notebook, - "page-added", - G_CALLBACK(nsgtk_window_tabs_add), - gs); - g_signal_connect_after(gs->notebook, - "page-removed", - G_CALLBACK(nsgtk_window_tabs_remove), - gs); - - /* connect main window signals to their handlers. */ g_signal_connect(gs->window, "delete-event", G_CALLBACK(scaffolding_window_delete_event), @@ -1737,28 +1709,38 @@ struct nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) G_CALLBACK(scaffolding_window_destroy), gs); - /* toolbar URL bar menu bar search bar signal handlers */ - g_signal_connect(gs->menu_bar->edit_submenu->edit, - "show", - G_CALLBACK(nsgtk_window_edit_menu_shown), - gs); - g_signal_connect(gs->menu_bar->edit_submenu->edit, - "hide", - G_CALLBACK(nsgtk_window_edit_menu_hidden), - gs); + /* notebook */ + res = nsgtk_notebook_create(gs->builder, &gs->notebook); + if (res != NSERROR_OK) { + free(gs); + return NULL; + } - nsgtk_search_connect_signals(gs); + g_signal_connect_after(gs->notebook, + "page-added", + G_CALLBACK(nsgtk_window_tabs_add), + gs); + g_signal_connect_after(gs->notebook, + "page-removed", + G_CALLBACK(nsgtk_window_tabs_remove), + gs); - /* create popup menu */ - gs->menu_popup = nsgtk_new_scaffolding_popup(gs, group); - gs->link_menu = nsgtk_new_scaffolding_link_popup(gs, group); + /* local page text search */ + res = nsgtk_search_create(gs->builder, &gs->search); + if (res != NSERROR_OK) { + free(gs); + return NULL; + } - /* set up the menu signal handlers */ - nsgtk_menu_initialise(gs); - nsgtk_menu_connect_signals(gs); - nsgtk_menu_set_sensitivity(gs); + nsgtk_search_connect_signals(gs); + + res = nsgtk_menus_create(gs); + if (res != NSERROR_OK) { + free(gs); + return NULL; + } /* attach to the list */ if (scaf_list) { |