[MediaWiki-commits] [Gerrit] Only scroll refs up if ref link would have been covered by r... - change (apps...wikipedia)
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)
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