[gthumb] Revert "image-viewer: clip the expose event region only ones"



commit a8a71394a8f866fb90783eaa13905e11bd29d316
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sat Jan 15 16:52:36 2011 +0100

    Revert "image-viewer: clip the expose event region only ones"
    
    This reverts commit 7c7c3e038e26c9eb5db5ccd74141b6626c149e1f.

 gthumb/gth-image-selector.c |   20 ++++++++-----
 gthumb/gth-image-viewer.c   |   67 ++++++++++++++++++------------------------
 2 files changed, 41 insertions(+), 46 deletions(-)
---
diff --git a/gthumb/gth-image-selector.c b/gthumb/gth-image-selector.c
index 59dd63e..eadf676 100644
--- a/gthumb/gth-image-selector.c
+++ b/gthumb/gth-image-selector.c
@@ -583,13 +583,17 @@ paint_background (GthImageSelector *self,
 				       self->priv->viewer->y_offset - self->priv->viewer->image_area.y,
 				       &self->priv->viewer->image_area,
 				       event->region,
-				       GDK_INTERP_NEAREST);
+				       GDK_INTERP_TILES);
 
-	if (! self->priv->viewer->dragging) { /* make the background darker */
+	/* make the background darker */
+	{
 		GdkRectangle *rects;
 		int           n_rects;
 		int           i;
 
+		cairo_save (cr);
+		gdk_cairo_region (cr, event->region);
+		cairo_clip (cr);
 		gdk_cairo_rectangle (cr, &self->priv->viewer->image_area);
 		cairo_clip (cr);
 		cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.5);
@@ -601,6 +605,7 @@ paint_background (GthImageSelector *self,
 				cairo_rectangle (cr, paint_area.x, paint_area.y, paint_area.width, paint_area.height);
 		}
 		cairo_fill (cr);
+		cairo_restore (cr);
 
 		g_free (rects);
 	}
@@ -625,10 +630,9 @@ paint_selection (GthImageSelector *self,
 				       self->priv->viewer->y_offset - self->priv->viewer->image_area.y,
 				       &selection_area,
 				       event->region,
-				       GDK_INTERP_NEAREST);
+				       GDK_INTERP_TILES);
 
 	cairo_save (cr);
-
 #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 9, 2)
 	cairo_set_operator (cr, CAIRO_OPERATOR_DIFFERENCE);
 	cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
@@ -636,6 +640,8 @@ paint_selection (GthImageSelector *self,
 	cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
 #endif
 
+
+	gdk_cairo_region (cr, event->region);
 	gdk_cairo_rectangle (cr, &selection_area);
 	cairo_clip (cr);
 
@@ -680,8 +686,8 @@ paint_selection (GthImageSelector *self,
 	cairo_rectangle (cr,
 			 selection_area.x + 0.5,
 			 selection_area.y + 0.5,
-			 selection_area.width - 1,
-			 selection_area.height - 1);
+			 selection_area.width,
+			 selection_area.height);
 	cairo_stroke (cr);
 
 	cairo_restore (cr);
@@ -787,7 +793,6 @@ gth_image_selector_button_release (GthImageViewerTool *base,
 	update_cursor (self,
 		       event->x + self->priv->viewer->x_offset,
 		       event->y + self->priv->viewer->y_offset);
-	gtk_widget_queue_draw (GTK_WIDGET (self->priv->viewer));
 
 	return FALSE;
 }
@@ -960,7 +965,6 @@ gth_image_selector_button_press (GthImageViewerTool *base,
 		self->priv->viewer->pressed = TRUE;
 		self->priv->viewer->dragging = TRUE;
 		self->priv->drag_start_selection_area = self->priv->selection_area;
-		gtk_widget_queue_draw (GTK_WIDGET (self->priv->viewer));
 		retval = TRUE;
 	}
 
diff --git a/gthumb/gth-image-viewer.c b/gthumb/gth-image-viewer.c
index be9b551..45f00de 100644
--- a/gthumb/gth-image-viewer.c
+++ b/gthumb/gth-image-viewer.c
@@ -570,15 +570,15 @@ gth_image_viewer_size_allocate (GtkWidget     *widget,
 
 		if (width > gdk_width)
 			self->x_offset = CLAMP (self->x_offset,
-						0,
-						width - gdk_width);
+						  0,
+						  width - gdk_width);
 		else
 			self->x_offset = 0;
 
 		if (height > gdk_height)
 			self->y_offset = CLAMP (self->y_offset,
-						0,
-						height - gdk_height);
+						  0,
+						  height - gdk_height);
 		else
 			self->y_offset = 0;
 
