diff options
Add back/forward buttons
1 files changed, 59 insertions, 6 deletions
| -rw-r--r-- | badwolf.c | 65 |
@@ -54,6 +54,8 @@ static void web_contextCb_download_started(WebKitWebContext *web_context, static gboolean locationCb_activate(GtkEntry *location, gpointer user_data); static gboolean javascriptCb_toggled(GtkButton *javascript, gpointer user_data); static gboolean auto_load_imagesCb_toggled(GtkButton *auto_load_images, gpointer user_data); +static void backCb_clicked(GtkButton *back, gpointer user_data); +static void forwardCb_clicked(GtkButton *forward, gpointer user_data); static gboolean SearchEntryCb_next__match(GtkSearchEntry *search, gpointer user_data); static gboolean SearchEntryCb_previous__match(GtkSearchEntry *search, gpointer user_data); static gboolean SearchEntryCb_search__changed(GtkSearchEntry *search, gpointer user_data); @@ -478,6 +480,24 @@ auto_load_imagesCb_toggled(GtkButton *auto_load_images, gpointer user_data) return TRUE; } +static void +backCb_clicked(GtkButton *back, gpointer user_data) +{ + (void)back; + struct Client *browser = (struct Client *)user_data; + + webkit_web_view_go_back(browser->webView); +} + +static void +forwardCb_clicked(GtkButton *forward, gpointer user_data) +{ + (void)forward; + struct Client *browser = (struct Client *)user_data; + + webkit_web_view_go_forward(browser->webView); +} + static gboolean SearchEntryCb_next__match(GtkSearchEntry *search, gpointer user_data) { @@ -538,23 +558,39 @@ new_browser(struct Window *window, const gchar *target_url, WebKitWebView *relat browser->window = window; browser->box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_widget_set_name(browser->box, "browser__box"); + + browser->toolbar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_widget_set_name(browser->toolbar, "browser__toolbar"); - browser->location = gtk_entry_new(); - gtk_widget_set_name(browser->location, "browser__location"); + + browser->back = gtk_button_new_from_icon_name("go-previous-symbolic", GTK_ICON_SIZE_LARGE_TOOLBAR); + gtk_widget_set_name(browser->back, "browser__back"); + + browser->forward = gtk_button_new_from_icon_name("go-next-symbolic", GTK_ICON_SIZE_SMALL_TOOLBAR); + gtk_widget_set_name(browser->forward, "browser__forward"); + + GtkWidget *toolbar_separator = gtk_separator_new(GTK_ORIENTATION_VERTICAL); + browser->javascript = gtk_toggle_button_new_with_label(_("JS")); gtk_widget_set_name(browser->javascript, "browser__javascript"); + gtk_widget_set_tooltip_text(browser->javascript, _("Toggle javascript")); gtk_button_set_relief(GTK_BUTTON(browser->javascript), GTK_RELIEF_NONE); + browser->auto_load_images = gtk_toggle_button_new_with_label(_("IMG")); gtk_widget_set_name(browser->auto_load_images, "browser__load_images"); + gtk_widget_set_tooltip_text(browser->auto_load_images, _("Toggle loading images automatically")); gtk_button_set_relief(GTK_BUTTON(browser->auto_load_images), GTK_RELIEF_NONE); + browser->location = gtk_entry_new(); + gtk_widget_set_name(browser->location, "browser__location"); + + browser->statusbar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_widget_set_name(browser->statusbar, "browser__statusbar"); - browser->statuslabel = gtk_label_new(NULL); - gtk_widget_set_name(browser->statuslabel, "browser__statuslabel"); browser->search = gtk_search_entry_new(); gtk_widget_set_name(browser->search, "browser__search"); + browser->statuslabel = gtk_label_new(NULL); + gtk_widget_set_name(browser->statuslabel, "browser__statuslabel"); setenv("GTK_THEME", ":light", 0); @@ -593,10 +629,23 @@ new_browser(struct Window *window, const gchar *target_url, WebKitWebView *relat NULL)); gtk_widget_set_name(GTK_WIDGET(browser->webView), "browser__webView"); - gtk_widget_set_tooltip_text(browser->javascript, _("Toggle javascript")); - gtk_widget_set_tooltip_text(browser->auto_load_images, _("Toggle loading images automatically")); gtk_box_pack_start(GTK_BOX(browser->toolbar), + GTK_WIDGET(browser->back), + FALSE, + FALSE, + BADWOLF_TOOLBAR_PADDING); + gtk_box_pack_start(GTK_BOX(browser->toolbar), + GTK_WIDGET(browser->forward), + FALSE, + FALSE, + BADWOLF_TOOLBAR_PADDING); + gtk_box_pack_start(GTK_BOX(browser->toolbar), + toolbar_separator, + FALSE, + FALSE, + BADWOLF_TOOLBAR_SEPARATOR_PADDING); + gtk_box_pack_start(GTK_BOX(browser->toolbar), GTK_WIDGET(browser->javascript), FALSE, FALSE, @@ -644,6 +693,10 @@ new_browser(struct Window *window, const gchar *target_url, WebKitWebView *relat gtk_entry_set_placeholder_text(GTK_ENTRY(browser->search), _("search in current page")); + /* signals for back/forward buttons */ + g_signal_connect(browser->back, "clicked", G_CALLBACK(backCb_clicked), browser); + g_signal_connect(browser->forward, "clicked", G_CALLBACK(forwardCb_clicked), browser); + /* signals for location entry widget */ g_signal_connect(browser->location, "activate", G_CALLBACK(locationCb_activate), browser); |