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

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

Issue 3061021: Quick fix for window sizing under resolution independence on Mac. Scrolling a... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/cocoa/bookmark_bar_folder_controller.h" 5 #import "chrome/browser/cocoa/bookmark_bar_folder_controller.h"
6 #include "base/mac_util.h" 6 #include "base/mac_util.h"
7 #include "base/nsimage_cache_mac.h" 7 #include "base/nsimage_cache_mac.h"
8 #include "base/sys_string_conversions.h" 8 #include "base/sys_string_conversions.h"
9 #include "chrome/browser/bookmarks/bookmark_model.h" 9 #include "chrome/browser/bookmarks/bookmark_model.h"
10 #include "chrome/browser/bookmarks/bookmark_utils.h" 10 #include "chrome/browser/bookmarks/bookmark_utils.h"
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 [[self window] setLevel:NSPopUpMenuWindowLevel]; 370 [[self window] setLevel:NSPopUpMenuWindowLevel];
371 } 371 }
372 372
373 - (void)adjustWindowForHeight:(int)windowHeight { 373 - (void)adjustWindowForHeight:(int)windowHeight {
374 // Adjust all button widths to be consistent, determine the best size for 374 // Adjust all button widths to be consistent, determine the best size for
375 // the window, and set the window frame. 375 // the window, and set the window frame.
376 CGFloat windowWidth = 376 CGFloat windowWidth =
377 [self adjustButtonWidths] + (2 * bookmarks::kBookmarkVerticalPadding) + 377 [self adjustButtonWidths] + (2 * bookmarks::kBookmarkVerticalPadding) +
378 bookmarks::kScrollViewContentWidthMargin; 378 bookmarks::kScrollViewContentWidthMargin;
379 NSPoint newWindowTopLeft = [self windowTopLeftForWidth:windowWidth]; 379 NSPoint newWindowTopLeft = [self windowTopLeftForWidth:windowWidth];
380 NSSize windowSize = [scrollView_ convertSize:NSMakeSize(windowWidth,
381 windowHeight)
382 toView:nil];
383 newWindowTopLeft.y -= windowSize.height;
380 NSRect windowFrame = NSMakeRect(newWindowTopLeft.x, 384 NSRect windowFrame = NSMakeRect(newWindowTopLeft.x,
381 newWindowTopLeft.y - windowHeight, 385 newWindowTopLeft.y,
382 windowWidth, 386 windowSize.width,
383 windowHeight); 387 windowSize.height);
384 388
385 // Make the scrolled content be the right size (full size). 389 // Make the scrolled content be the right size (full size).
386 NSRect mainViewFrame = NSMakeRect(0, 0, 390 NSRect mainViewFrame = NSMakeRect(0, 0,
387 NSWidth(windowFrame) - 391 windowWidth -
388 bookmarks::kScrollViewContentWidthMargin, 392 bookmarks::kScrollViewContentWidthMargin,
389 NSHeight(windowFrame)); 393 windowHeight);
390 [mainView_ setFrame:mainViewFrame]; 394 [mainView_ setFrame:mainViewFrame];
391 395
392 // Make sure the window fits on the screen. If not, constrain. 396 // Make sure the window fits on the screen. If not, constrain.
393 // We'll scroll to allow the user to see all the content. 397 // We'll scroll to allow the user to see all the content.
394 NSRect screenFrame = [[[self window] screen] frame]; 398 NSRect screenFrame = [[[self window] screen] frame];
395 screenFrame = NSInsetRect(screenFrame, 0, kScrollWindowVerticalMargin); 399 screenFrame = NSInsetRect(screenFrame, 0, kScrollWindowVerticalMargin);
396 BOOL wasScrollable = scrollable_; 400 BOOL wasScrollable = scrollable_;
397 if (!NSContainsRect(screenFrame, windowFrame)) { 401 if (!NSContainsRect(screenFrame, windowFrame)) {
398 scrollable_ = YES; 402 scrollable_ = YES;
399 windowFrame = NSIntersectionRect(screenFrame, windowFrame); 403 windowFrame = NSIntersectionRect(screenFrame, windowFrame);
400 } else { 404 } else {
401 scrollable_ = NO; 405 scrollable_ = NO;
402 } 406 }
403 NSWindow* window = [self window]; 407 NSWindow* window = [self window];
404 [window setFrame:windowFrame display:YES]; 408 [window setFrame:windowFrame display:YES];
405 // If scrollable then offset the view and show the arrows. 409 // If scrollable then offset the view and show the arrows.
406 if (wasScrollable != scrollable_) { 410 if (wasScrollable != scrollable_) {
411 NSSize windowLocalSize = [scrollView_ convertSize:windowFrame.size
412 fromView:nil];
407 [mainView_ scrollPoint:NSMakePoint(0, (NSHeight(mainViewFrame) - 413 [mainView_ scrollPoint:NSMakePoint(0, (NSHeight(mainViewFrame) -
408 NSHeight(windowFrame)))]; 414 windowLocalSize.height))];
409 [self showOrHideScrollArrows]; 415 [self showOrHideScrollArrows];
410 [self addOrUpdateScrollTracking]; 416 [self addOrUpdateScrollTracking];
411 } 417 }
412 } 418 }
413 419
414 // Determine window size and position. 420 // Determine window size and position.
415 // Create buttons for all our nodes. 421 // Create buttons for all our nodes.
416 // TODO(jrg): break up into more and smaller routines for easier unit testing. 422 // TODO(jrg): break up into more and smaller routines for easier unit testing.
417 - (void)configureWindow { 423 - (void)configureWindow {
418 const BookmarkNode* node = [parentButton_ bookmarkNode]; 424 const BookmarkNode* node = [parentButton_ bookmarkNode];
(...skipping 958 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 return [folderController_ controllerForNode:node]; 1383 return [folderController_ controllerForNode:node];
1378 } 1384 }
1379 1385
1380 #pragma mark TestingAPI Only 1386 #pragma mark TestingAPI Only
1381 1387
1382 - (void)setIgnoreAnimations:(BOOL)ignore { 1388 - (void)setIgnoreAnimations:(BOOL)ignore {
1383 ignoreAnimations_ = ignore; 1389 ignoreAnimations_ = ignore;
1384 } 1390 }
1385 1391
1386 @end // BookmarkBarFolderController 1392 @end // BookmarkBarFolderController
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698