OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "ios/clean/chrome/browser/ui/root/root_container_view_controller.h" | 5 #import "ios/clean/chrome/browser/ui/root/root_container_view_controller.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 | 8 |
9 #if !defined(__has_feature) || !__has_feature(objc_arc) | 9 #if !defined(__has_feature) || !__has_feature(objc_arc) |
10 #error "This file requires ARC support." | 10 #error "This file requires ARC support." |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 conformsToProtocol:@protocol(ZoomTransitionDelegate)]) { | 64 conformsToProtocol:@protocol(ZoomTransitionDelegate)]) { |
65 return [static_cast<id<ZoomTransitionDelegate>>(self.contentViewController) | 65 return [static_cast<id<ZoomTransitionDelegate>>(self.contentViewController) |
66 rectForZoomWithKey:key | 66 rectForZoomWithKey:key |
67 inView:view]; | 67 inView:view]; |
68 } | 68 } |
69 return CGRectNull; | 69 return CGRectNull; |
70 } | 70 } |
71 | 71 |
72 #pragma mark - MenuPresentationDelegate | 72 #pragma mark - MenuPresentationDelegate |
73 | 73 |
74 - (CGRect)frameForMenuPresentation:(UIPresentationController*)presentation { | 74 - (CGRect)boundsForMenuPresentation { |
75 CGSize menuSize = presentation.presentedView.frame.size; | 75 return self.view.bounds; |
76 CGRect menuRect; | 76 } |
77 menuRect.size = menuSize; | 77 - (CGRect)originForMenuPresentation { |
78 | 78 return [self rectForZoomWithKey:nil inView:self.view]; |
79 CGRect menuOriginRect = [self rectForZoomWithKey:nil inView:self.view]; | |
80 if (CGRectIsNull(menuOriginRect)) { | |
81 menuRect.origin = CGPointMake(50, 50); | |
82 return menuRect; | |
83 } | |
84 // Calculate which corner of the menu the origin rect is in. This is | |
85 // determined by comparing frames, and thus is RTL-independent. | |
86 if (CGRectGetMinX(menuOriginRect) - CGRectGetMinX(self.view.bounds) < | |
87 CGRectGetMaxX(self.view.bounds) - CGRectGetMaxX(menuOriginRect)) { | |
88 // Origin rect is closer to the left edge of |self.view| than to the right. | |
89 menuRect.origin.x = CGRectGetMinX(menuOriginRect); | |
90 } else { | |
91 // Origin rect is closer to the right edge of |self.view| than to the left. | |
92 menuRect.origin.x = CGRectGetMaxX(menuOriginRect) - menuSize.width; | |
93 } | |
94 | |
95 if (CGRectGetMinY(menuOriginRect) - CGRectGetMinY(self.view.bounds) < | |
96 CGRectGetMaxY(self.view.bounds) - CGRectGetMaxY(menuOriginRect)) { | |
97 // Origin rect is closer to the top edge of |self.view| than to the bottom. | |
98 menuRect.origin.y = CGRectGetMinY(menuOriginRect); | |
99 } else { | |
100 // Origin rect is closer to the bottom edge of |self.view| than to the top. | |
101 menuRect.origin.y = CGRectGetMaxY(menuOriginRect) - menuSize.height; | |
102 } | |
103 | |
104 return menuRect; | |
105 } | 79 } |
106 | 80 |
107 @end | 81 @end |
OLD | NEW |