# HG changeset patch # User hertzhaft # Date 1350578945 -7200 # Node ID 75a54db031ddc1ba8715d8ae9f47706c27e2a5da # Parent 4964a1e252eb9fb91f82fc292ecbd7c78cee3093 move found region into view, keep zoom factor if possible diff -r 4964a1e252eb -r 75a54db031dd webapp/src/main/webapp/jquery/jquery.digilib.regions.js --- a/webapp/src/main/webapp/jquery/jquery.digilib.regions.js Thu Oct 18 17:22:55 2012 +0200 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.regions.js Thu Oct 18 18:49:05 2012 +0200 @@ -31,6 +31,7 @@ // the digilib object var digilib = null; // the functions made available by digilib + var FULL_AREA = null; var fn = { // dummy function to avoid errors, gets overwritten by buttons plugin highlightButtons : function () { @@ -312,7 +313,17 @@ var coords = $input.val(); var attr = { 'class' : cssPrefix+'regionURL '+cssPrefix+'findregion' }; console.debug('findCoords', coords); - createRegionFromCoords(data, data.userRegions, coords, attr); + var rect = createRegionFromCoords(data, data.userRegions, coords, attr); + var za = data.zoomArea; + if (!fn.isFullArea(za)) { + za.setCenter(rect.getCenter()); + za.clipTo(FULL_AREA); + if (!za.containsRect(rect)) { + fn.setZoomArea(data, FULL_AREA.copy()); + } else { + fn.setZoomArea(data, za); + } + } fn.withdraw($info); redisplay(data); return false; @@ -697,6 +708,7 @@ var $elem = data.$elem; var settings = data.settings; var cssPrefix = data.settings.cssPrefix; + FULL_AREA = geom.rectangle(0, 0, 1, 1); // region arrays data.userRegions = []; data.htmlRegions = [];