summaryrefslogtreecommitdiff
path: root/frontends/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/gtk')
-rw-r--r--frontends/gtk/corewindow.c74
-rw-r--r--frontends/gtk/page_info.c70
-rw-r--r--frontends/gtk/res/netsurf.gresource.xml3
-rw-r--r--frontends/gtk/res/pageinfo.gtk2.ui15
-rw-r--r--frontends/gtk/res/pageinfo.gtk3.ui21
-rw-r--r--frontends/gtk/resources.c1
6 files changed, 101 insertions, 83 deletions
diff --git a/frontends/gtk/corewindow.c b/frontends/gtk/corewindow.c
index 1cc8c6207..b3568c602 100644
--- a/frontends/gtk/corewindow.c
+++ b/frontends/gtk/corewindow.c
@@ -224,6 +224,10 @@ nsgtk_cw_motion_notify_event(GtkWidget *widget,
struct nsgtk_corewindow_mouse *mouse = &nsgtk_cw->mouse_state;
if (mouse->pressed == false) {
+ nsgtk_cw->mouse(nsgtk_cw,
+ BROWSER_MOUSE_HOVER,
+ event->x,
+ event->y);
return TRUE;
}
@@ -610,18 +614,20 @@ static nserror
nsgtk_cw_set_scroll(struct core_window *cw, int x, int y)
{
struct nsgtk_corewindow *nsgtk_cw = (struct nsgtk_corewindow *)cw;
- GtkAdjustment *vadj;
- GtkAdjustment *hadj;
- vadj = gtk_scrolled_window_get_vadjustment(nsgtk_cw->scrolled);
- hadj = gtk_scrolled_window_get_hadjustment(nsgtk_cw->scrolled);
+ if (nsgtk_cw->scrolled != NULL) {
+ GtkAdjustment *vadj;
+ GtkAdjustment *hadj;
- assert(vadj != NULL);
- assert(hadj != NULL);
+ vadj = gtk_scrolled_window_get_vadjustment(nsgtk_cw->scrolled);
+ hadj = gtk_scrolled_window_get_hadjustment(nsgtk_cw->scrolled);
- gtk_adjustment_set_value(vadj, y);
- gtk_adjustment_set_value(hadj, x);
+ assert(vadj != NULL);
+ assert(hadj != NULL);
+ gtk_adjustment_set_value(vadj, y);
+ gtk_adjustment_set_value(hadj, x);
+ }
return NSERROR_OK;
}
@@ -636,18 +642,23 @@ static nserror
nsgtk_cw_get_scroll(const struct core_window *cw, int *x, int *y)
{
struct nsgtk_corewindow *nsgtk_cw = (struct nsgtk_corewindow *)cw;
- GtkAdjustment *vadj;
- GtkAdjustment *hadj;
- vadj = gtk_scrolled_window_get_vadjustment(nsgtk_cw->scrolled);
- hadj = gtk_scrolled_window_get_hadjustment(nsgtk_cw->scrolled);
+ if (nsgtk_cw->scrolled != NULL) {
+ GtkAdjustment *vadj;
+ GtkAdjustment *hadj;
- assert(vadj != NULL);
- assert(hadj != NULL);
+ vadj = gtk_scrolled_window_get_vadjustment(nsgtk_cw->scrolled);
+ hadj = gtk_scrolled_window_get_hadjustment(nsgtk_cw->scrolled);
- *y = (int)(gtk_adjustment_get_value(vadj));
- *x = (int)(gtk_adjustment_get_value(hadj));
+ assert(vadj != NULL);
+ assert(hadj != NULL);
+ *y = (int)(gtk_adjustment_get_value(vadj));
+ *x = (int)(gtk_adjustment_get_value(hadj));
+ } else {
+ *x = 0;
+ *y = 0;
+ }
return NSERROR_OK;
}
@@ -664,18 +675,25 @@ nsgtk_cw_get_window_dimensions(const struct core_window *cw,
int *width, int *height)
{
struct nsgtk_corewindow *nsgtk_cw = (struct nsgtk_corewindow *)cw;
- GtkAdjustment *vadj;
- GtkAdjustment *hadj;
- gdouble page;
-
- hadj = gtk_scrolled_window_get_hadjustment(nsgtk_cw->scrolled);
- g_object_get(hadj, "page-size", &page, NULL);
- *width = page;
-
- vadj = gtk_scrolled_window_get_vadjustment(nsgtk_cw->scrolled);
- g_object_get(vadj, "page-size", &page, NULL);
- *height = page;
-
+ if (nsgtk_cw->scrolled != NULL) {
+ GtkAdjustment *vadj;
+ GtkAdjustment *hadj;
+ gdouble page;
+
+ hadj = gtk_scrolled_window_get_hadjustment(nsgtk_cw->scrolled);
+ g_object_get(hadj, "page-size", &page, NULL);
+ *width = page;
+
+ vadj = gtk_scrolled_window_get_vadjustment(nsgtk_cw->scrolled);
+ g_object_get(vadj, "page-size", &page, NULL);
+ *height = page;
+ } else {
+ GtkAllocation allocation;
+ gtk_widget_get_allocation(GTK_WIDGET(nsgtk_cw->drawing_area),
+ &allocation);
+ *width = allocation.width;
+ *height = allocation.height;
+ }
return NSERROR_OK;
}
diff --git a/frontends/gtk/page_info.c b/frontends/gtk/page_info.c
index 5e887b5dc..b7ed7ed1b 100644
--- a/frontends/gtk/page_info.c
+++ b/frontends/gtk/page_info.c
@@ -26,6 +26,7 @@
#include <gtk/gtk.h>
#include "utils/log.h"
+#include "utils/messages.h"
#include "netsurf/keypress.h"
#include "netsurf/plotters.h"
#include "netsurf/browser_window.h"
@@ -46,51 +47,29 @@ struct nsgtk_pi_window {
struct nsgtk_corewindow core;
/** GTK builder for window */
GtkBuilder *builder;
- /** GTK dialog window being shown */
- GtkDialog *dlg;
+ /** GTK window being shown */
+ GtkWindow *dlg;
/** Core page-info window */
struct page_info *pi;
};
/**
- * destroy a previously created certificate view
+ * destroy a previously created page information window
*/
-static nserror nsgtk_pi_destroy(struct nsgtk_pi_window *pi_win)
+static gboolean
+nsgtk_pi_delete_event(GtkWidget *w, GdkEvent *event, gpointer data)
{
- nserror res;
+ struct nsgtk_pi_window *pi_win;
+ pi_win = (struct nsgtk_pi_window *)data;
page_info_destroy(pi_win->pi);
- res = nsgtk_corewindow_fini(&pi_win->core);
+
+ nsgtk_corewindow_fini(&pi_win->core);
gtk_widget_destroy(GTK_WIDGET(pi_win->dlg));
g_object_unref(G_OBJECT(pi_win->builder));
free(pi_win);
- return res;
-}
-
-static void
-nsgtk_pi_accept(GtkButton *w, gpointer data)
-{
- struct nsgtk_pi_window *pi_win;
- pi_win = (struct nsgtk_pi_window *)data;
-
- nsgtk_pi_destroy(pi_win);
-}
-
-static void
-nsgtk_pi_reject(GtkWidget *w, gpointer data)
-{
- struct nsgtk_pi_window *pi_win;
- pi_win = (struct nsgtk_pi_window *)data;
-
- nsgtk_pi_destroy(pi_win);
-}
-
-static gboolean
-nsgtk_pi_delete_event(GtkWidget *w, GdkEvent *event, gpointer data)
-{
- nsgtk_pi_reject(w, data);
return FALSE;
}
@@ -169,32 +148,29 @@ nserror nsgtk_page_info(struct browser_window *bw)
struct nsgtk_pi_window *ncwin;
nserror res;
- ncwin = malloc(sizeof(struct nsgtk_pi_window));
+ ncwin = calloc(1, sizeof(struct nsgtk_pi_window));
if (ncwin == NULL) {
return NSERROR_NOMEM;
}
- res = nsgtk_builder_new_from_resname("ssl", &ncwin->builder);
+ res = nsgtk_builder_new_from_resname("pageinfo", &ncwin->builder);
if (res != NSERROR_OK) {
- NSLOG(netsurf, INFO, "SSL UI builder init failed");
+ NSLOG(netsurf, CRITICAL, "Page Info UI builder init failed %s", messages_get_errorcode(res));
free(ncwin);
return res;
}
gtk_builder_connect_signals(ncwin->builder, NULL);
- ncwin->dlg = GTK_DIALOG(gtk_builder_get_object(ncwin->builder,
- "wndSSLProblem"));
+ ncwin->dlg = GTK_WINDOW(gtk_builder_get_object(ncwin->builder,
+ "PGIWindow"));
/* set parent for transient dialog */
gtk_window_set_transient_for(GTK_WINDOW(ncwin->dlg),
nsgtk_scaffolding_window(nsgtk_current_scaffolding()));
- ncwin->core.scrolled = GTK_SCROLLED_WINDOW(
- gtk_builder_get_object(ncwin->builder, "SSLScrolled"));
-
ncwin->core.drawing_area = GTK_DRAWING_AREA(
- gtk_builder_get_object(ncwin->builder, "SSLDrawingArea"));
+ gtk_builder_get_object(ncwin->builder, "PGIDrawingArea"));
/* make the delete event call our destructor */
g_signal_connect(G_OBJECT(ncwin->dlg),
@@ -202,20 +178,6 @@ nserror nsgtk_page_info(struct browser_window *bw)
G_CALLBACK(nsgtk_pi_delete_event),
ncwin);
- /* accept button */
- g_signal_connect(G_OBJECT(gtk_builder_get_object(ncwin->builder,
- "sslaccept")),
- "clicked",
- G_CALLBACK(nsgtk_pi_accept),
- ncwin);
-
- /* reject button */
- g_signal_connect(G_OBJECT(gtk_builder_get_object(ncwin->builder,
- "sslreject")),
- "clicked",
- G_CALLBACK(nsgtk_pi_reject),
- ncwin);
-
/* initialise GTK core window */
ncwin->core.draw = nsgtk_pi_draw;
ncwin->core.key = nsgtk_pi_key;
diff --git a/frontends/gtk/res/netsurf.gresource.xml b/frontends/gtk/res/netsurf.gresource.xml
index 433581786..a41ca6ce5 100644
--- a/frontends/gtk/res/netsurf.gresource.xml
+++ b/frontends/gtk/res/netsurf.gresource.xml
@@ -12,11 +12,12 @@
<file>hotlist.gtk2.ui</file>
<file>netsurf.gtk3.ui</file>
<file>ssl.gtk2.ui</file>
+ <file>ssl.gtk3.ui</file>
+ <file>pageinfo.gtk3.ui</file>
<file>toolbar.gtk3.ui</file>
<file>downloads.gtk2.ui</file>
<file>hotlist.gtk3.ui</file>
<file>options.gtk2.ui</file>
- <file>ssl.gtk3.ui</file>
<file>viewdata.gtk2.ui</file>
<file>downloads.gtk3.ui</file>
<file>options.gtk3.ui</file>
diff --git a/frontends/gtk/res/pageinfo.gtk2.ui b/frontends/gtk/res/pageinfo.gtk2.ui
new file mode 100644
index 000000000..b690d9c53
--- /dev/null
+++ b/frontends/gtk/res/pageinfo.gtk2.ui
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk+" version="2.24"/>
+ <!-- interface-naming-policy project-wide -->
+ <object class="GtkWindow" id="PGIWindow">
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkDrawingArea" id="PGIDrawingArea">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/frontends/gtk/res/pageinfo.gtk3.ui b/frontends/gtk/res/pageinfo.gtk3.ui
new file mode 100644
index 000000000..6ea876e14
--- /dev/null
+++ b/frontends/gtk/res/pageinfo.gtk3.ui
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkWindow" id="PGIWindow">
+ <property name="can_focus">False</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_STRUCTURE_MASK</property>
+ <property name="resizable">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkDrawingArea" id="PGIDrawingArea">
+ <property name="name">PGIDrawingArea</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/frontends/gtk/resources.c b/frontends/gtk/resources.c
index a60119ae1..18f0e374f 100644
--- a/frontends/gtk/resources.c
+++ b/frontends/gtk/resources.c
@@ -87,6 +87,7 @@ static struct nsgtk_resource_s ui_resource[] = {
RES_ENTRY("cookies"),
RES_ENTRY("viewdata"),
RES_ENTRY("warning"),
+ RES_ENTRY("pageinfo"),
{ NULL, 0, NSGTK_RESOURCE_FILE, NULL },
};