// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_UI_COCOA_FRAMED_BROWSER_WINDOW_H_ #define CHROME_BROWSER_UI_COCOA_FRAMED_BROWSER_WINDOW_H_ #import #include "base/memory/scoped_nsobject.h" #include "chrome/browser/ui/cocoa/chrome_browser_window.h" // Offsets from the top/left of the window frame to the top of the window // controls (zoom, close, miniaturize) for a window with a tabstrip. const NSInteger kFramedWindowButtonsWithTabStripOffsetFromTop = 11; const NSInteger kFramedWindowButtonsWithTabStripOffsetFromLeft = 11; // Offsets from the top/left of the window frame to the top of the window // controls (zoom, close, miniaturize) for a window without a tabstrip. const NSInteger kFramedWindowButtonsWithoutTabStripOffsetFromTop = 4; const NSInteger kFramedWindowButtonsWithoutTabStripOffsetFromLeft = 8; // Cocoa class representing a framed browser window. // We need to override NSWindow with our own class since we need access to all // unhandled keyboard events and subclassing NSWindow is the only method to do // this. We also handle our own window controls and custom window frame drawing. @interface FramedBrowserWindow : ChromeBrowserWindow { @private BOOL shouldHideTitle_; BOOL hasTabStrip_; NSButton* closeButton_; NSButton* miniaturizeButton_; NSButton* zoomButton_; CGFloat windowButtonsInterButtonSpacing_; } // Designated initializer. - (id)initWithContentRect:(NSRect)contentRect hasTabStrip:(BOOL)hasTabStrip; // Tells the window to suppress title drawing. - (void)setShouldHideTitle:(BOOL)flag; // Returns the desired spacing between window control views. - (CGFloat)windowButtonsInterButtonSpacing; // Calls the superclass's implementation of |-toggleFullScreen:|. - (void)toggleSystemFullScreen; // Called by CustomFrameView to determine a custom location for the Lion // fullscreen button. Returns NSZeroPoint to use the Lion default. - (NSPoint)fullScreenButtonOriginAdjustment; // Draws the window theme into the specified rect. Returns whether a theme was // drawn (whether incognito or full pattern theme; an overlay image doesn't // count). + (BOOL)drawWindowThemeInDirtyRect:(NSRect)dirtyRect forView:(NSView*)view bounds:(NSRect)bounds offset:(NSPoint)offset forceBlackBackground:(BOOL)forceBlackBackground; // Gets the color to draw title text. - (NSColor*)titleColor; @end @interface NSWindow (UndocumentedAPI) // Undocumented Cocoa API to suppress drawing of the window's title. // -setTitle: still works, but the title set only applies to the // miniwindow and menus (and, importantly, Expose). Overridden to // return |shouldHideTitle_|. -(BOOL)_isTitleHidden; @end #endif // CHROME_BROWSER_UI_COCOA_FRAMED_BROWSER_WINDOW_H_