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

Side by Side Diff: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm

Issue 2511973002: Reverse bookmark buttons and menus in RTL (Closed)
Patch Set: Use line width instead of hardcoding cell inset Created 4 years 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" 5 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/mac/bundle_locations.h" 9 #include "base/mac/bundle_locations.h"
10 #include "base/mac/sdk_forward_declarations.h" 10 #include "base/mac/sdk_forward_declarations.h"
11 #include "base/strings/sys_string_conversions.h" 11 #include "base/strings/sys_string_conversions.h"
12 #import "chrome/browser/bookmarks/bookmark_model_factory.h" 12 #import "chrome/browser/bookmarks/bookmark_model_factory.h"
13 #import "chrome/browser/bookmarks/managed_bookmark_service_factory.h" 13 #import "chrome/browser/bookmarks/managed_bookmark_service_factory.h"
14 #import "chrome/browser/profiles/profile.h" 14 #import "chrome/browser/profiles/profile.h"
15 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" 15 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h"
16 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" 16 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h"
17 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h" 17 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h"
18 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h" 18 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h"
19 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h" 19 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h"
20 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" 20 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h"
21 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h" 21 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h"
22 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h" 22 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h"
23 #import "chrome/browser/ui/cocoa/browser_window_controller.h" 23 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
24 #import "chrome/browser/ui/cocoa/l10n_util.h"
24 #include "components/bookmarks/browser/bookmark_model.h" 25 #include "components/bookmarks/browser/bookmark_model.h"
25 #include "components/bookmarks/browser/bookmark_node_data.h" 26 #include "components/bookmarks/browser/bookmark_node_data.h"
26 #import "components/bookmarks/managed/managed_bookmark_service.h" 27 #import "components/bookmarks/managed/managed_bookmark_service.h"
27 #include "ui/base/clipboard/clipboard_util_mac.h" 28 #include "ui/base/clipboard/clipboard_util_mac.h"
28 #include "ui/base/cocoa/cocoa_base_utils.h" 29 #include "ui/base/cocoa/cocoa_base_utils.h"
29 #include "ui/base/material_design/material_design_controller.h" 30 #include "ui/base/material_design/material_design_controller.h"
30 #include "ui/base/resource/resource_bundle.h" 31 #include "ui/base/resource/resource_bundle.h"
31 #include "ui/base/theme_provider.h" 32 #include "ui/base/theme_provider.h"
32 #include "ui/resources/grit/ui_resources.h" 33 #include "ui/resources/grit/ui_resources.h"
33 34
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 parentButton_.reset([button retain]); 270 parentButton_.reset([button retain]);
270 selectedIndex_ = -1; 271 selectedIndex_ = -1;
271 272
272 profile_ = profile; 273 profile_ = profile;
273 274
274 // We want the button to remain bordered as part of the menu path. 275 // We want the button to remain bordered as part of the menu path.
275 [button forceButtonBorderToStayOnAlways:YES]; 276 [button forceButtonBorderToStayOnAlways:YES];
276 277
277 parentController_.reset([parentController retain]); 278 parentController_.reset([parentController retain]);
278 if (!parentController_) 279 if (!parentController_)
279 [self setSubFolderGrowthToRight:YES]; 280 [self setSubFolderGrowthToRight:!cocoa_l10n_util::
281 ShouldDoExperimentalRTLLayout()];
280 else 282 else
281 [self setSubFolderGrowthToRight:[parentController 283 [self setSubFolderGrowthToRight:[parentController
282 subFolderGrowthToRight]]; 284 subFolderGrowthToRight]];
283 barController_ = barController; // WEAK 285 barController_ = barController; // WEAK
284 buttons_.reset([[NSMutableArray alloc] init]); 286 buttons_.reset([[NSMutableArray alloc] init]);
285 folderTarget_.reset( 287 folderTarget_.reset(
286 [[BookmarkFolderTarget alloc] initWithController:self profile:profile]); 288 [[BookmarkFolderTarget alloc] initWithController:self profile:profile]);
287 [self configureWindow]; 289 [self configureWindow];
288 hoverState_.reset([[BookmarkBarFolderHoverState alloc] init]); 290 hoverState_.reset([[BookmarkBarFolderHoverState alloc] init]);
289 } 291 }
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 // Compute and return the top left point of our window (screen 524 // Compute and return the top left point of our window (screen
523 // coordinates). The top left is positioned in a manner similar to 525 // coordinates). The top left is positioned in a manner similar to
524 // cascading menus. Windows may grow to either the right or left of 526 // cascading menus. Windows may grow to either the right or left of
525 // their parent (if a sub-folder) so we need to know |windowWidth|. 527 // their parent (if a sub-folder) so we need to know |windowWidth|.
526 - (NSPoint)windowTopLeftForWidth:(int)windowWidth height:(int)windowHeight { 528 - (NSPoint)windowTopLeftForWidth:(int)windowWidth height:(int)windowHeight {
527 CGFloat kMinSqueezedMenuHeight = bookmarks::kBookmarkFolderButtonHeight * 2.0; 529 CGFloat kMinSqueezedMenuHeight = bookmarks::kBookmarkFolderButtonHeight * 2.0;
528 NSPoint newWindowTopLeft; 530 NSPoint newWindowTopLeft;
529 if (![parentController_ isKindOfClass:[self class]]) { 531 if (![parentController_ isKindOfClass:[self class]]) {
530 // If we're not popping up from one of ourselves, we must be 532 // If we're not popping up from one of ourselves, we must be
531 // popping up from the bookmark bar itself. In this case, start 533 // popping up from the bookmark bar itself. In this case, start
532 // BELOW the parent button. Our left is the button left; our top 534 // BELOW the parent button. Our leading edge is the button leading
533 // is bottom of button's parent view. 535 // edge; our top is bottom of button's parent view.
534 NSPoint buttonBottomLeftInScreen = ui::ConvertPointFromWindowToScreen( 536 BOOL isRTL = cocoa_l10n_util::ShouldDoExperimentalRTLLayout();
537 NSPoint buttonAnchorPoint =
538 isRTL ? NSMakePoint(NSWidth([parentButton_ frame]), 0) : NSZeroPoint;
539 NSPoint buttonAnchorPointInScreen = ui::ConvertPointFromWindowToScreen(
535 [parentButton_ window], 540 [parentButton_ window],
536 [parentButton_ convertPoint:NSZeroPoint toView:nil]); 541 [parentButton_ convertPoint:buttonAnchorPoint toView:nil]);
537 NSPoint bookmarkBarBottomLeftInScreen = ui::ConvertPointFromWindowToScreen( 542 NSPoint bookmarkBarAnchorPoint =
543 isRTL ? NSMakePoint(NSWidth([[parentButton_ superview] frame]), 0)
544 : NSZeroPoint;
545 NSPoint bookmarkBarAnchorPointInScreen = ui::ConvertPointFromWindowToScreen(
538 [parentButton_ window], 546 [parentButton_ window],
539 [[parentButton_ superview] convertPoint:NSZeroPoint toView:nil]); 547 [[parentButton_ superview] convertPoint:bookmarkBarAnchorPoint
548 toView:nil]);
540 newWindowTopLeft = NSMakePoint( 549 newWindowTopLeft = NSMakePoint(
541 buttonBottomLeftInScreen.x, 550 isRTL ? buttonAnchorPointInScreen.x - windowWidth
542 bookmarkBarBottomLeftInScreen.y + bookmarks::kBookmarkBarMenuOffset); 551 : buttonAnchorPointInScreen.x,
552 bookmarkBarAnchorPointInScreen.y + bookmarks::kBookmarkBarMenuOffset);
543 // Make sure the window is on-screen; if not, push left or right. It is 553 // Make sure the window is on-screen; if not, push left or right. It is
544 // intentional that top level folders "push left" or "push right" slightly 554 // intentional that top level folders "push left" or "push right" slightly
545 // different than subfolders. 555 // different than subfolders.
546 NSRect screenVisibleFrame = [[self menuScreen] visibleFrame]; 556 NSRect screenVisibleFrame = [[self menuScreen] visibleFrame];
547 // Test if window goes off-screen on the right side. 557 // Test if window goes off-screen on the right side.
548 CGFloat spillOff = 558 CGFloat spillOff =
549 newWindowTopLeft.x + windowWidth - NSMaxX(screenVisibleFrame); 559 newWindowTopLeft.x + windowWidth - NSMaxX(screenVisibleFrame);
550 if (spillOff > 0.0) { 560 if (spillOff > 0.0) {
551 newWindowTopLeft.x = std::max(newWindowTopLeft.x - spillOff, 561 newWindowTopLeft.x = std::max(newWindowTopLeft.x - spillOff,
552 NSMinX(screenVisibleFrame)); 562 NSMinX(screenVisibleFrame));
(...skipping 918 matching lines...) Expand 10 before | Expand all | Expand 10 after
1471 // Closing the top level implicitly closes all children. 1481 // Closing the top level implicitly closes all children.
1472 [barController_ closeAllBookmarkFolders]; 1482 [barController_ closeAllBookmarkFolders];
1473 } 1483 }
1474 1484
1475 // Close our bookmark folder (a sub-controller) if we have one. 1485 // Close our bookmark folder (a sub-controller) if we have one.
1476 - (void)closeBookmarkFolder:(id)sender { 1486 - (void)closeBookmarkFolder:(id)sender {
1477 if (folderController_) { 1487 if (folderController_) {
1478 // Make this menu key, so key status doesn't go back to the browser 1488 // Make this menu key, so key status doesn't go back to the browser
1479 // window when the submenu closes. 1489 // window when the submenu closes.
1480 [[self window] makeKeyWindow]; 1490 [[self window] makeKeyWindow];
1481 [self setSubFolderGrowthToRight:YES]; 1491 [self setSubFolderGrowthToRight:!cocoa_l10n_util::
1492 ShouldDoExperimentalRTLLayout()];
1482 [[folderController_ window] close]; 1493 [[folderController_ window] close];
1483 folderController_ = nil; 1494 folderController_ = nil;
1484 } 1495 }
1485 } 1496 }
1486 1497
1487 - (BookmarkModel*)bookmarkModel { 1498 - (BookmarkModel*)bookmarkModel {
1488 return [barController_ bookmarkModel]; 1499 return [barController_ bookmarkModel];
1489 } 1500 }
1490 1501
1491 - (BOOL)draggingAllowed:(id<NSDraggingInfo>)info { 1502 - (BOOL)draggingAllowed:(id<NSDraggingInfo>)info {
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
2099 2110
2100 - (void)setIgnoreAnimations:(BOOL)ignore { 2111 - (void)setIgnoreAnimations:(BOOL)ignore {
2101 ignoreAnimations_ = ignore; 2112 ignoreAnimations_ = ignore;
2102 } 2113 }
2103 2114
2104 - (BookmarkButton*)buttonThatMouseIsIn { 2115 - (BookmarkButton*)buttonThatMouseIsIn {
2105 return buttonThatMouseIsIn_; 2116 return buttonThatMouseIsIn_;
2106 } 2117 }
2107 2118
2108 @end // BookmarkBarFolderController 2119 @end // BookmarkBarFolderController
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698