@@ -589,48 +589,40 @@ gth_image_viewer_size_allocate (GtkWidget     *widget,
 
 		/* Change adjustment values. */
 
-		gtk_adjustment_configure (self->hadj,
-					  self->x_offset,
-					  0.0,
-					  width,
-					  STEP_INCREMENT,
-					  gdk_width / 2,
-					  gdk_width);
-		gtk_adjustment_configure (self->vadj,
-					  self->y_offset,
-					  0.0,
-					  height,
-					  STEP_INCREMENT,
-					  gdk_height / 2,
-					  gdk_height);
+		gtk_adjustment_set_lower (self->hadj, 0.0);
+		gtk_adjustment_set_upper (self->hadj, width);
+		gtk_adjustment_set_value (self->hadj, self->x_offset);
+		gtk_adjustment_set_step_increment (self->hadj, STEP_INCREMENT);
+		gtk_adjustment_set_page_increment (self->hadj, gdk_width / 2);
+		gtk_adjustment_set_page_size (self->hadj, gdk_width);
+
+		gtk_adjustment_set_lower (self->vadj, 0.0);
+		gtk_adjustment_set_upper (self->vadj, height);
+		gtk_adjustment_set_value (self->vadj, self->y_offset);
+		gtk_adjustment_set_step_increment (self->vadj, STEP_INCREMENT);
+		gtk_adjustment_set_page_increment (self->vadj, gdk_height / 2);
+		gtk_adjustment_set_page_size (self->vadj, gdk_height);
 	}
 	else {
-		gtk_adjustment_configure (self->hadj,
-					  0.0,
-					  0.0,
-					  1.0,
-					  0.1,
-					  1.0,
-					  1.0);
-		gtk_adjustment_configure (self->vadj,
-					  0.0,
-					  0.0,
-					  1.0,
-					  0.1,
-					  1.0,
-					  1.0);
+		gtk_adjustment_set_lower (self->hadj, 0.0);
+		gtk_adjustment_set_upper (self->hadj, 1.0);
+		gtk_adjustment_set_value (self->hadj, 0.0);
+		gtk_adjustment_set_page_size (self->hadj, 1.0);
+
+		gtk_adjustment_set_lower (self->vadj, 0.0);
+		gtk_adjustment_set_upper (self->vadj, 1.0);
+		gtk_adjustment_set_value (self->vadj, 0.0);
+		gtk_adjustment_set_page_size (self->vadj, 1.0);
 	}
 
 	_gth_image_viewer_update_image_area (self);
 
-	/* FIXME
 	g_signal_handlers_block_by_data (G_OBJECT (self->hadj), self);
 	g_signal_handlers_block_by_data (G_OBJECT (self->vadj), self);
 	gtk_adjustment_changed (self->hadj);
 	gtk_adjustment_changed (self->vadj);
 	g_signal_handlers_unblock_by_data (G_OBJECT (self->hadj), self);
 	g_signal_handlers_unblock_by_data (G_OBJECT (self->vadj), self);
-	*/
 
 	/**/
 
@@ -748,6 +740,7 @@ gth_image_viewer_expose (GtkWidget      *widget,
 	self = GTH_IMAGE_VIEWER (widget);
 
 	cr = gdk_cairo_create (gtk_widget_get_window (widget));
+
 	cairo_set_line_width (cr, 0.5);
 	cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE);
 
@@ -2557,7 +2550,8 @@ gth_image_viewer_paint_region (GthImageViewer *self,
 	int           i;
 
 	cairo_save (cr);
-
+	gdk_cairo_region (cr, region);
+	cairo_clip (cr);
 	gdk_cairo_rectangle (cr, pixbuf_area);
 	cairo_clip (cr);
 
@@ -2593,10 +2587,7 @@ gth_image_viewer_apply_painters (GthImageViewer *self,
 
 	for (scan = self->priv->painters; scan; scan = scan->next) {
 		PainterData *painter_data = scan->data;
-
-		cairo_save (cr);
 		painter_data->func (self, event, cr, painter_data->user_data);
-		cairo_restore (cr);
 	}
 }
 



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