summaryrefslogtreecommitdiff
path: root/frontends/gtk
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2019-11-27 23:45:14 +0000
committerVincent Sanders <vince@kyllikki.org>2019-11-27 23:45:14 +0000
commit86f73b767a00dc4a78d86c3225583970149e2905 (patch)
treeb42b31a9b85b8bc1bf80b2711f2c2f09d4a17bcc /frontends/gtk
parent69236590d08edc9722f48753ebe52f7315cb6b69 (diff)
downloadnetsurf-86f73b767a00dc4a78d86c3225583970149e2905.tar.gz
netsurf-86f73b767a00dc4a78d86c3225583970149e2905.tar.bz2
ensure caret is handled correctly on gtk when focus is removed from layout
Diffstat (limited to 'frontends/gtk')
-rw-r--r--frontends/gtk/window.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/frontends/gtk/window.c b/frontends/gtk/window.c
index 3c9f6d614..39bd06bc4 100644
--- a/frontends/gtk/window.c
+++ b/frontends/gtk/window.c
@@ -303,6 +303,22 @@ nsgtk_window_motion_notify_event(GtkWidget *widget,
}
/**
+ * GTK signal handler for focus-out-event on layout
+ *
+ * when focus leaves the layout widget ensure the caret is cleared
+ */
+static gboolean
+nsgtk_window_focus_out_event(GtkWidget *widget,
+ GdkEvent *event,
+ gpointer data)
+{
+ struct gui_window *g = data;
+
+ browser_window_remove_caret(g->bw, true);
+ return FALSE;
+}
+
+/**
* GTK signal handler for button-press-event on layout
*/
static gboolean
@@ -914,6 +930,8 @@ gui_window_create(struct browser_window *bw,
nsgtk_window_size_allocate_event, g);
CONNECT(g->layout, "scroll-event",
nsgtk_window_scroll_event, g);
+ CONNECT(g->layout, "focus-out-event",
+ nsgtk_window_focus_out_event, g);
/* status pane signals */
CONNECT(g->paned, "size-allocate",