Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/custom_frame_view.h" | 5 #import "chrome/browser/ui/cocoa/custom_frame_view.h" |
| 6 | 6 |
| 7 #import <Carbon/Carbon.h> | |
| 8 #include <crt_externs.h> | |
| 7 #import <objc/runtime.h> | 9 #import <objc/runtime.h> |
| 8 #import <Carbon/Carbon.h> | 10 #include <string.h> |
| 9 | 11 |
| 10 #include "base/logging.h" | 12 #include "base/logging.h" |
| 11 #include "base/mac/mac_util.h" | 13 #include "base/mac/mac_util.h" |
| 12 #include "base/mac/scoped_nsautorelease_pool.h" | 14 #include "base/mac/scoped_nsautorelease_pool.h" |
| 13 | 15 |
| 14 namespace { | 16 namespace { |
| 15 BOOL gCanDrawTitle = NO; | 17 BOOL gCanDrawTitle = NO; |
| 16 BOOL gCanGetCornerRadius = NO; | 18 BOOL gCanGetCornerRadius = NO; |
| 17 } // namespace | 19 } // namespace |
| 18 | 20 |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 36 @end | 38 @end |
| 37 | 39 |
| 38 @implementation CustomFrameView | 40 @implementation CustomFrameView |
| 39 | 41 |
| 40 // This is where we swizzle drawRect, and add in two methods that we | 42 // This is where we swizzle drawRect, and add in two methods that we |
| 41 // need. If any of these fail it shouldn't affect the functionality of the | 43 // need. If any of these fail it shouldn't affect the functionality of the |
| 42 // others. If they all fail, we will lose window frame theming and | 44 // others. If they all fail, we will lose window frame theming and |
| 43 // roll overs for our close widgets, but things should still function | 45 // roll overs for our close widgets, but things should still function |
| 44 // correctly. | 46 // correctly. |
| 45 + (void)load { | 47 + (void)load { |
| 48 // Swizzling should only happen in the browser process. Interacting with | |
| 49 // AppKit will run +[borderViewClass initialize] in the renderer, which | |
| 50 // may establish Mach IPC with com.apple.windowserver. | |
| 51 // Note that CommandLine has not been initialized yet, since this is running | |
| 52 // as a module initializer. | |
| 53 const char* const* const argv = *_NSGetArgv(); | |
| 54 const int argc = *_NSGetArgc(); | |
| 55 const char kType[] = "--type"; | |
|
Mark Mentovai
2014/02/07 19:58:00
Missing = relative to what you had before. Put it
Robert Sesek
2014/02/07 20:08:26
Done.
| |
| 56 for (int i = 1; i < argc; ++i) { | |
| 57 const char* arg = argv[i]; | |
| 58 if (strncmp(arg, kType, sizeof(kType) - 1) == 0) | |
|
Mark Mentovai
2014/02/07 19:58:00
Tip: strlen(kType) is fine too. The compiler is sm
Robert Sesek
2014/02/07 20:08:26
Nice tip. Compiler so smart.
| |
| 59 return; | |
| 60 } | |
| 61 | |
| 46 base::mac::ScopedNSAutoreleasePool pool; | 62 base::mac::ScopedNSAutoreleasePool pool; |
| 47 | 63 |
| 48 // On 10.8+ the background for textured windows are no longer drawn by | 64 // On 10.8+ the background for textured windows are no longer drawn by |
| 49 // NSGrayFrame, and NSThemeFrame is used instead <http://crbug.com/114745>. | 65 // NSGrayFrame, and NSThemeFrame is used instead <http://crbug.com/114745>. |
| 50 Class borderViewClass = NSClassFromString( | 66 Class borderViewClass = NSClassFromString( |
| 51 base::mac::IsOSMountainLionOrLater() ? @"NSThemeFrame" : @"NSGrayFrame"); | 67 base::mac::IsOSMountainLionOrLater() ? @"NSThemeFrame" : @"NSGrayFrame"); |
| 52 DCHECK(borderViewClass); | 68 DCHECK(borderViewClass); |
| 53 if (!borderViewClass) return; | 69 if (!borderViewClass) return; |
| 54 | 70 |
| 55 // Exchange draw rect. | 71 // Exchange draw rect. |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 129 if ([window respondsToSelector:@selector(fullScreenButtonOriginAdjustment)]) | 145 if ([window respondsToSelector:@selector(fullScreenButtonOriginAdjustment)]) |
| 130 offset = [window fullScreenButtonOriginAdjustment]; | 146 offset = [window fullScreenButtonOriginAdjustment]; |
| 131 | 147 |
| 132 NSPoint origin = [self _fullScreenButtonOriginOriginal]; | 148 NSPoint origin = [self _fullScreenButtonOriginOriginal]; |
| 133 origin.x += offset.x; | 149 origin.x += offset.x; |
| 134 origin.y += offset.y; | 150 origin.y += offset.y; |
| 135 return origin; | 151 return origin; |
| 136 } | 152 } |
| 137 | 153 |
| 138 @end | 154 @end |
| OLD | NEW |