OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "chrome/browser/cocoa/bookmark_bar_folder_hover_state.h" | 5 #import "chrome/browser/cocoa/bookmark_bar_folder_hover_state.h" |
6 #import "chrome/browser/cocoa/bookmark_bar_controller.h" // namespace bookmarks | 6 #import "chrome/browser/cocoa/bookmark_bar_controller.h" // namespace bookmarks |
7 | 7 |
8 @interface BookmarkBarFolderHoverState(Private) | 8 @interface BookmarkBarFolderHoverState(Private) |
9 - (void)setHoverState:(HoverState)state; | 9 - (void)setHoverState:(HoverState)state; |
10 - (void)closeBookmarkFolderOnHoverButton:(BookmarkButton*)button; | 10 - (void)closeBookmarkFolderOnHoverButton:(BookmarkButton*)button; |
(...skipping 20 matching lines...) Expand all Loading... |
31 // This implies we've dragged over a new folder, so we'll close the old | 31 // This implies we've dragged over a new folder, so we'll close the old |
32 // and open the new. | 32 // and open the new. |
33 // Note that we only schedule the open or close if we have no other tasks | 33 // Note that we only schedule the open or close if we have no other tasks |
34 // currently pending. | 34 // currently pending. |
35 | 35 |
36 if (hoverState_ == kHoverStateOpen) { | 36 if (hoverState_ == kHoverStateOpen) { |
37 // Close the old. | 37 // Close the old. |
38 [self scheduleCloseBookmarkFolderOnHoverButton]; | 38 [self scheduleCloseBookmarkFolderOnHoverButton]; |
39 } else if (hoverState_ == kHoverStateClosed) { | 39 } else if (hoverState_ == kHoverStateClosed) { |
40 // Open the new. | 40 // Open the new. |
41 [self scheduleOpenBookmarkFolderOnHoverButton:[button retain]]; | 41 [self scheduleOpenBookmarkFolderOnHoverButton:button]; |
42 } | 42 } |
43 } else if (!hoverButton_) { | 43 } else if (!hoverButton_) { |
44 // CASE C: we don't have a current hoverButton_ but we have dragged onto | 44 // CASE C: we don't have a current hoverButton_ but we have dragged onto |
45 // a new folder so we open the new one. | 45 // a new folder so we open the new one. |
46 [self scheduleOpenBookmarkFolderOnHoverButton:[button retain]]; | 46 [self scheduleOpenBookmarkFolderOnHoverButton:button]; |
47 } | 47 } |
48 } else if (!button) { | 48 } else if (!button) { |
49 if (hoverButton_) { | 49 if (hoverButton_) { |
50 // CASE D: We have a hoverButton_ but we've moved onto an area that | 50 // CASE D: We have a hoverButton_ but we've moved onto an area that |
51 // requires no hover. We close the hoverButton_ in this case. This | 51 // requires no hover. We close the hoverButton_ in this case. This |
52 // means cancelling if the open is pending (i.e. |kHoverStateOpening|) | 52 // means cancelling if the open is pending (i.e. |kHoverStateOpening|) |
53 // or closing if we don't alrealy have once in progress. | 53 // or closing if we don't alrealy have once in progress. |
54 | 54 |
55 // Intiate close only if we have not already done so. | 55 // Intiate close only if we have not already done so. |
56 if (hoverState_ == kHoverStateOpening) { | 56 if (hoverState_ == kHoverStateOpening) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 [self setHoverState:kHoverStateOpen]; | 93 [self setHoverState:kHoverStateOpen]; |
94 [NSObject | 94 [NSObject |
95 cancelPreviousPerformRequestsWithTarget:self | 95 cancelPreviousPerformRequestsWithTarget:self |
96 selector:@selector(closeBookmarkFolderOnHoverButton:) | 96 selector:@selector(closeBookmarkFolderOnHoverButton:) |
97 object:hoverButton_]; | 97 object:hoverButton_]; |
98 } | 98 } |
99 | 99 |
100 // Schedule open of hover button. Transition to kHoverStateOpening state. | 100 // Schedule open of hover button. Transition to kHoverStateOpening state. |
101 - (void)scheduleOpenBookmarkFolderOnHoverButton:(BookmarkButton*)button { | 101 - (void)scheduleOpenBookmarkFolderOnHoverButton:(BookmarkButton*)button { |
102 DCHECK(button); | 102 DCHECK(button); |
103 hoverButton_.reset(button); | 103 hoverButton_.reset([button retain]); |
104 [self setHoverState:kHoverStateOpening]; | 104 [self setHoverState:kHoverStateOpening]; |
105 [self performSelector:@selector(openBookmarkFolderOnHoverButton:) | 105 [self performSelector:@selector(openBookmarkFolderOnHoverButton:) |
106 withObject:hoverButton_ | 106 withObject:hoverButton_ |
107 afterDelay:bookmarks::kDragHoverOpenDelay]; | 107 afterDelay:bookmarks::kDragHoverOpenDelay]; |
108 } | 108 } |
109 | 109 |
110 // Cancel pending hover open. Transition to kHoverStateClosed state. | 110 // Cancel pending hover open. Transition to kHoverStateClosed state. |
111 - (void)cancelPendingOpenBookmarkFolderOnHoverButton { | 111 - (void)cancelPendingOpenBookmarkFolderOnHoverButton { |
112 [self setHoverState:kHoverStateClosed]; | 112 [self setHoverState:kHoverStateClosed]; |
113 [NSObject | 113 [NSObject |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 // Called after a delay to open a new hover folder. | 162 // Called after a delay to open a new hover folder. |
163 // Note: this method is not meant to be invoked directly, only through | 163 // Note: this method is not meant to be invoked directly, only through |
164 // a delayed call to |scheduleOpenBookmarkFolderOnHoverButton:|. | 164 // a delayed call to |scheduleOpenBookmarkFolderOnHoverButton:|. |
165 - (void)openBookmarkFolderOnHoverButton:(BookmarkButton*)button { | 165 - (void)openBookmarkFolderOnHoverButton:(BookmarkButton*)button { |
166 [self setHoverState:kHoverStateOpen]; | 166 [self setHoverState:kHoverStateOpen]; |
167 [[button target] performSelector:@selector(openBookmarkFolderFromButton:) | 167 [[button target] performSelector:@selector(openBookmarkFolderFromButton:) |
168 withObject:button]; | 168 withObject:button]; |
169 } | 169 } |
170 | 170 |
171 @end | 171 @end |
OLD | NEW |