summaryrefslogtreecommitdiff
path: root/frontends
diff options
context:
space:
mode:
Diffstat (limited to 'frontends')
-rw-r--r--frontends/gtk/gui.c58
-rw-r--r--frontends/gtk/resources.c10
-rw-r--r--frontends/gtk/toolbar.c57
-rw-r--r--frontends/gtk/toolbar.h9
-rw-r--r--frontends/gtk/window.c13
5 files changed, 136 insertions, 11 deletions
diff --git a/frontends/gtk/gui.c b/frontends/gtk/gui.c
index 609662e05..c65c360fb 100644
--- a/frontends/gtk/gui.c
+++ b/frontends/gtk/gui.c
@@ -258,35 +258,73 @@ static nserror set_defaults(struct nsoption_s *defaults)
return NSERROR_OK;
}
+#if GTK_CHECK_VERSION(3,14,0)
/**
* adds named icons into gtk theme
*/
static nserror nsgtk_add_named_icons_to_theme(void)
{
-#if GTK_CHECK_VERSION(3,14,0)
gtk_icon_theme_add_resource_path(gtk_icon_theme_get_default(),
"/org/netsurf/icons");
+ return NSERROR_OK;
+}
+
#else
+
+static nserror
+add_builtin_icon(const char *prefix, const char *name, int x, int y)
+{
GdkPixbuf *pixbuf;
nserror res;
-
- res = nsgdk_pixbuf_new_from_resname("icons/local-history.png", &pixbuf);
- if (res != NSERROR_OK) {
- pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8, 8, 32);
+ char *resname;
+ int resnamelen;
+
+ /* resource name string length allowing for / .png and termination */
+ resnamelen = strlen(prefix) + strlen(name) + 5 + 1 + 4 + 1;
+ resname = malloc(resnamelen);
+ if (resname == NULL) {
+ return NSERROR_NOMEM;
}
- gtk_icon_theme_add_builtin_icon("local-history", 32, pixbuf);
+ snprintf(resname, resnamelen, "icons%s/%s.png", prefix, name);
- res = nsgdk_pixbuf_new_from_resname("icons/show-cookie.png", &pixbuf);
+ res = nsgdk_pixbuf_new_from_resname(resname, &pixbuf);
+ NSLOG(netsurf, WARNING, "%d %s", res, resname);
+ free(resname);
if (res != NSERROR_OK) {
- pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8, 24, 24);
+ pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8, x, y);
}
- gtk_icon_theme_add_builtin_icon("show-cookie", 24, pixbuf);
+ gtk_icon_theme_add_builtin_icon(name, y, pixbuf);
-#endif
return NSERROR_OK;
}
+/**
+ * adds named icons into gtk theme
+ */
+static nserror nsgtk_add_named_icons_to_theme(void)
+{
+ /* these must also be in gtk/resources.c pixbuf_resource *and*
+ * gtk/res/netsurf.gresource.xml
+ */
+ add_builtin_icon("", "local-history", 8, 32);
+ add_builtin_icon("", "show-cookie", 24, 24);
+ add_builtin_icon("/24x24/actions", "page-info-insecure", 24, 24);
+ add_builtin_icon("/24x24/actions", "page-info-internal", 24, 24);
+ add_builtin_icon("/24x24/actions", "page-info-local", 24, 24);
+ add_builtin_icon("/24x24/actions", "page-info-secure", 24, 24);
+ add_builtin_icon("/24x24/actions", "page-info-warning", 24, 24);
+ add_builtin_icon("/48x48/actions", "page-info-insecure", 48, 48);
+ add_builtin_icon("/48x48/actions", "page-info-internal", 48, 48);
+ add_builtin_icon("/48x48/actions", "page-info-local", 48, 48);
+ add_builtin_icon("/48x48/actions", "page-info-secure", 48, 48);
+ add_builtin_icon("/48x48/actions", "page-info-warning", 48, 48);
+
+ return NSERROR_OK;
+}
+
+#endif
+
/**
* Initialize GTK specific parts of the browser.
diff --git a/frontends/gtk/resources.c b/frontends/gtk/resources.c
index f48ddb410..61853e458 100644
--- a/frontends/gtk/resources.c
+++ b/frontends/gtk/resources.c
@@ -97,6 +97,16 @@ static struct nsgtk_resource_s pixbuf_resource[] = {
RES_ENTRY("menu_cursor.png"),
RES_ENTRY("icons/local-history.png"),
RES_ENTRY("icons/show-cookie.png"),
+ RES_ENTRY("icons/24x24/actions/page-info-insecure.png"),
+ RES_ENTRY("icons/24x24/actions/page-info-internal.png"),
+ RES_ENTRY("icons/24x24/actions/page-info-local.png"),
+ RES_ENTRY("icons/24x24/actions/page-info-secure.png"),
+ RES_ENTRY("icons/24x24/actions/page-info-warning.png"),
+ RES_ENTRY("icons/48x48/actions/page-info-insecure.png"),
+ RES_ENTRY("icons/48x48/actions/page-info-internal.png"),
+ RES_ENTRY("icons/48x48/actions/page-info-local.png"),
+ RES_ENTRY("icons/48x48/actions/page-info-secure.png"),
+ RES_ENTRY("icons/48x48/actions/page-info-warning.png"),
RES_ENTRY("throbber/throbber0.png"),
RES_ENTRY("throbber/throbber1.png"),
RES_ENTRY("throbber/throbber2.png"),
diff --git a/frontends/gtk/toolbar.c b/frontends/gtk/toolbar.c
index 31ccfed3d..f191bc174 100644
--- a/frontends/gtk/toolbar.c
+++ b/frontends/gtk/toolbar.c
@@ -320,7 +320,7 @@ make_toolbar_item_url_bar(bool sensitivity, bool edit)
}
nsgtk_entry_set_icon_from_icon_name(entry,
GTK_ENTRY_ICON_PRIMARY,
- "page-info-local");
+ "page-info-internal");
if (edit) {
gtk_entry_set_width_chars(GTK_ENTRY(entry), 9);
@@ -3551,6 +3551,61 @@ nserror nsgtk_toolbar_throbber(struct nsgtk_toolbar *tb, bool active)
/* exported interface documented in toolbar.h */
+nserror nsgtk_toolbar_page_info_change(struct nsgtk_toolbar *tb)
+{
+ GtkEntry *url_entry;
+ browser_window_page_info_state pistate;
+ struct browser_window *bw;
+ const char *icon_name;
+
+ if (tb->items[URL_BAR_ITEM].button == NULL) {
+ /* no toolbar item */
+ return NSERROR_INVALID;
+ }
+ url_entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(tb->items[URL_BAR_ITEM].button)));
+
+ bw = tb->get_bw(tb->get_ctx);
+
+ pistate = browser_window_get_page_info_state(bw);
+
+ switch (pistate) {
+ case PAGE_STATE_INTERNAL:
+ icon_name = "page-info-internal";
+ break;
+
+ case PAGE_STATE_LOCAL:
+ icon_name = "page-info-local";
+ break;
+
+ case PAGE_STATE_INSECURE:
+ icon_name = "page-info-insecure";
+ break;
+
+ case PAGE_STATE_SECURE_OVERRIDE:
+ icon_name = "page-info-warning";
+ break;
+
+ case PAGE_STATE_SECURE_ISSUES:
+ icon_name = "page-info-warning";
+ break;
+
+ case PAGE_STATE_SECURE:
+ icon_name = "page-info-secure";
+ break;
+
+ default:
+ icon_name = "page-info-internal";
+ break;
+ }
+
+ nsgtk_entry_set_icon_from_icon_name(GTK_WIDGET(url_entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ icon_name);
+ return NSERROR_OK;
+}
+
+
+/* exported interface documented in toolbar.h */
nserror nsgtk_toolbar_set_url(struct nsgtk_toolbar *tb, nsurl *url)
{
size_t idn_url_l;
diff --git a/frontends/gtk/toolbar.h b/frontends/gtk/toolbar.h
index 6be45b030..9bb859be1 100644
--- a/frontends/gtk/toolbar.h
+++ b/frontends/gtk/toolbar.h
@@ -64,6 +64,15 @@ nserror nsgtk_toolbar_throbber(struct nsgtk_toolbar *tb, bool active);
/**
+ * Page info has changed state
+ *
+ * \param toolbar A toolbar returned from a creation
+ * \return NSERROR_OK on success
+ */
+nserror nsgtk_toolbar_page_info_change(struct nsgtk_toolbar *tb);
+
+
+/**
* Update the toolbar url entry
*
* \param toolbar A toolbar returned from a creation
diff --git a/frontends/gtk/window.c b/frontends/gtk/window.c
index 39bd06bc4..39b7413d3 100644
--- a/frontends/gtk/window.c
+++ b/frontends/gtk/window.c
@@ -1445,6 +1445,15 @@ static nserror throbber(struct gui_window *gw, bool active)
/**
+ * handle page info changing
+ */
+static nserror page_info_change(struct gui_window *gw)
+{
+ nsgtk_toolbar_page_info_change(gw->toolbar);
+ return NSERROR_OK;
+}
+
+/**
* GTK window UI callback to process miscellaneous events
*
* \param gw The window receiving the event.
@@ -1475,6 +1484,10 @@ gui_window_event(struct gui_window *gw, enum gui_window_event event)
throbber(gw, false);
break;
+ case GW_EVENT_PAGE_INFO_CHANGE:
+ page_info_change(gw);
+ break;
+
default:
break;
}