diff options
author | mark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-06 19:56:03 +0000 |
---|---|---|
committer | mark@chromium.org <mark@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-06 19:56:03 +0000 |
commit | c76991fa06ea1710d4a800c82a48d3ee139a56a3 (patch) | |
tree | fb4bcc6916d9d47ddda8237c20384cf3cf821b97 | |
parent | 72ef470047f1c45022aaf37da9534c72839d3378 (diff) | |
download | chromium_src-c76991fa06ea1710d4a800c82a48d3ee139a56a3.zip chromium_src-c76991fa06ea1710d4a800c82a48d3ee139a56a3.tar.gz chromium_src-c76991fa06ea1710d4a800c82a48d3ee139a56a3.tar.bz2 |
Theme delegate fixes for the 10.6 SDK folllowing r43708.
In the 10.6 SDK, -[NSWindow delegate] returns id<NSWindowDelegate>, not just
id, and the three selectors used in r43708 are not declared in
NSWindowDelegate. This results in errors such as "warning: '-themeProvider'
not found in protocol(s)".
Testing the selectors before using them is safe and not incorrect, but you
guys might actually want to make more of an assertion about what it means to
be a ChromeBrowserWindow's or FullscreenWindow's delegate, or perhaps even
a ChromeEventProcessingWindow's delegate. Alternatively, it may be
appropriate to add a ChromeThemedWindow layer as a subclass of CEPW and
superclass of CBW and FW. (CEPW's other subclass is InfoBubbleWindow.)
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/1630001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43746 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/cocoa/chrome_browser_window.mm | 15 | ||||
-rw-r--r-- | chrome/browser/cocoa/fullscreen_window.mm | 15 |
2 files changed, 24 insertions, 6 deletions
diff --git a/chrome/browser/cocoa/chrome_browser_window.mm b/chrome/browser/cocoa/chrome_browser_window.mm index 67a612b..eecf09f 100644 --- a/chrome/browser/cocoa/chrome_browser_window.mm +++ b/chrome/browser/cocoa/chrome_browser_window.mm @@ -344,15 +344,24 @@ namespace { } - (ThemeProvider*)themeProvider { - return [[self delegate] themeProvider]; + id delegate = [self delegate]; + if (![delegate respondsToSelector:@selector(themeProvider)]) + return NULL; + return [delegate themeProvider]; } - (ThemedWindowStyle)themedWindowStyle { - return [[self delegate] themedWindowStyle]; + id delegate = [self delegate]; + if (![delegate respondsToSelector:@selector(themedWindowStyle)]) + return THEMED_NORMAL; + return [delegate themedWindowStyle]; } - (NSPoint)themePatternPhase { - return [[self delegate] themePatternPhase]; + id delegate = [self delegate]; + if (![delegate respondsToSelector:@selector(themePatternPhase)]) + return NSMakePoint(0, 0); + return [delegate themePatternPhase]; } @end diff --git a/chrome/browser/cocoa/fullscreen_window.mm b/chrome/browser/cocoa/fullscreen_window.mm index 4218d11..4fd2be1 100644 --- a/chrome/browser/cocoa/fullscreen_window.mm +++ b/chrome/browser/cocoa/fullscreen_window.mm @@ -83,15 +83,24 @@ } - (ThemeProvider*)themeProvider { - return [[self delegate] themeProvider]; + id delegate = [self delegate]; + if (![delegate respondsToSelector:@selector(themeProvider)]) + return NULL; + return [delegate themeProvider]; } - (ThemedWindowStyle)themedWindowStyle { - return [[self delegate] themedWindowStyle]; + id delegate = [self delegate]; + if (![delegate respondsToSelector:@selector(themedWindowStyle)]) + return THEMED_NORMAL; + return [delegate themedWindowStyle]; } - (NSPoint)themePatternPhase { - return [[self delegate] themePatternPhase]; + id delegate = [self delegate]; + if (![delegate respondsToSelector:@selector(themePatternPhase)]) + return NSMakePoint(0, 0); + return [delegate themePatternPhase]; } @end |