[fusion-commits] compiz mirror: Changes to 'master' (0ec496fee26e3e394b7bf066653c567e6193871c)

compiz at server.beryl-project.org compiz at server.beryl-project.org
Fri Jul 6 01:15:39 CEST 2007


New commits:
commit 0ec496fee26e3e394b7bf066653c567e6193871c
Merge: c8f36d4cede846c5b591133b90b5ec8494c59782 7fae3ae65e97124c53c6f28c4b5d21374900c379
Author: David Reveman <davidr at novell.com>
Date:   Thu Jul 5 19:06:11 2007 -0400

    Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/app/compiz

commit c8f36d4cede846c5b591133b90b5ec8494c59782
Author: David Reveman <davidr at novell.com>
Date:   Thu Jul 5 19:05:48 2007 -0400

    Keep point under cursor fixed when zooming in.


 plugins/zoom.c |   35 +++++++++++++++--------------------
 1 files changed, 15 insertions(+), 20 deletions(-)


Modified: compiz/plugins/zoom.c
===================================================================
--- compiz/plugins/zoom.c
+++ compiz/plugins/zoom.c
@@ -514,8 +514,7 @@ zoomIn (CompDisplay     *d,
     s = findScreenAtDisplay (d, xid);
     if (s)
     {
-	float   x, y, w, h;
-	float   scale = 1.0f;
+	float   w, h, x0, y0;
 	int     output;
 	ZoomBox box;
 
@@ -528,34 +527,30 @@ zoomIn (CompDisplay     *d,
 
 	if (zs->zoomed & (1 << output))
 	{
-	    float oWidth;
-
 	    zoomGetCurrentZoom (s, output, &box);
-
-	    oWidth = s->outputDev[output].width;
-	    scale = oWidth / (box.x2 - box.x1);
-
-	    x = box.x1;
-	    y = box.y1;
 	}
 	else
 	{
-	    box.x1 = x = s->outputDev[output].region.extents.x1;
-	    box.y1 = y = s->outputDev[output].region.extents.y1;
+	    box.x1 = s->outputDev[output].region.extents.x1;
+	    box.y1 = s->outputDev[output].region.extents.y1;
 	    box.x2 = s->outputDev[output].region.extents.x2;
 	    box.y2 = s->outputDev[output].region.extents.y2;
 	}
 
-	w = (box.x2 - box.x1) / zs->opt[ZOOM_SCREEN_OPTION_ZOOM_FACTOR].value.f;
-	h = (box.y2 - box.y1) / zs->opt[ZOOM_SCREEN_OPTION_ZOOM_FACTOR].value.f;
+	w = (box.x2 - box.x1) /
+	    zs->opt[ZOOM_SCREEN_OPTION_ZOOM_FACTOR].value.f;
+	h = (box.y2 - box.y1) /
+	    zs->opt[ZOOM_SCREEN_OPTION_ZOOM_FACTOR].value.f;
 
-	x += (pointerX - s->outputDev[output].region.extents.x1) / scale;
-	y += (pointerY - s->outputDev[output].region.extents.y1) / scale;
+	x0 = (pointerX - s->outputDev[output].region.extents.x1) / (float)
+	    s->outputDev[output].width;
+	y0 = (pointerY - s->outputDev[output].region.extents.y1) / (float)
+	    s->outputDev[output].height;
 
-	zs->x1 = x - w / 2.0f;
-	zs->y1 = y - h / 2.0f;
-	zs->x2 = x + w / 2.0f;
-	zs->y2 = y + h / 2.0f;
+	zs->x1 = box.x1 + (x0 * (box.x2 - box.x1) - x0 * w + 0.5f);
+	zs->y1 = box.y1 + (y0 * (box.y2 - box.y1) - y0 * h + 0.5f);
+	zs->x2 = zs->x1 + w;
+	zs->y2 = zs->y1 + h;
 
 	zoomInitiateForSelection (s, output);
 


More information about the commits mailing list