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

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

Issue 351027: [Mac] Prefs window sizing/spacing:... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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 | « chrome/app/nibs/Preferences.xib ('k') | 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/preferences_window_controller.h" 5 #import "chrome/browser/cocoa/preferences_window_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include "app/l10n_util.h" 8 #include "app/l10n_util.h"
9 #include "base/mac_util.h" 9 #include "base/mac_util.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 NSString* const kUserDoneEditingPrefsNotification = 43 NSString* const kUserDoneEditingPrefsNotification =
44 @"kUserDoneEditingPrefsNotification"; 44 @"kUserDoneEditingPrefsNotification";
45 45
46 namespace { 46 namespace {
47 47
48 std::wstring GetNewTabUIURLString() { 48 std::wstring GetNewTabUIURLString() {
49 std::wstring temp = UTF8ToWide(chrome::kChromeUINewTabURL); 49 std::wstring temp = UTF8ToWide(chrome::kChromeUINewTabURL);
50 return URLFixerUpper::FixupURL(temp, std::wstring()); 50 return URLFixerUpper::FixupURL(temp, std::wstring());
51 } 51 }
52 52
53 // Adjusts the views origin so it will be centered if in a given width parent.
54 void CenterViewForWidth(NSView* view, CGFloat width) {
55 NSRect frame = [view frame];
56 frame.origin.x = (width - NSWidth(frame)) / 2.0;
57 [view setFrame:frame];
58 }
59
60 // Helper to remove all but the last view from the view heirarchy. 53 // Helper to remove all but the last view from the view heirarchy.
61 void RemoveAllButLastView(NSArray* views) { 54 void RemoveAllButLastView(NSArray* views) {
62 NSArray* toRemove = [views subarrayWithRange:NSMakeRange(0, [views count]-1)]; 55 NSArray* toRemove = [views subarrayWithRange:NSMakeRange(0, [views count]-1)];
63 for (NSView* view in toRemove) { 56 for (NSView* view in toRemove) {
64 [view removeFromSuperviewWithoutNeedingDisplay]; 57 [view removeFromSuperviewWithoutNeedingDisplay];
65 } 58 }
66 } 59 }
67 60
68 // Helper for tweaking the prefs window, if view is a: 61 // Helper for tweaking the prefs window, if view is a:
69 // checkbox, radio group or label: it gets a forced wrap at current size 62 // checkbox, radio group or label: it gets a forced wrap at current size
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 verticalShift += AutoSizeGroup(personalStuffGroupAutofill_, 411 verticalShift += AutoSizeGroup(personalStuffGroupAutofill_,
419 kAutoSizeGroupBehaviorVerticalToFit, 412 kAutoSizeGroupBehaviorVerticalToFit,
420 verticalShift); 413 verticalShift);
421 verticalShift += AutoSizeGroup(personalStuffGroupPasswords_, 414 verticalShift += AutoSizeGroup(personalStuffGroupPasswords_,
422 kAutoSizeGroupBehaviorVerticalFirstToFit, 415 kAutoSizeGroupBehaviorVerticalFirstToFit,
423 verticalShift); 416 verticalShift);
424 [GTMUILocalizerAndLayoutTweaker 417 [GTMUILocalizerAndLayoutTweaker
425 resizeViewWithoutAutoResizingSubViews:personalStuffView_ 418 resizeViewWithoutAutoResizingSubViews:personalStuffView_
426 delta:NSMakeSize(0.0, verticalShift)]; 419 delta:NSMakeSize(0.0, verticalShift)];
427 420
428 // Make sure the window is wide enough to fit the the widest view 421 #ifndef NDEBUG
429 NSRect underTheHoodFrame = [underTheHoodView_ frame]; 422 // Validate some assumptions in debug builds.
430 CGFloat widest = std::max(NSWidth([basicsView_ frame]), 423
431 NSWidth([personalStuffView_ frame])); 424 // "Basics", "Personal Stuff", and "Under the Hood" views should be the same
432 widest = std::max(widest, NSWidth(underTheHoodFrame)); 425 // width. They should be the same width, so they are laid out to look as good
426 // as possible at that width with controls just having to wrap if their text
427 // is too long.
428 DCHECK_EQ(NSWidth([basicsView_ frame]), NSWidth([personalStuffView_ frame]))
429 << "Basics and Personal Stuff should be the same widths";
430 DCHECK_EQ(NSWidth([basicsView_ frame]), NSWidth([underTheHoodView_ frame]))
431 << "Basics and Under the Hood should be the same widths";
432 // "Under the Hood" content should always be skinnier than the scroller it
433 // goes into (we resize it).
434 DCHECK_LE(NSWidth([underTheHoodContentView_ frame]),
435 [underTheHoodScroller_ contentSize].width)
436 << "The Under the Hood content should be narrower than the content "
437 "of the scroller it goes into";
438 #endif // NDEBUG
439
440 // Make the window as wide as the views
433 NSWindow* prefsWindow = [self window]; 441 NSWindow* prefsWindow = [self window];
434 NSRect frame = [prefsWindow frame]; 442 NSRect frame = [prefsWindow frame];
435 frame.size.width = widest; 443 frame.size.width = NSWidth([basicsView_ frame]);
436 [prefsWindow setFrame:frame display:NO]; 444 [prefsWindow setFrame:frame display:NO];
437 445
438 // The Under the Hood prefs is a scroller, it shouldn't get any border, so it 446 // Widen the Under the Hood content so things can rewrap to the full width.
439 // gets resized to the as wide as the window ends up.
440 underTheHoodFrame.size.width = widest;
441 [underTheHoodView_ setFrame:underTheHoodFrame];
442
443 // Widen the Under the Hood content so things can rewrap to the full width
444 NSSize underTheHoodContentSize = [underTheHoodContentView_ frame].size; 447 NSSize underTheHoodContentSize = [underTheHoodContentView_ frame].size;
445 underTheHoodContentSize.width = [underTheHoodScroller_ contentSize].width; 448 underTheHoodContentSize.width = [underTheHoodScroller_ contentSize].width;
446 [underTheHoodContentView_ setFrameSize:underTheHoodContentSize]; 449 [underTheHoodContentView_ setFrameSize:underTheHoodContentSize];
447 450
448 // Now that Under the Hood is the right width, auto-size to the new width to 451 // Now that Under the Hood is the right width, auto-size to the new width to
449 // get the final height. 452 // get the final height.
450 verticalShift = AutoSizeUnderTheHoodContent(underTheHoodContentView_, 453 verticalShift = AutoSizeUnderTheHoodContent(underTheHoodContentView_,
451 downloadLocationControl_, 454 downloadLocationControl_,
452 downloadLocationButton_); 455 downloadLocationButton_);
453 [GTMUILocalizerAndLayoutTweaker 456 [GTMUILocalizerAndLayoutTweaker
454 resizeViewWithoutAutoResizingSubViews:underTheHoodContentView_ 457 resizeViewWithoutAutoResizingSubViews:underTheHoodContentView_
455 delta:NSMakeSize(0.0, verticalShift)]; 458 delta:NSMakeSize(0.0, verticalShift)];
456 underTheHoodContentSize = [underTheHoodContentView_ frame].size; 459 underTheHoodContentSize = [underTheHoodContentView_ frame].size;
457 460
458 // Adjust the view origins so they show up centered.
459 CenterViewForWidth(basicsView_, widest);
460 CenterViewForWidth(personalStuffView_, widest);
461 CenterViewForWidth(underTheHoodView_, widest);
462
463 // Put the Under the Hood content view into the scroller and scroll it to the 461 // Put the Under the Hood content view into the scroller and scroll it to the
464 // top. 462 // top.
465 [underTheHoodScroller_ setDocumentView:underTheHoodContentView_]; 463 [underTheHoodScroller_ setDocumentView:underTheHoodContentView_];
466 [underTheHoodContentView_ scrollPoint: 464 [underTheHoodContentView_ scrollPoint:
467 NSMakePoint(0, underTheHoodContentSize.height)]; 465 NSMakePoint(0, underTheHoodContentSize.height)];
468 466
469 // Get the last visited page from local state. 467 // Get the last visited page from local state.
470 OptionsPage page = static_cast<OptionsPage>(lastSelectedPage_.GetValue()); 468 OptionsPage page = static_cast<OptionsPage>(lastSelectedPage_.GetValue());
471 if (page == OPTIONS_PAGE_DEFAULT) 469 if (page == OPTIONS_PAGE_DEFAULT)
472 page = OPTIONS_PAGE_GENERAL; 470 page = OPTIONS_PAGE_GENERAL;
(...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after
1416 [[NSNotificationCenter defaultCenter] 1414 [[NSNotificationCenter defaultCenter]
1417 postNotificationName:kUserDoneEditingPrefsNotification 1415 postNotificationName:kUserDoneEditingPrefsNotification
1418 object:self]; 1416 object:self];
1419 } 1417 }
1420 1418
1421 - (void)controlTextDidEndEditing:(NSNotification*)notification { 1419 - (void)controlTextDidEndEditing:(NSNotification*)notification {
1422 [customPagesSource_ validateURLs]; 1420 [customPagesSource_ validateURLs];
1423 } 1421 }
1424 1422
1425 @end 1423 @end
OLDNEW
« no previous file with comments | « chrome/app/nibs/Preferences.xib ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698