summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/bookmark_button.h
blob: 631a7baf427acb1067f2c814148943718f5985cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#import <Cocoa/Cocoa.h>

@protocol BookmarkButtonDelegate;

// Class for bookmark bar buttons that can be drag sources.
@interface BookmarkButton : NSButton {
 @private
  BOOL draggable_;     // Is this a draggable type of button?
  BOOL mayDragStart_;  // Set to YES on mouse down, NO on up or drag.
  BOOL beingDragged_;
  id<BookmarkButtonDelegate> delegate_;

  // Initial mouse-down to prevent a hair-trigger drag.
  NSPoint initialMouseDownLocation_;
}

// Enable or disable dragability for special buttons like "Other Bookmarks".
@property BOOL draggable;

@property(assign, nonatomic) id<BookmarkButtonDelegate> delegate;

@end  // @interface BookmarkButton

// Protocol for a |BookmarkButton|'s delegate, which is responsible for doing
// things which require information about the bookmark represented by this
// button.
@protocol BookmarkButtonDelegate

// Fill the given pasteboard with appropriate data when the given button is
// dragged. Since the delegate has no way of providing pasteboard data later,
// all data must actually be put into the pasteboard and not merely promised.
- (void)fillPasteboard:(NSPasteboard*)pboard
       forDragOfButton:(BookmarkButton*)button;

@end  // @protocol BookmarkButtonDelegate