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

Side by Side Diff: chrome/browser/ui/cocoa/browser_window_controller_private.mm

Issue 379293003: mac: Fix tab dragging visual bug in Yosemite. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments from andre. Created 6 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
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/browser_window_controller_private.h" 5 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/mac/mac_util.h" 10 #include "base/mac/mac_util.h"
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 [self disableBarVisibilityUpdates]; 560 [self disableBarVisibilityUpdates];
561 561
562 // Retain the tab strip view while we remove it from its superview. 562 // Retain the tab strip view while we remove it from its superview.
563 base::scoped_nsobject<NSView> tabStripView; 563 base::scoped_nsobject<NSView> tabStripView;
564 if ([self hasTabStrip]) { 564 if ([self hasTabStrip]) {
565 tabStripView.reset([[self tabStripView] retain]); 565 tabStripView.reset([[self tabStripView] retain]);
566 [tabStripView removeFromSuperview]; 566 [tabStripView removeFromSuperview];
567 } 567 }
568 568
569 // Ditto for the content view. 569 // Ditto for the content view.
570 base::scoped_nsobject<NSView> contentView( 570 base::scoped_nsobject<NSView> contentView([self.chromeContentView retain]);
Scott Hess - ex-Googler 2014/07/11 18:08:34 Previously, |contentView| was essential because -r
erikchen 2014/07/11 20:48:04 I removed the local variable.
571 [[sourceWindow contentView] retain]);
572 // Disable autoresizing of subviews while we move views around. This prevents 571 // Disable autoresizing of subviews while we move views around. This prevents
573 // spurious renderer resizes. 572 // spurious renderer resizes.
574 [contentView setAutoresizesSubviews:NO]; 573 [contentView setAutoresizesSubviews:NO];
575 [contentView removeFromSuperview]; 574 [contentView removeFromSuperview];
576 575
577 // Have to do this here, otherwise later calls can crash because the window 576 // Have to do this here, otherwise later calls can crash because the window
578 // has no delegate. 577 // has no delegate.
579 [sourceWindow setDelegate:nil]; 578 [sourceWindow setDelegate:nil];
580 [destWindow setDelegate:self]; 579 [destWindow setDelegate:self];
581 580
582 // With this call, valgrind complains that a "Conditional jump or move depends 581 // With this call, valgrind complains that a "Conditional jump or move depends
583 // on uninitialised value(s)". The error happens in -[NSThemeFrame 582 // on uninitialised value(s)". The error happens in -[NSThemeFrame
584 // drawOverlayRect:]. I'm pretty convinced this is an Apple bug, but there is 583 // drawOverlayRect:]. I'm pretty convinced this is an Apple bug, but there is
585 // no visual impact. I have been unable to tickle it away with other window 584 // no visual impact. I have been unable to tickle it away with other window
586 // or view manipulation Cocoa calls. Stack added to suppressions_mac.txt. 585 // or view manipulation Cocoa calls. Stack added to suppressions_mac.txt.
587 [contentView setAutoresizesSubviews:YES]; 586 [contentView setAutoresizesSubviews:YES];
588 [destWindow setContentView:contentView]; 587 [[destWindow contentView] addSubview:contentView
588 positioned:NSWindowBelow
589 relativeTo:nil];
589 590
590 // Move the incognito badge if present. 591 // Move the incognito badge if present.
591 if ([self shouldShowAvatar]) { 592 if ([self shouldShowAvatar]) {
592 NSView* avatarButtonView = [avatarButtonController_ view]; 593 NSView* avatarButtonView = [avatarButtonController_ view];
593 594
594 [avatarButtonView removeFromSuperview]; 595 [avatarButtonView removeFromSuperview];
595 [avatarButtonView setHidden:YES]; // Will be shown in layout. 596 [avatarButtonView setHidden:YES]; // Will be shown in layout.
596 [[destWindow cr_windowView] addSubview:avatarButtonView]; 597 [[destWindow cr_windowView] addSubview:avatarButtonView];
597 } 598 }
598 599
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 846
846 - (void)windowDidEnterFullScreen:(NSNotification*)notification { 847 - (void)windowDidEnterFullScreen:(NSNotification*)notification {
847 // In Yosemite, some combination of the titlebar and toolbar always show in 848 // In Yosemite, some combination of the titlebar and toolbar always show in
848 // full-screen mode. We do not want either to show. Search for the window that 849 // full-screen mode. We do not want either to show. Search for the window that
849 // contains the views, and hide it. There is no need to ever unhide the view. 850 // contains the views, and hide it. There is no need to ever unhide the view.
850 // http://crbug.com/380235 851 // http://crbug.com/380235
851 if (base::mac::IsOSYosemiteOrLater()) { 852 if (base::mac::IsOSYosemiteOrLater()) {
852 for (NSWindow* window in [[NSApplication sharedApplication] windows]) { 853 for (NSWindow* window in [[NSApplication sharedApplication] windows]) {
853 if ([window 854 if ([window
854 isKindOfClass:NSClassFromString(@"NSToolbarFullScreenWindow")]) { 855 isKindOfClass:NSClassFromString(@"NSToolbarFullScreenWindow")]) {
855 [window.contentView setHidden:YES]; 856 [[window contentView] setHidden:YES];
856 } 857 }
857 } 858 }
858 } 859 }
859 860
860 if (notification) // For System Fullscreen when non-nil. 861 if (notification) // For System Fullscreen when non-nil.
861 [self deregisterForContentViewResizeNotifications]; 862 [self deregisterForContentViewResizeNotifications];
862 enteringFullscreen_ = NO; 863 enteringFullscreen_ = NO;
863 enteringPresentationMode_ = NO; 864 enteringPresentationMode_ = NO;
864 865
865 const CommandLine* command_line = CommandLine::ForCurrentProcess(); 866 const CommandLine* command_line = CommandLine::ForCurrentProcess();
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
923 924
924 barVisibilityUpdatesEnabled_ = NO; 925 barVisibilityUpdatesEnabled_ = NO;
925 [presentationModeController_ cancelAnimationAndTimers]; 926 [presentationModeController_ cancelAnimationAndTimers];
926 } 927 }
927 928
928 - (CGFloat)toolbarDividerOpacity { 929 - (CGFloat)toolbarDividerOpacity {
929 return [bookmarkBarController_ toolbarDividerOpacity]; 930 return [bookmarkBarController_ toolbarDividerOpacity];
930 } 931 }
931 932
932 - (void)updateSubviewZOrder:(BOOL)inPresentationMode { 933 - (void)updateSubviewZOrder:(BOOL)inPresentationMode {
933 NSView* contentView = [[self window] contentView]; 934 NSView* contentView = self.chromeContentView;
934 NSView* toolbarView = [toolbarController_ view]; 935 NSView* toolbarView = [toolbarController_ view];
935 936
936 if (inPresentationMode) { 937 if (inPresentationMode) {
937 // Toolbar is above tab contents so that it can slide down from top of 938 // Toolbar is above tab contents so that it can slide down from top of
938 // screen. 939 // screen.
939 [contentView cr_ensureSubview:toolbarView 940 [contentView cr_ensureSubview:toolbarView
940 isPositioned:NSWindowAbove 941 isPositioned:NSWindowAbove
941 relativeTo:[self tabContentArea]]; 942 relativeTo:[self tabContentArea]];
942 } else { 943 } else {
943 // Toolbar is below tab contents so that the info bar arrow can appear above 944 // Toolbar is below tab contents so that the info bar arrow can appear above
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1026 devTools->SetAllowOverlappingViews(allowOverlappingViews); 1027 devTools->SetAllowOverlappingViews(allowOverlappingViews);
1027 } 1028 }
1028 1029
1029 - (void)updateInfoBarTipVisibility { 1030 - (void)updateInfoBarTipVisibility {
1030 // If there's no toolbar then hide the infobar tip. 1031 // If there's no toolbar then hide the infobar tip.
1031 [infoBarContainerController_ 1032 [infoBarContainerController_
1032 setShouldSuppressTopInfoBarTip:![self hasToolbar]]; 1033 setShouldSuppressTopInfoBarTip:![self hasToolbar]];
1033 } 1034 }
1034 1035
1035 @end // @implementation BrowserWindowController(Private) 1036 @end // @implementation BrowserWindowController(Private)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698