File: tab_strip_drag_controller.h

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (72 lines) | stat: -rw-r--r-- 2,681 bytes parent folder | download
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Copyright (c) 2011 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.

#ifndef CHROME_BROWSER_UI_COCOA_TABS_TAB_STRIP_DRAG_CONTROLLER_H_
#define CHROME_BROWSER_UI_COCOA_TABS_TAB_STRIP_DRAG_CONTROLLER_H_

#import <Cocoa/Cocoa.h>
#include <map>

@class TabController;
@class TabStripController;
@class TabWindowController;

////////////////////////////////////////////////////////////////////////////////

// This protocol is used to carry mouse events to the TabStripDragController,
// which manages the logic for actually dragging tabs.
@protocol TabDraggingEventTarget

// Returns YES if the tab represented by the controller can be dragged.
- (BOOL)tabCanBeDragged:(TabController*)tab;

// Initiates a dragging session with a mouseDown event. The tab controller
// passed here is the one used for the rest of the dragging session.
- (void)maybeStartDrag:(NSEvent*)event forTab:(TabController*)tab;

@end

////////////////////////////////////////////////////////////////////////////////

// This controller is owned by the TabStripController and is used to delegate
// all the logic for tab dragging from the TabView's events.
@interface TabStripDragController : NSObject<TabDraggingEventTarget> {
 @private
  TabStripController* tabStrip_;  // Weak; owns this.

  // These are released on mouseUp:
  BOOL moveWindowOnDrag_;  // Set if the only tab of a window is dragged.
  BOOL tabWasDragged_;  // Has the tab been dragged?
  BOOL draggingWithinTabStrip_;  // Did drag stay in the current tab strip?
  BOOL chromeIsVisible_;

  NSTimeInterval tearTime_;  // Time since tear happened
  NSPoint tearOrigin_;  // Origin of the tear rect
  NSPoint dragOrigin_;  // Origin point of the drag

  TabWindowController* sourceController_;  // weak. controller starting the drag
  NSWindow* sourceWindow_;  // Weak. The window starting the drag.
  NSRect sourceWindowFrame_;
  NSRect sourceTabFrame_;

  TabController* draggedTab_;  // Weak. The tab controller being dragged.

  TabWindowController* draggedController_;  // Weak. Controller being dragged.
  NSWindow* dragWindow_;  // Weak. The window being dragged
  NSWindow* dragOverlay_;  // Weak. The overlay being dragged

  TabWindowController* targetController_;  // weak. Controller being targeted
}

// The tab being dragged, or nil if not dragging a tab.
@property(readonly) TabController* draggedTab;

// Designated initializer.
- (id)initWithTabStripController:(TabStripController*)controller;

// TabDraggingEventTarget methods are also implemented.

@end

#endif  // CHROME_BROWSER_UI_COCOA_TABS_TAB_STRIP_DRAG_CONTROLLER_H_