1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#ifndef CHROME_BROWSER_UI_COCOA_BASE_VIEW_H_ 621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#define CHROME_BROWSER_UI_COCOA_BASE_VIEW_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#import <Cocoa/Cocoa.h> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_nsobject.h" 1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/rect.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A view that provides common functionality that many views will need: 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// - Automatic registration for mouse-moved events. 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// - Funneling of mouse and key events to two methods 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// - Coordinate conversion utilities 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@interface BaseView : NSView { 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch @private 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NSTrackingArea *trackingArea_; 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BOOL dragging_; 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_nsobject<NSEvent> pendingExitEvent_; 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch- (id)initWithFrame:(NSRect)frame; 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Override these methods in a subclass. 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch- (void)mouseEvent:(NSEvent *)theEvent; 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch- (void)keyEvent:(NSEvent *)theEvent; 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Useful rect conversions (doing coordinate flipping) 333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick- (gfx::Rect)flipNSRectToRect:(NSRect)rect; 343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick- (NSRect)flipRectToNSRect:(gfx::Rect)rect; 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@end 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// A notification that a view may issue when it receives first responder status. 39513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// The name is |kViewDidBecomeFirstResponder|, the object is the view, and the 40513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// NSSelectionDirection is wrapped in an NSNumber under the key 41513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// |kSelectionDirection|. 42513209b27ff55e2841eac0e4120199c23acce758Ben Murdochextern NSString* kViewDidBecomeFirstResponder; 43513209b27ff55e2841eac0e4120199c23acce758Ben Murdochextern NSString* kSelectionDirection; 44513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#endif // CHROME_BROWSER_UI_COCOA_BASE_VIEW_H_ 46