Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37405224
en ru br
Репозитории ALT
S:2.1.5-alt9
5.1: 2.1.5-alt3
4.1: 2.1.5-alt3
4.0: 2.1.5-alt1
3.0: 2.0.1-alt1
www.altlinux.org/Changes

Другие репозитории
Upstream:2.0.4

Группа :: Графика
Пакет: gqview

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: gqview-pixbuf-renderer-use-gdk_window_scroll.patch
Скачать


From 1cb100dd6b3ae4567131cf804a251cac7eac7068 Mon Sep 17 00:00:00 2001
From: Vladislav Zavjalov <slazav@altlinux.org>
Date: Wed, 14 Jul 2010 04:20:59 +0400
Subject: [PATCH] pixbuf-renderer: use gdk_window_scroll
---
 gqview/src/pixbuf-renderer.c |   86 +-----------------------------------------
 1 files changed, 2 insertions(+), 84 deletions(-)
diff --git a/gqview/src/pixbuf-renderer.c b/gqview/src/pixbuf-renderer.c
index 99d947e..b873010 100644
--- a/gqview/src/pixbuf-renderer.c
+++ b/gqview/src/pixbuf-renderer.c
@@ -2833,7 +2833,6 @@ void pixbuf_renderer_scroll(PixbufRenderer *pr, gint x, gint y)
 {
 	gint old_x, old_y;
 	gint x_off, y_off;
-	gint w, h;
 
 	g_return_if_fail(IS_PIXBUF_RENDERER(pr));
 
@@ -2853,90 +2852,9 @@ void pixbuf_renderer_scroll(PixbufRenderer *pr, gint x, gint y)
 	x_off = pr->x_scroll - old_x;
 	y_off = pr->y_scroll - old_y;
 
-	w = pr->vis_width - abs(x_off);
-	h = pr->vis_height - abs(y_off);
-
-	if (w < 1 || h < 1)
-		{
-		/* scrolled completely to new material */
-		pr_queue(pr, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, FALSE, FALSE);
-		return;
-		}
-	else
-		{
-		gint x1, y1;
-		gint x2, y2;
-		GtkWidget *box;
-		GdkGC *gc;
-		GdkEvent *event;
-
-		if (x_off < 0)
-			{
-			x1 = abs(x_off);
-			x2 = 0;
-			}
-		else
-			{
-			x1 = 0;
-			x2 = abs(x_off);
-			}
-
-		if (y_off < 0)
-			{
-			y1 = abs(y_off);
-			y2 = 0;
-			}
-		else
-			{
-			y1 = 0;
-			y2 = abs(y_off);
-			}
+        gdk_window_scroll(
+          gtk_widget_get_window(GTK_WIDGET(pr)), -x_off, -y_off);
 
-		box = GTK_WIDGET(pr);
-
-		gc = gdk_gc_new(box->window);
-		gdk_gc_set_exposures(gc, TRUE);
-		gdk_draw_drawable(box->window, gc,
-				  box->window,
-				  x2 + pr->x_offset, y2 + pr->y_offset,
-				  x1 + pr->x_offset, y1 + pr->y_offset, w, h);
-		g_object_unref(gc);
-
-		if (pr->overlay_list)
-			{
-			pr_overlay_queue_all(pr);
-			}
-
-		w = pr->vis_width - w;
-		h = pr->vis_height - h;
-
-		if (w > 0)
-			{
-			pr_queue(pr,
-				 x_off > 0 ? pr->x_scroll + (pr->vis_width - w) : pr->x_scroll, pr->y_scroll,
-				 w, pr->vis_height, TRUE, TILE_RENDER_ALL, FALSE, FALSE);
-			}
-		if (h > 0)
-			{
-			/* FIXME, to optimize this, remove overlap */
-			pr_queue(pr,
-				 pr->x_scroll, y_off > 0 ? pr->y_scroll + (pr->vis_height - h) : pr->y_scroll,
-				 pr->vis_width, h, TRUE, TILE_RENDER_ALL, FALSE, FALSE);
-			}
-
-		/* process exposures here, "expose_event" seems to miss a few with obstructed windows */
-		while ((event = gdk_event_get_graphics_expose(box->window)) != NULL)
-			{
-			pixbuf_renderer_paint(pr, &event->expose.area);
-
-			if (event->expose.count == 0)
-				{
-				gdk_event_free(event);
-				break;
-				}
-			gdk_event_free(event);
-			}
-		}
 }
 
 void pixbuf_renderer_scroll_to_point(PixbufRenderer *pr, gint x, gint y,
-- 
1.6.5.3
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin