1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file.
4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_UI_COCOA_TOOLBAR_TOOLBAR_BUTTON_H_
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_UI_COCOA_TOOLBAR_TOOLBAR_BUTTON_H_
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#import <Cocoa/Cocoa.h>
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// NSButton subclass which handles middle mouse clicking.
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen@interface ToolbarButton : NSButton {
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen @protected
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // YES when middle mouse clicks should be handled.
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  BOOL handleMiddleClick_;
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // YES when a middle mouse click is being handled. This is set to YES by an
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // NSOtherMouseDown event, and NO by an NSOtherMouseUp event. While this is
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // YES, other mouse button events should be ignored.
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  BOOL handlingMiddleClick_;
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Whether or not to handle the mouse middle click events.
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen@property(assign, nonatomic) BOOL handleMiddleClick;
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen@end
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen@interface ToolbarButton (ExposedForTesting)
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen- (BOOL)shouldHandleEvent:(NSEvent*)theEvent;
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen@end
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif  // CHROME_BROWSER_UI_COCOA_TOOLBAR_TOOLBAR_BUTTON_H_
34