18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2005 Apple Computer, Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its contributors may be used to endorse or promote products derived 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * from this software without specific prior written permission. 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef __LP64__ 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "CarbonWindowFrame.h" 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "CarbonWindowAdapter.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "CarbonWindowContentView.h" 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import <Foundation/NSGeometry.h> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import <Foundation/NSString.h> 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import <HIToolbox/MacWindows.h> 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "WebTypesInternal.h" 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@interface NSView(Secret) 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)_setWindow:(NSWindow *)window; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@end 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@class NSButton; 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@interface NSThemeFrame(NSHijackedClassMethods) 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project+ (float)_titlebarHeight:(unsigned int)style; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@end 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@implementation CarbonWindowFrame 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (NSRect)titlebarRect 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NSRect titlebarRect; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NSRect boundsRect; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project boundsRect = [self bounds]; 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CarbonWindowAdapter *carbonWindow; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project carbonWindow = (CarbonWindowAdapter *)[self window]; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WindowRef windowRef = [carbonWindow windowRef]; 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Rect globalBounds; 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project GetWindowBounds (windowRef, kWindowTitleBarRgn, &globalBounds); 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project titlebarRect.origin.x = boundsRect.origin.x; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project titlebarRect.size.width = boundsRect.size.width; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project titlebarRect.size.height = globalBounds.bottom - globalBounds.top; 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project titlebarRect.origin.y = NSMaxY(boundsRect) - titlebarRect.size.height; 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return titlebarRect; 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Given a content rectangle and style mask, return a corresponding frame rectangle. 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project+ (NSRect)frameRectForContentRect:(NSRect)contentRect styleMask:(NSUInteger)style { 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We don't bother figuring out a good value, because content rects weren't so meaningful for NSCarbonWindows in the past, but this might not be a good assumption anymore. M.P. Warning - 12/5/00 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return contentRect; 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project+ (NSRect)contentRectForFrameRect:(NSRect)frameRect styleMask:(NSUInteger)style { 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We don't bother figuring out a good value, because content rects weren't so meaningful for NSCarbonWindows in the past, but this might not be a good assumption anymore. KW - copied from +frameRectForContentRect:styleMask 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return frameRect; 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project+ (NSSize)minFrameSizeForMinContentSize:(NSSize)cSize styleMask:(NSUInteger)style { 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // See comments above. We don't make any assumptions about the relationship between content rects and frame rects 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return cSize; 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (NSRect)frameRectForContentRect:(NSRect)cRect styleMask:(NSUInteger)style { 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return [[self class] frameRectForContentRect: cRect styleMask:style]; 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (NSRect)contentRectForFrameRect:(NSRect)fRect styleMask:(NSUInteger)style { 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return [[self class] contentRectForFrameRect: fRect styleMask:style]; 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (NSSize)minFrameSizeForMinContentSize:(NSSize)cSize styleMask:(NSUInteger)style { 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return [[self class] minFrameSizeForMinContentSize:cSize styleMask: style]; 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Initialize. 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (id)initWithFrame:(NSRect)inFrameRect styleMask:(unsigned int)inStyleMask owner:(NSWindow *)inOwningWindow { 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Parameter check. 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (![inOwningWindow isKindOfClass:[CarbonWindowAdapter class]]) NSLog(@"CarbonWindowFrames can only be owned by CarbonWindowAdapters."); 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Do the standard Cocoa thing. 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project self = [super initWithFrame:inFrameRect]; 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!self) return nil; 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Record what we'll need later. 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project _styleMask = inStyleMask; 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Do what NSFrameView's method of the same name does. 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project [self _setWindow:inOwningWindow]; 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project [self setNextResponder:inOwningWindow]; 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Done. 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return self; 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Deallocate. 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)dealloc { 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Simple. 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project [super dealloc]; 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Sink a method invocation. 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)_setFrameNeedsDisplay:(BOOL)needsDisplay { 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Sink a method invocation. 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)_setSheet:(BOOL)sheetFlag { 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Sink a method invocation. 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)_updateButtonState { 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if 0 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Sink a method invocation. 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)_windowChangedKeyState { 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Toolbar methods that NSWindow expects to be there. 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (BOOL)_canHaveToolbar { return NO; } 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (BOOL)_toolbarIsInTransition { return NO; } 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (BOOL)_toolbarIsShown { return NO; } 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (BOOL)_toolbarIsHidden { return NO; } 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)_showToolbarWithAnimation:(BOOL)animate {} 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)_hideToolbarWithAnimation:(BOOL)animate {} 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (float)_distanceFromToolbarBaseToTitlebar { return 0; } 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Refuse to admit there's a close button on the window. 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (NSButton *)closeButton { 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Simple. 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return nil; 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Return what's asked for. 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (unsigned int)styleMask { 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Simple. 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return _styleMask; 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Return what's asked for. 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (NSRect)dragRectForFrameRect:(NSRect)frameRect { 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Do what NSThemeFrame would do. 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // If we just return NSZeroRect here, _NXMakeWindowVisible() gets all befuddled in the sheet-showing case, a window-moving loop is entered, and the sheet gets moved right off of the screen. M.P. Warning - 3/23/01 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NSRect dragRect; 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dragRect.size.height = 27;//[NSThemeFrame _titlebarHeight:[self styleMask]]; 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dragRect.origin.y = NSMaxY(frameRect) - dragRect.size.height; 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dragRect.size.width = frameRect.size.width; 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dragRect.origin.x = frameRect.origin.x; 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return dragRect; 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Return what's asked for. 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (BOOL)isOpaque { 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Return a value that will make -[NSWindow displayIfNeeded] on our Carbon window actually work. 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return YES; 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Refuse to admit there's a minimize button on the window. 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (NSButton *)minimizeButton { 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Simple. 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return nil; 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Do the right thing for a Carbon window. 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)setTitle:(NSString *)title { 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CarbonWindowAdapter *carbonWindow; 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project OSStatus osStatus; 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WindowRef windowRef; 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Set the Carbon window's title. 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project carbonWindow = (CarbonWindowAdapter *)[self window]; 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project windowRef = [carbonWindow windowRef]; 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project osStatus = SetWindowTitleWithCFString(windowRef, (CFStringRef)title); 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (osStatus!=noErr) NSLog(@"A Carbon window's title couldn't be set."); 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Return what's asked for. 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (NSString *)title { 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CFStringRef windowTitle; 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project CarbonWindowAdapter *carbonWindow; 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NSString *windowTitleAsNSString; 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project OSStatus osStatus; 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WindowRef windowRef; 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Return the Carbon window's title. 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project carbonWindow = (CarbonWindowAdapter *)[self window]; 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project windowRef = [carbonWindow windowRef]; 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project osStatus = CopyWindowTitleAsCFString(windowRef, &windowTitle); 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (osStatus==noErr) { 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project windowTitleAsNSString = (NSString *)windowTitle; 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else { 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NSLog(@"A Carbon window's title couldn't be gotten."); 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project windowTitleAsNSString = @""; 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return [windowTitleAsNSString autorelease]; 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Return what's asked for. 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (float)_sheetHeightAdjustment { 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Do what NSThemeFrame would do. 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 22;//[NSThemeFrame _titlebarHeight:([self styleMask] & ~NSDocModalWindowMask)]; 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Return what's asked for. 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (float)_maxTitlebarTitleRect { 2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Do what NSThemeFrame would do. 2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 22;//[NSThemeFrame _titlebarHeight:([self styleMask] & ~NSDocModalWindowMask)]; 2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)_clearDragMargins { 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)_resetDragMargins { 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@end // implementation NSCarbonWindowFrame 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 289