base_view.h revision 21d179b334e59e9a3bfcaed4c4430bef1bc5759d
1// Copyright (c) 2009 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_BASE_VIEW_H_ 6#define CHROME_BROWSER_UI_COCOA_BASE_VIEW_H_ 7#pragma once 8 9#import <Cocoa/Cocoa.h> 10 11#include "base/scoped_nsobject.h" 12#include "gfx/rect.h" 13 14// A view that provides common functionality that many views will need: 15// - Automatic registration for mouse-moved events. 16// - Funneling of mouse and key events to two methods 17// - Coordinate conversion utilities 18 19@interface BaseView : NSView { 20 @private 21 NSTrackingArea *trackingArea_; 22 BOOL dragging_; 23 scoped_nsobject<NSEvent> pendingExitEvent_; 24} 25 26- (id)initWithFrame:(NSRect)frame; 27 28// Override these methods in a subclass. 29- (void)mouseEvent:(NSEvent *)theEvent; 30- (void)keyEvent:(NSEvent *)theEvent; 31 32// Useful rect conversions (doing coordinate flipping) 33- (gfx::Rect)flipNSRectToRect:(NSRect)rect; 34- (NSRect)flipRectToNSRect:(gfx::Rect)rect; 35 36@end 37 38// A notification that a view may issue when it receives first responder status. 39// The name is |kViewDidBecomeFirstResponder|, the object is the view, and the 40// NSSelectionDirection is wrapped in an NSNumber under the key 41// |kSelectionDirection|. 42extern NSString* kViewDidBecomeFirstResponder; 43extern NSString* kSelectionDirection; 44 45#endif // CHROME_BROWSER_UI_COCOA_BASE_VIEW_H_ 46