evince r2860 - in trunk: . shell



Author: carlosgc
Date: Sat Jan 26 15:59:00 2008
New Revision: 2860
URL: http://svn.gnome.org/viewvc/evince?rev=2860&view=rev

Log:
2008-01-26  Carlos Garcia Campos  <carlosgc gnome org>
	* shell/ev-view.[ch]: (ev_view_button_release_event),
	(ev_view_autoscroll_start), (ev_view_autoscroll_stop):
	* shell/ev-window.c: (ev_window_cmd_view_autoscroll),
	(ev_window_cmd_escape):
	Stop autoscroll when Escape key is pressed. Fixes bug #511635.


Modified:
   trunk/ChangeLog
   trunk/shell/ev-view.c
   trunk/shell/ev-view.h
   trunk/shell/ev-window.c

Modified: trunk/shell/ev-view.c
==============================================================================
--- trunk/shell/ev-view.c	(original)
+++ trunk/shell/ev-view.c	Sat Jan 26 15:59:00 2008
@@ -3135,12 +3135,7 @@
 	view->image_dnd_info.in_drag = FALSE;
 
 	if (view->scroll_info.autoscrolling) {
-		view->scroll_info.autoscrolling = FALSE;
-		if (view->scroll_info.timeout_id) {
-			g_source_remove (view->scroll_info.timeout_id);
-			view->scroll_info.timeout_id = 0;
-		}
-		ev_view_handle_cursor_over_xy (view, event->x, event->y);
+		ev_view_autoscroll_stop (view);
 		view->pressed_button = -1;
 
 		return TRUE;
@@ -4467,10 +4462,42 @@
 }
 
 void
-ev_view_autoscroll (EvView *view)
+ev_view_autoscroll_start (EvView *view)
 {
+	gint x, y;
+	
+	g_return_if_fail (EV_IS_VIEW (view));
+
+	if (view->scroll_info.autoscrolling)
+		return;
+	
 	view->scroll_info.autoscrolling = TRUE;
-	view->scroll_info.timeout_id = g_timeout_add (20, (GSourceFunc)(ev_view_autoscroll_cb), view);
+	view->scroll_info.timeout_id =
+		g_timeout_add (20, (GSourceFunc)ev_view_autoscroll_cb,
+			       view);
+	
+	gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y);
+	ev_view_handle_cursor_over_xy (view, x, y);
+}
+
+void
+ev_view_autoscroll_stop (EvView *view)
+{
+	gint x, y;
+	
+	g_return_if_fail (EV_IS_VIEW (view));
+
+	if (!view->scroll_info.autoscrolling)
+		return;
+
+	view->scroll_info.autoscrolling = FALSE;
+	if (view->scroll_info.timeout_id) {
+		g_source_remove (view->scroll_info.timeout_id);
+		view->scroll_info.timeout_id = 0;
+	}
+
+	gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y);
+	ev_view_handle_cursor_over_xy (view, x, y);
 }
 
 void

Modified: trunk/shell/ev-view.h
==============================================================================
--- trunk/shell/ev-view.h	(original)
+++ trunk/shell/ev-view.h	Sat Jan 26 15:59:00 2008
@@ -144,7 +144,8 @@
 
 void           ev_view_update_view_size (EvView *view, GtkScrolledWindow *scrolled_window);
 
-void	       ev_view_autoscroll	  (EvView *view);
+void	       ev_view_autoscroll_start   (EvView *view);
+void           ev_view_autoscroll_stop    (EvView *view);
 
 G_END_DECLS
 

Modified: trunk/shell/ev-window.c
==============================================================================
--- trunk/shell/ev-window.c	(original)
+++ trunk/shell/ev-window.c	Sat Jan 26 15:59:00 2008
@@ -3302,7 +3302,7 @@
 static void
 ev_window_cmd_view_autoscroll (GtkAction *action, EvWindow *ev_window)
 {
-	ev_view_autoscroll (EV_VIEW (ev_window->priv->view));
+	ev_view_autoscroll_start (EV_VIEW (ev_window->priv->view));
 }
 
 static void
@@ -3505,6 +3505,8 @@
 {
 	GtkWidget *widget;
 
+	ev_view_autoscroll_stop (window->priv->view);
+	
 	widget = gtk_window_get_focus (GTK_WINDOW (window));
 	if (widget && gtk_widget_get_ancestor (widget, EGG_TYPE_FIND_BAR)) {
 		update_chrome_flag (window, EV_CHROME_FINDBAR, FALSE);



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