From 45bd456cd86bd300ea51285c969b88e6ae68bbb9 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Thu, 29 Aug 2019 21:42:11 +0100 Subject: add five more handlers --- frontends/gtk/scaffolding.c | 74 ++++++++------------------ frontends/gtk/toolbar.c | 118 ++++++++++++++++++++++++++++++++++++++++++ frontends/gtk/toolbar_items.h | 10 ++-- 3 files changed, 144 insertions(+), 58 deletions(-) (limited to 'frontends/gtk') diff --git a/frontends/gtk/scaffolding.c b/frontends/gtk/scaffolding.c index 309ee041f..685b5d4a7 100644 --- a/frontends/gtk/scaffolding.c +++ b/frontends/gtk/scaffolding.c @@ -133,8 +133,6 @@ struct nsgtk_scaffolding { /** scaffold container window */ GtkWindow *window; - /** flag for the scaffold window fullscreen status */ - bool fullscreen; /** tab widget holding displayed pages */ GtkNotebook *notebook; @@ -819,60 +817,32 @@ MULTIHANDLER(find) /** * menu signal handler for activation on preferences item */ -MENUHANDLER(preferences,PREFERENCES_BUTTON); +MENUHANDLER(preferences, PREFERENCES_BUTTON); +/** + * menu signal handler for activation on zoom plus item + */ +MENUHANDLER(zoomplus, ZOOMPLUS_BUTTON); -MULTIHANDLER(zoomplus) -{ - struct browser_window *bw = nsgtk_get_browser_window(g->top_level); - - browser_window_set_scale(bw, 0.05, false); - - return TRUE; -} - -MULTIHANDLER(zoomnormal) -{ - struct browser_window *bw = nsgtk_get_browser_window(g->top_level); - - browser_window_set_scale(bw, 1.0, true); - - return TRUE; -} - -MULTIHANDLER(zoomminus) -{ - struct browser_window *bw = nsgtk_get_browser_window(g->top_level); - - browser_window_set_scale(bw, -0.05, false); - - return TRUE; -} - -MULTIHANDLER(fullscreen) -{ - if (g->fullscreen) { - gtk_window_unfullscreen(g->window); - } else { - gtk_window_fullscreen(g->window); - } - - g->fullscreen = !g->fullscreen; - - return TRUE; -} +/** + * menu signal handler for activation on zoom minus item + */ +MENUHANDLER(zoomminus, ZOOMMINUS_BUTTON); -MULTIHANDLER(viewsource) -{ - nserror ret; +/** + * menu signal handler for activation on zoom normal item + */ +MENUHANDLER(zoomnormal, ZOOMNORMAL_BUTTON); - ret = nsgtk_viewsource(g->window, nsgtk_get_browser_window(g->top_level)); - if (ret != NSERROR_OK) { - nsgtk_warning(messages_get_errorcode(ret), 0); - } +/** + * menu signal handler for activation on full screen item + */ +MENUHANDLER(fullscreen, FULLSCREEN_BUTTON); - return TRUE; -} +/** + * menu signal handler for activation on view source item + */ +MENUHANDLER(viewsource, VIEWSOURCE_BUTTON); static gboolean @@ -2205,8 +2175,6 @@ struct nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) nsgtk_menu_connect_signals(gs); nsgtk_menu_set_sensitivity(gs); - gs->fullscreen = false; - /* attach to the list */ if (scaf_list) { scaf_list->prev = gs; diff --git a/frontends/gtk/toolbar.c b/frontends/gtk/toolbar.c index 1560a6ebe..8fbdfa1ab 100644 --- a/frontends/gtk/toolbar.c +++ b/frontends/gtk/toolbar.c @@ -2725,7 +2725,125 @@ preferences_button_clicked_cb(GtkWidget *widget, gpointer data) } return TRUE; +} + + +/** + * handler for zoom plus tool bar item clicked signal + * + * \param widget The widget the signal is being delivered to. + * \param data The toolbar context passed when the signal was connected + * \return TRUE + */ +static gboolean +zoomplus_button_clicked_cb(GtkWidget *widget, gpointer data) +{ + struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data; + struct browser_window *bw; + + bw = tb->get_bw(tb->get_bw_ctx); + + browser_window_set_scale(bw, 0.05, false); + + return TRUE; +} + +/** + * handler for zoom minus tool bar item clicked signal + * + * \param widget The widget the signal is being delivered to. + * \param data The toolbar context passed when the signal was connected + * \return TRUE + */ +static gboolean +zoomminus_button_clicked_cb(GtkWidget *widget, gpointer data) +{ + struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data; + struct browser_window *bw; + + bw = tb->get_bw(tb->get_bw_ctx); + + browser_window_set_scale(bw, -0.05, false); + + return TRUE; + +} + + +/** + * handler for zoom normal tool bar item clicked signal + * + * \param widget The widget the signal is being delivered to. + * \param data The toolbar context passed when the signal was connected + * \return TRUE + */ +static gboolean +zoomnormal_button_clicked_cb(GtkWidget *widget, gpointer data) +{ + struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data; + struct browser_window *bw; + + bw = tb->get_bw(tb->get_bw_ctx); + + browser_window_set_scale(bw, 1.0, true); + + return TRUE; +} + + +/** + * handler for full screen tool bar item clicked signal + * + * \param widget The widget the signal is being delivered to. + * \param data The toolbar context passed when the signal was connected + * \return TRUE + */ +static gboolean +fullscreen_button_clicked_cb(GtkWidget *widget, gpointer data) +{ + GtkWindow *gtkwindow; /* gtk window widget is in */ + GdkWindow *gdkwindow; + GdkWindowState state; + + gtkwindow = GTK_WINDOW(gtk_widget_get_ancestor(widget,GTK_TYPE_WINDOW)); + gdkwindow = gtk_widget_get_window(GTK_WIDGET(gtkwindow)); + state = gdk_window_get_state(gdkwindow); + + if (state & GDK_WINDOW_STATE_FULLSCREEN) { + gtk_window_unfullscreen(gtkwindow); + } else { + gtk_window_fullscreen(gtkwindow); + } + return TRUE; +} + + +/** + * handler for full screen tool bar item clicked signal + * + * \param widget The widget the signal is being delivered to. + * \param data The toolbar context passed when the signal was connected + * \return TRUE + */ +static gboolean +viewsource_button_clicked_cb(GtkWidget *widget, gpointer data) +{ + nserror res; + struct nsgtk_toolbar *tb = (struct nsgtk_toolbar *)data; + struct browser_window *bw; + GtkWindow *gtkwindow; /* gtk window widget is in */ + + bw = tb->get_bw(tb->get_bw_ctx); + + gtkwindow = GTK_WINDOW(gtk_widget_get_ancestor(widget,GTK_TYPE_WINDOW)); + + res = nsgtk_viewsource(gtkwindow, bw); + if (res != NSERROR_OK) { + nsgtk_warning(messages_get_errorcode(res), 0); + } + + return TRUE; } diff --git a/frontends/gtk/toolbar_items.h b/frontends/gtk/toolbar_items.h index b4bc91f45..ecdd9787c 100644 --- a/frontends/gtk/toolbar_items.h +++ b/frontends/gtk/toolbar_items.h @@ -117,11 +117,11 @@ TOOLBAR_ITEM(DELETE_BUTTON, delete, false, delete_button_clicked_cb) TOOLBAR_ITEM(SELECTALL_BUTTON, selectall, true, selectall_button_clicked_cb) TOOLBAR_ITEM(FIND_BUTTON, find, true, NULL) TOOLBAR_ITEM(PREFERENCES_BUTTON, preferences, true, preferences_button_clicked_cb) -TOOLBAR_ITEM(ZOOMPLUS_BUTTON, zoomplus, true, NULL) -TOOLBAR_ITEM(ZOOMMINUS_BUTTON, zoomminus, true, NULL) -TOOLBAR_ITEM(ZOOMNORMAL_BUTTON, zoomnormal, true, NULL) -TOOLBAR_ITEM(FULLSCREEN_BUTTON, fullscreen, true, NULL) -TOOLBAR_ITEM(VIEWSOURCE_BUTTON, viewsource, true, NULL) +TOOLBAR_ITEM(ZOOMPLUS_BUTTON, zoomplus, true, zoomplus_button_clicked_cb) +TOOLBAR_ITEM(ZOOMMINUS_BUTTON, zoomminus, true, zoomminus_button_clicked_cb) +TOOLBAR_ITEM(ZOOMNORMAL_BUTTON, zoomnormal, true, zoomnormal_button_clicked_cb) +TOOLBAR_ITEM(FULLSCREEN_BUTTON, fullscreen, true, fullscreen_button_clicked_cb) +TOOLBAR_ITEM(VIEWSOURCE_BUTTON, viewsource, true, viewsource_button_clicked_cb) TOOLBAR_ITEM(DOWNLOADS_BUTTON, downloads, true, NULL) TOOLBAR_ITEM(SAVEWINDOWSIZE_BUTTON, savewindowsize, true, NULL) TOOLBAR_ITEM(TOGGLEDEBUGGING_BUTTON, toggledebugging, true, NULL) -- cgit v1.2.3