gedit r6229 - in trunk: . gedit



Author: pborelli
Date: Sat Apr  5 15:54:20 2008
New Revision: 6229
URL: http://svn.gnome.org/viewvc/gedit?rev=6229&view=rev

Log:
2008-04-05  Paolo Borelli  <pborelli katamail com>

	* gedut/gedit-print-preview.c: fix scrolling problem when scrolling
	with the keyboard arrows.



Modified:
   trunk/ChangeLog
   trunk/gedit/gedit-print-preview.c

Modified: trunk/gedit/gedit-print-preview.c
==============================================================================
--- trunk/gedit/gedit-print-preview.c	(original)
+++ trunk/gedit/gedit-print-preview.c	Sat Apr  5 15:54:20 2008
@@ -784,26 +784,36 @@
 			  GeditPrintPreview *preview)
 {
 	GeditPrintPreviewPrivate *priv;
+	GtkAdjustment *hadj, *vadj;
 	double x, y;
 	guint h, w;
-	double lower, upper;
-	double page_size;
+	double hlower, hupper, vlower, vupper;
+	double hpage, vpage;
 	double hstep, vstep;
 	gboolean domove = FALSE;
 	gboolean ret = TRUE;
 
 	priv = preview->priv;
 
-	x = gtk_layout_get_hadjustment (GTK_LAYOUT (priv->layout))->value;
-	y = gtk_layout_get_vadjustment (GTK_LAYOUT (priv->layout))->value;
-	gtk_layout_get_size (GTK_LAYOUT (priv->layout), &w, &h);
+	hadj = gtk_layout_get_hadjustment (GTK_LAYOUT (priv->layout));
+	vadj = gtk_layout_get_vadjustment (GTK_LAYOUT (priv->layout));
+
+	x = hadj->value;
+	y = vadj->value;
 
-	g_object_get (gtk_layout_get_vadjustment (GTK_LAYOUT (priv->layout)),
-		      "lower", &lower,
-		      "upper", &upper,
-		      "page-size", &page_size,
+	g_object_get (hadj,
+		      "lower", &hlower,
+		      "upper", &hupper,
+		      "page-size", &hpage,
+		      NULL);
+	g_object_get (vadj,
+		      "lower", &vlower,
+		      "upper", &vupper,
+		      "page-size", &vpage,
 		      NULL);
 
+	gtk_layout_get_size (GTK_LAYOUT (priv->layout), &w, &h);
+
 	hstep = 10;
 	vstep = 10;
 
@@ -824,31 +834,31 @@
 	case GDK_KP_Right:
 	case GDK_Right:
 		if (event->state & GDK_SHIFT_MASK)
-			x += w;
+			x = hupper - hpage;
 		else
-			x += hstep;
+			x = MIN (hupper - hpage, x + hstep);
 		domove = TRUE;
 		break;
 	case GDK_KP_Left:
 	case GDK_Left:
 		if (event->state & GDK_SHIFT_MASK)
-			x -= w;
+			x = hlower;
 		else
-			x -= hstep;
+			x = MAX (hlower, x - hstep);
 		domove = TRUE;
 		break;
 	case GDK_KP_Up:
 	case GDK_Up:
 		if (event->state & GDK_SHIFT_MASK)
 			goto page_up;
-		y -= vstep;
+		y = MAX (vlower, y - vstep);
 		domove = TRUE;
 		break;
 	case GDK_KP_Down:
 	case GDK_Down:
 		if (event->state & GDK_SHIFT_MASK)
 			goto page_down;
-		y += vstep;
+		y = MIN (vupper - vpage, y + vstep);
 		domove = TRUE;
 		break;
 	case GDK_KP_Page_Up:
@@ -857,17 +867,17 @@
 	case GDK_KP_Delete:
 	case GDK_BackSpace:
 	page_up:
-		if (y <= lower)
+		if (y <= vlower)
 		{
 			if (preview->priv->cur_page > 0)
 			{
 				goto_page (preview, preview->priv->cur_page - 1);
-				y = (upper - page_size);
+				y = (vupper - vpage);
 			}
 		}
 		else
 		{
-			y = lower;
+			y = vlower;
 		}
 		domove = TRUE;
 		break;
@@ -875,17 +885,17 @@
 	case GDK_Page_Down:
 	case ' ':
 	page_down:
-		if (y >= (upper - page_size))
+		if (y >= (vupper - vpage))
 		{
 			if (preview->priv->cur_page < preview->priv->n_pages - 1)
 			{
 				goto_page (preview, preview->priv->cur_page + 1);
-				y = lower;
+				y = vlower;
 			}
 		}
 		else
 		{
-			y = (upper - page_size);
+			y = (vupper - vpage);
 		}
 		domove = TRUE;
 		break;
@@ -923,11 +933,6 @@
 
 	if (domove)
 	{
-		GtkAdjustment *hadj, *vadj;
-
-		hadj = gtk_layout_get_hadjustment (GTK_LAYOUT (priv->layout));
-		vadj = gtk_layout_get_vadjustment (GTK_LAYOUT (priv->layout));
-
 		gtk_adjustment_set_value (hadj, x);
 		gtk_adjustment_set_value (vadj, y);
 



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