[evince/gnome-3-10] libview: fix annotation window focus change after creation



commit c5220b520c145a936653988caa401f4e3a48098f
Author: Nelson Benitez Leon <nbenitezl gmail com>
Date:   Wed Aug 14 10:37:03 2013 +0200

    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

 libview/ev-annotation-window.c |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)
---
diff --git a/libview/ev-annotation-window.c b/libview/ev-annotation-window.c
index f53874e..f31dec6 100644
--- a/libview/ev-annotation-window.c
+++ b/libview/ev-annotation-window.c
@@ -258,14 +258,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
@@ -317,8 +317,8 @@ ev_annotation_window_init (EvAnnotationWindow *window)
        swindow = gtk_scrolled_window_new (NULL, NULL);
        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),
+       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);
@@ -492,6 +492,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;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]