summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNelson Benitez Leon <[email protected]>2013-08-14 10:37:03 +0200
committerraveit65 <[email protected]>2017-08-14 20:02:44 +0200
commit74c480343a89e8fcabc3b1e8d71d77db8c039c75 (patch)
tree7353a400d480ab2c71a141cd52e593fbf2d85c40
parentce879aea4038548fa04beacf3ed0df1b8684ebbe (diff)
downloadatril-74c480343a89e8fcabc3b1e8d71d77db8c039c75.tar.bz2
atril-74c480343a89e8fcabc3b1e8d71d77db8c039c75.tar.xz
libview: fix annotation window focus change after creation
Be able to start entering text right after selecting or creating an annotation, also hide text cursor when window goes unfocused (backdrop state). https://bugzilla.gnome.org/show_bug.cgi?id=668446 taken from: https://git.gnome.org/browse/evince/commit/?id=fc8fe57
-rw-r--r--libview/ev-annotation-window.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/libview/ev-annotation-window.c b/libview/ev-annotation-window.c
index 6e0ee9ed..776187f2 100644
--- a/libview/ev-annotation-window.c
+++ b/libview/ev-annotation-window.c
@@ -247,14 +247,14 @@ ev_annotation_window_set_resize_cursor (GtkWidget *widget,
}
}
-static gboolean
-text_view_button_press (GtkWidget *widget,
- GdkEventButton *event,
- EvAnnotationWindow *window)
+static void
+text_view_state_flags_changed (GtkWidget *widget,
+ GtkStateFlags previous_flags)
{
- ev_annotation_window_grab_focus (window);
+ GtkStateFlags current_flags = gtk_widget_get_state_flags (widget);
- return FALSE;
+ if (current_flags & GTK_STATE_FLAG_BACKDROP)
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (widget), FALSE);
}
static void
@@ -315,9 +315,9 @@ ev_annotation_window_init (EvAnnotationWindow *window)
GTK_POLICY_AUTOMATIC);
window->text_view = gtk_text_view_new ();
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (window->text_view), GTK_WRAP_WORD);
- g_signal_connect (window->text_view, "button_press_event",
- G_CALLBACK (text_view_button_press),
- window);
+ g_signal_connect (window->text_view, "state-flags-changed",
+ G_CALLBACK (text_view_state_flags_changed),
+ window);
gtk_container_add (GTK_CONTAINER (swindow), window->text_view);
gtk_widget_show (window->text_view);
@@ -493,6 +493,10 @@ ev_annotation_window_focus_in_event (GtkWidget *widget,
window->in_move = FALSE;
}
+ gtk_widget_grab_focus (window->text_view);
+ send_focus_change (window->text_view, TRUE);
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (window->text_view), TRUE);
+
return FALSE;
}