Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(257)

Unified Diff: ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm

Issue 2810603002: [ios clean] Adds ToolsMenu to TabGrid (Closed)
Patch Set: Rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
diff --git a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
index c2f7ec40497816ad920be0ddff5c7af98b4a536a..dc0f9bebee54f641dff9f053f68b353b183189d7 100644
--- a/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
+++ b/ios/clean/chrome/browser/ui/tab_grid/tab_grid_view_controller.mm
@@ -10,6 +10,7 @@
#import "ios/clean/chrome/browser/ui/actions/tab_grid_actions.h"
#import "ios/clean/chrome/browser/ui/commands/settings_commands.h"
#import "ios/clean/chrome/browser/ui/commands/tab_grid_commands.h"
+#import "ios/clean/chrome/browser/ui/commands/tools_menu_commands.h"
#import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_data_source.h"
#import "ios/clean/chrome/browser/ui/tab_collection/tab_collection_tab_cell.h"
#import "ios/clean/chrome/browser/ui/tab_grid/mdc_floating_button+cr_tab_grid.h"
@@ -90,6 +91,12 @@
[self.dispatcher showSettings];
}
+#pragma mark - ToolsMenuActions
+
+- (void)showToolsMenu:(id)sender {
+ [self.dispatcher showToolsMenu];
+}
+
#pragma mark - TabGridActions
- (void)showTabGrid:(id)sender {
@@ -103,13 +110,53 @@
#pragma mark - ZoomTransitionDelegate methods
- (CGRect)rectForZoomWithKey:(NSObject*)key inView:(UIView*)view {
+ // If key is nil we return a CGRect based on the toolbar position, if not it
lpromero 2017/04/13 20:43:57 Avoid we :)
+ // was set by the TabGrid and we return a CGRect based on the IndexPath of the
+ // key.
+ if (!key) {
+ return [self.toolbar rectForZoomWithKey:key inView:view];
lpromero 2017/04/13 20:43:57 Should you formalize as WithKey:nil?
+ }
+
NSIndexPath* cellPath = base::mac::ObjCCastStrict<NSIndexPath>(key);
- if (!key)
- return CGRectNull;
UICollectionViewCell* cell = [self.tabs cellForItemAtIndexPath:cellPath];
return [view convertRect:cell.bounds fromView:cell];
}
+#pragma mark - MenuPresentationDelegate
+
+- (CGRect)frameForMenuPresentation:(UIPresentationController*)presentation {
lpromero 2017/04/13 20:43:57 Is this the method you wanted to put in a UI util?
+ CGSize menuSize = presentation.presentedView.frame.size;
+ CGRect menuRect;
+ menuRect.size = menuSize;
+
+ CGRect menuOriginRect = [self rectForZoomWithKey:nil inView:self.view];
+ if (CGRectIsNull(menuOriginRect)) {
+ menuRect.origin = CGPointMake(50, 50);
+ return menuRect;
+ }
+ // Calculate which corner of the menu the origin rect is in. This is
+ // determined by comparing frames, and thus is RTL-independent.
+ if (CGRectGetMinX(menuOriginRect) - CGRectGetMinX(self.view.bounds) <
+ CGRectGetMaxX(self.view.bounds) - CGRectGetMaxX(menuOriginRect)) {
+ // Origin rect is closer to the left edge of |self.view| than to the right.
+ menuRect.origin.x = CGRectGetMinX(menuOriginRect);
+ } else {
+ // Origin rect is closer to the right edge of |self.view| than to the left.
+ menuRect.origin.x = CGRectGetMaxX(menuOriginRect) - menuSize.width;
+ }
+
+ if (CGRectGetMinY(menuOriginRect) - CGRectGetMinY(self.view.bounds) <
+ CGRectGetMaxY(self.view.bounds) - CGRectGetMaxY(menuOriginRect)) {
+ // Origin rect is closer to the top edge of |self.view| than to the bottom.
+ menuRect.origin.y = CGRectGetMinY(menuOriginRect);
+ } else {
+ // Origin rect is closer to the bottom edge of |self.view| than to the top.
+ menuRect.origin.y = CGRectGetMaxY(menuOriginRect) - menuSize.height;
+ }
+
+ return menuRect;
+}
+
#pragma mark - TabGridConsumer methods
- (void)addNoTabsOverlay {

Powered by Google App Engine
This is Rietveld 408576698