[MediaWiki-commits] [Gerrit] Only scroll refs up if ref link would have been covered by r... - change (apps...wikipedia)

2014-08-01 Thread Mhurd (Code Review)
Mhurd has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/151031

Change subject: Only scroll refs up if ref link would have been covered by refs 
panel.
..

Only scroll refs up if ref link would have been covered by refs panel.

Also centers the scrolled up ref link to the vertical center of the
part of the article web view visible above the refs panel.

Change-Id: If4faf645bcbf1c48f790d02a5f1bb6fa148b2f1c
---
M wikipedia/View Controllers/References/ReferencesVC.m
1 file changed, 20 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/ios/wikipedia 
refs/changes/31/151031/1

diff --git a/wikipedia/View Controllers/References/ReferencesVC.m 
b/wikipedia/View Controllers/References/ReferencesVC.m
index 3b4fe6a..3c8b48b 100644
--- a/wikipedia/View Controllers/References/ReferencesVC.m
+++ b/wikipedia/View Controllers/References/ReferencesVC.m
@@ -296,16 +296,30 @@
 NSNumber *n = self.payload[@refsIndex];
 if (!n) return;
 NSArray *a = self.payload[@linkId];
-if (!a) return;
+if (!a || (a.count == 0)) return;
+NSString *firstLinkId = a[0];
+if ([firstLinkId isEqualToString:@fake_refs_id]) return;
+
 NSString *elementId = a[n.integerValue];
 if (!elementId) return;
 CGRect r = [self.webVC.webView 
getScreenRectForHtmlElementWithId:elementId];
 if (!CGRectIsNull(r)) {
-CGPoint p = CGPointMake(
-self.webVC.webView.scrollView.contentOffset.x,
-self.webVC.webView.scrollView.contentOffset.y 
+ (r.origin.y - 70)
-);
-[self.webVC.webView.scrollView setContentOffset:p animated:YES];
+
+CGFloat vSpaceAboveRefsPanel = self.webVC.view.bounds.size.height - 
self.view.bounds.size.height;
+
+// Only scroll up if the refs link would be below the refs panel.
+if ((r.origin.y + r.size.height)  (vSpaceAboveRefsPanel)) {
+
+// Calculate the distance needed to scroll the refs link to the 
vertical center of the
+// part of the article web view not covered by the refs panel.
+CGFloat distanceFromVerticalCenter = ((vSpaceAboveRefsPanel) / 
2.0) - (r.size.height / 2.0);
+
+CGPoint p = CGPointMake(
+
self.webVC.webView.scrollView.contentOffset.x,
+
self.webVC.webView.scrollView.contentOffset.y + (r.origin.y - 
distanceFromVerticalCenter)
+);
+[self.webVC.webView.scrollView setContentOffset:p animated:YES];
+}
 };
 }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/151031
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If4faf645bcbf1c48f790d02a5f1bb6fa148b2f1c
Gerrit-PatchSet: 1
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mhurd mh...@wikimedia.org

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits


[MediaWiki-commits] [Gerrit] Only scroll refs up if ref link would have been covered by r... - change (apps...wikipedia)

2014-08-01 Thread Brion VIBBER (Code Review)
Brion VIBBER has submitted this change and it was merged.

Change subject: Only scroll refs up if ref link would have been covered by refs 
panel.
..


Only scroll refs up if ref link would have been covered by refs panel.

Also centers the scrolled up ref link to the vertical center of the
part of the article web view visible above the refs panel.

Change-Id: If4faf645bcbf1c48f790d02a5f1bb6fa148b2f1c
---
M wikipedia/View Controllers/References/ReferencesVC.m
1 file changed, 20 insertions(+), 6 deletions(-)

Approvals:
  Brion VIBBER: Verified; Looks good to me, approved



diff --git a/wikipedia/View Controllers/References/ReferencesVC.m 
b/wikipedia/View Controllers/References/ReferencesVC.m
index 3b4fe6a..3c8b48b 100644
--- a/wikipedia/View Controllers/References/ReferencesVC.m
+++ b/wikipedia/View Controllers/References/ReferencesVC.m
@@ -296,16 +296,30 @@
 NSNumber *n = self.payload[@refsIndex];
 if (!n) return;
 NSArray *a = self.payload[@linkId];
-if (!a) return;
+if (!a || (a.count == 0)) return;
+NSString *firstLinkId = a[0];
+if ([firstLinkId isEqualToString:@fake_refs_id]) return;
+
 NSString *elementId = a[n.integerValue];
 if (!elementId) return;
 CGRect r = [self.webVC.webView 
getScreenRectForHtmlElementWithId:elementId];
 if (!CGRectIsNull(r)) {
-CGPoint p = CGPointMake(
-self.webVC.webView.scrollView.contentOffset.x,
-self.webVC.webView.scrollView.contentOffset.y 
+ (r.origin.y - 70)
-);
-[self.webVC.webView.scrollView setContentOffset:p animated:YES];
+
+CGFloat vSpaceAboveRefsPanel = self.webVC.view.bounds.size.height - 
self.view.bounds.size.height;
+
+// Only scroll up if the refs link would be below the refs panel.
+if ((r.origin.y + r.size.height)  (vSpaceAboveRefsPanel)) {
+
+// Calculate the distance needed to scroll the refs link to the 
vertical center of the
+// part of the article web view not covered by the refs panel.
+CGFloat distanceFromVerticalCenter = ((vSpaceAboveRefsPanel) / 
2.0) - (r.size.height / 2.0);
+
+CGPoint p = CGPointMake(
+
self.webVC.webView.scrollView.contentOffset.x,
+
self.webVC.webView.scrollView.contentOffset.y + (r.origin.y - 
distanceFromVerticalCenter)
+);
+[self.webVC.webView.scrollView setContentOffset:p animated:YES];
+}
 };
 }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/151031
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: If4faf645bcbf1c48f790d02a5f1bb6fa148b2f1c
Gerrit-PatchSet: 1
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mhurd mh...@wikimedia.org
Gerrit-Reviewer: Brion VIBBER br...@wikimedia.org

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits