diff options
author | Vincent Sanders <vince@kyllikki.org> | 2019-08-31 23:53:51 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-09-21 10:53:41 +0100 |
commit | 2e8861dc05325c88cfb8130e7eddd0967e4d4b09 (patch) | |
tree | e2b97ebfd3f79f3045b0232e13d682bda5bc3b33 /frontends/gtk/toolbar.c | |
parent | e84990bc891c7a75930fddd614516d3eb170cd75 (diff) | |
download | netsurf-2e8861dc05325c88cfb8130e7eddd0967e4d4b09.tar.gz netsurf-2e8861dc05325c88cfb8130e7eddd0967e4d4b09.tar.bz2 |
make web search icon setting work properly
Diffstat (limited to 'frontends/gtk/toolbar.c')
-rw-r--r-- | frontends/gtk/toolbar.c | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/frontends/gtk/toolbar.c b/frontends/gtk/toolbar.c index 694c27109..ae87010a6 100644 --- a/frontends/gtk/toolbar.c +++ b/frontends/gtk/toolbar.c @@ -67,6 +67,8 @@ #include "gtk/hotlist.h" #include "gtk/cookies.h" #include "gtk/about.h" +#include "gtk/gdk.h" +#include "gtk/bitmap.h" #include "gtk/toolbar.h" /** @@ -641,8 +643,12 @@ make_toolbar_item_websearch(void) GTK_ICON_SIZE_LARGE_TOOLBAR)), "[websearch]"); } else { - GtkWidget *entry = nsgtk_entry_new(); + nserror res; + GtkWidget *entry; + struct bitmap *bitmap; + GdkPixbuf *pixbuf = NULL; + entry = nsgtk_entry_new(); item = gtk_tool_item_new(); if ((entry == NULL) || (item == NULL)) { @@ -651,9 +657,21 @@ make_toolbar_item_websearch(void) gtk_widget_set_size_request(entry, NSGTK_WEBSEARCH_WIDTH, -1); - nsgtk_entry_set_icon_from_stock(entry, - GTK_ENTRY_ICON_PRIMARY, - NSGTK_STOCK_INFO); + res = search_web_get_provider_bitmap(&bitmap); + if ((res == NSERROR_OK) && (bitmap != NULL)) { + pixbuf = nsgdk_pixbuf_get_from_surface(bitmap->surface, + 16, 16); + } + + if (pixbuf != NULL) { + nsgtk_entry_set_icon_from_pixbuf(entry, + GTK_ENTRY_ICON_PRIMARY, + pixbuf); + } else { + nsgtk_entry_set_icon_from_stock(entry, + GTK_ENTRY_ICON_PRIMARY, + NSGTK_STOCK_INFO); + } gtk_container_add(GTK_CONTAINER(item), entry); } @@ -3629,6 +3647,33 @@ nserror nsgtk_toolbar_set_url(struct nsgtk_toolbar *tb, nsurl *url) /* exported interface documented in toolbar.h */ nserror +nsgtk_toolbar_set_websearch_image(struct nsgtk_toolbar *tb, GdkPixbuf *pixbuf) +{ + GtkWidget *entry; + + if (tb->buttons[WEBSEARCH_ITEM]->button == NULL) { + /* no toolbar item */ + return NSERROR_INVALID; + } + + entry = gtk_bin_get_child(GTK_BIN(tb->buttons[WEBSEARCH_ITEM]->button)); + + if (pixbuf != NULL) { + nsgtk_entry_set_icon_from_pixbuf(entry, + GTK_ENTRY_ICON_PRIMARY, + pixbuf); + } else { + nsgtk_entry_set_icon_from_stock(entry, + GTK_ENTRY_ICON_PRIMARY, + NSGTK_STOCK_INFO); + } + + return NSERROR_OK; +} + + +/* exported interface documented in toolbar.h */ +nserror nsgtk_toolbar_item_activate(struct nsgtk_toolbar *tb, nsgtk_toolbar_button itemid) { |