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 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_COCOA_FRAMED_BROWSER_WINDOW_H_ 6#define CHROME_BROWSER_UI_COCOA_FRAMED_BROWSER_WINDOW_H_ 7 8#import <Cocoa/Cocoa.h> 9 10#include "chrome/browser/ui/cocoa/chrome_browser_window.h" 11 12// Offsets from the top/left of the window frame to the top of the window 13// controls (zoom, close, miniaturize) for a window with a tabstrip. 14const NSInteger kFramedWindowButtonsWithTabStripOffsetFromTop = 11; 15const NSInteger kFramedWindowButtonsWithTabStripOffsetFromLeft = 11; 16 17// Offsets from the top/left of the window frame to the top of the window 18// controls (zoom, close, miniaturize) for a window without a tabstrip. 19const NSInteger kFramedWindowButtonsWithoutTabStripOffsetFromTop = 4; 20const NSInteger kFramedWindowButtonsWithoutTabStripOffsetFromLeft = 8; 21 22// Cocoa class representing a framed browser window. 23// We need to override NSWindow with our own class since we need access to all 24// unhandled keyboard events and subclassing NSWindow is the only method to do 25// this. We also handle our own window controls and custom window frame drawing. 26@interface FramedBrowserWindow : ChromeBrowserWindow { 27 @private 28 BOOL shouldHideTitle_; 29 BOOL hasTabStrip_; 30 NSButton* closeButton_; 31 NSButton* miniaturizeButton_; 32 NSButton* zoomButton_; 33 34 CGFloat windowButtonsInterButtonSpacing_; 35} 36 37// Designated initializer. 38- (id)initWithContentRect:(NSRect)contentRect 39 hasTabStrip:(BOOL)hasTabStrip; 40 41// Tells the window to suppress title drawing. 42- (void)setShouldHideTitle:(BOOL)flag; 43 44// Returns the desired spacing between window control views. 45- (CGFloat)windowButtonsInterButtonSpacing; 46 47// Calls the superclass's implementation of |-toggleFullScreen:|. 48- (void)toggleSystemFullScreen; 49 50// Called by CustomFrameView to determine a custom location for the Lion 51// fullscreen button. Returns NSZeroPoint to use the Lion default. 52- (NSPoint)fullScreenButtonOriginAdjustment; 53 54// Draws the window theme into the specified rect. Returns whether a theme was 55// drawn (whether incognito or full pattern theme; an overlay image doesn't 56// count). 57+ (BOOL)drawWindowThemeInDirtyRect:(NSRect)dirtyRect 58 forView:(NSView*)view 59 bounds:(NSRect)bounds 60 forceBlackBackground:(BOOL)forceBlackBackground; 61 62// Gets the color to draw title text. 63- (NSColor*)titleColor; 64 65@end 66 67@interface NSWindow (UndocumentedAPI) 68 69// Undocumented Cocoa API to suppress drawing of the window's title. 70// -setTitle: still works, but the title set only applies to the 71// miniwindow and menus (and, importantly, Expose). Overridden to 72// return |shouldHideTitle_|. 73-(BOOL)_isTitleHidden; 74 75@end 76 77#endif // CHROME_BROWSER_UI_COCOA_FRAMED_BROWSER_WINDOW_H_ 78