diff options
author | Nelson Benitez Leon <[email protected]> | 2013-08-14 10:37:03 +0200 |
---|---|---|
committer | raveit65 <[email protected]> | 2017-08-14 20:02:44 +0200 |
commit | 74c480343a89e8fcabc3b1e8d71d77db8c039c75 (patch) | |
tree | 7353a400d480ab2c71a141cd52e593fbf2d85c40 | |
parent | ce879aea4038548fa04beacf3ed0df1b8684ebbe (diff) | |
download | atril-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.c | 22 |
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; } |