| 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 |