]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-view.c
Clear status message when pointer leaves view. Fix for bug
[evince.git] / shell / ev-view.c
index 476c791b0a93cde94367c4325a18bed6e5f37ddf..cf79ded0ba8b20f263cf308903e628a7e56ea7e6 100644 (file)
@@ -258,6 +258,8 @@ static gboolean   ev_view_motion_notify_event                (GtkWidget
                                                              GdkEventMotion     *event);
 static gboolean   ev_view_button_release_event               (GtkWidget          *widget,
                                                              GdkEventButton     *event);
+static gboolean   ev_view_leave_notify_event                 (GtkWidget          *widget,
+                                                             GdkEventCrossing   *event);
 
 /*** Drawing ***/
 static guint32    ev_gdk_color_to_rgb                        (const GdkColor     *color);
@@ -372,6 +374,10 @@ scroll_to_current_page (EvView *view, GtkOrientation orientation)
        GdkRectangle page_area;
        GtkBorder border;
 
+       if (view->document == NULL) {
+               return;
+       }
+
        get_page_extents (view, view->current_page, &page_area, &border);
 
        if (orientation == GTK_ORIENTATION_VERTICAL) {
@@ -1484,6 +1490,20 @@ ev_view_button_release_event (GtkWidget      *widget,
        return FALSE;
 }
 
+static gboolean
+ev_view_leave_notify_event (GtkWidget *widget, GdkEventCrossing   *event)
+{
+       EvView *view = EV_VIEW (widget);
+    
+       ev_view_set_status (view, NULL);
+
+       if (view->cursor == EV_VIEW_CURSOR_LINK ||
+           view->cursor == EV_VIEW_CURSOR_IBEAM)
+               ev_view_set_cursor (view, EV_VIEW_CURSOR_NORMAL);
+
+       return FALSE;
+}
+
 /*** Drawing ***/
 
 static guint32
@@ -1790,6 +1810,7 @@ ev_view_class_init (EvViewClass *class)
        widget_class->realize = ev_view_realize;
        widget_class->unrealize = ev_view_unrealize;
        widget_class->scroll_event = ev_view_scroll_event;
+       widget_class->leave_notify_event = ev_view_leave_notify_event;
        gtk_object_class->destroy = ev_view_destroy;
 
        class->set_scroll_adjustments = ev_view_set_scroll_adjustments;
@@ -2095,6 +2116,14 @@ ev_view_get_zoom (EvView *view)
        return view->scale;
 }
 
+gboolean
+ev_view_get_continuous (EvView *view)
+{
+       g_return_val_if_fail (EV_IS_VIEW (view), FALSE);
+
+       return view->continuous;
+}
+
 void
 ev_view_set_continuous (EvView   *view,
                        gboolean  continuous)
@@ -2112,6 +2141,14 @@ ev_view_set_continuous (EvView   *view,
        g_object_notify (G_OBJECT (view), "continuous");
 }
 
+gboolean
+ev_view_get_dual_page (EvView *view)
+{
+       g_return_val_if_fail (EV_IS_VIEW (view), FALSE);
+
+       return view->dual_page;
+}
+
 void
 ev_view_set_dual_page (EvView   *view,
                       gboolean  dual_page)
@@ -2141,11 +2178,12 @@ ev_view_set_fullscreen (EvView   *view,
 
        fullscreen = fullscreen != FALSE;
 
-       if (view->fullscreen != fullscreen) {
-               view->fullscreen = fullscreen;
-               gtk_widget_queue_resize (GTK_WIDGET (view));
-       }
-
+       if (view->fullscreen == fullscreen) 
+               return;
+               
+       view->fullscreen = fullscreen;
+       gtk_widget_queue_resize (GTK_WIDGET (view));
+       
        g_object_notify (G_OBJECT (view), "fullscreen");
 }
 
@@ -2169,7 +2207,9 @@ ev_view_set_presentation (EvView   *view,
                return;
 
        view->presentation = presentation;
+       view->pending_scroll = SCROLL_TO_CURRENT_PAGE;
        gtk_widget_queue_resize (GTK_WIDGET (view));
+
        if (GTK_WIDGET_REALIZED (view)) {
                if (view->presentation)
                        gdk_window_set_background (GTK_WIDGET(view)->window,