Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(278)

Side by Side Diff: chrome/browser/ui/cocoa/toolbar/reload_button.h

Issue 7466016: Fix up reload button to not flicker, and simplify implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove unnecessary header Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_UI_COCOA_TOOLBAR_RELOAD_BUTTON_H_ 5 #ifndef CHROME_BROWSER_UI_COCOA_TOOLBAR_RELOAD_BUTTON_H_
6 #define CHROME_BROWSER_UI_COCOA_TOOLBAR_RELOAD_BUTTON_H_ 6 #define CHROME_BROWSER_UI_COCOA_TOOLBAR_RELOAD_BUTTON_H_
7 #pragma once 7 #pragma once
8 8
9 #import <Cocoa/Cocoa.h> 9 #import <Cocoa/Cocoa.h>
10 10
11 #import "base/memory/scoped_nsobject.h" 11 #import "chrome/browser/ui/cocoa/image_button_cell.h"
12 #import "chrome/browser/ui/cocoa/toolbar/toolbar_button.h" 12 #import "chrome/browser/ui/cocoa/toolbar/toolbar_button.h"
13 13
14 // ToolbarButton subclass which defers certain state changes when the mouse 14 // ToolbarButton subclass which defers certain state changes when the mouse
15 // is hovering over it. 15 // is hovering over it.
16 16
17 @interface ReloadButton : ToolbarButton { 17 @interface ReloadButton : ToolbarButton<ImageButton> {
18 @private 18 @private
19 // Tracks whether the mouse is hovering for purposes of not making
20 // unexpected state changes.
21 BOOL isMouseInside_;
22 scoped_nsobject<NSTrackingArea> trackingArea_;
23
24 // Timer used when setting reload mode while the mouse is hovered. 19 // Timer used when setting reload mode while the mouse is hovered.
25 scoped_nsobject<NSTimer> pendingReloadTimer_; 20 NSTimer* pendingReloadTimer_;
26 } 21 }
27 22
28 // Returns YES if the mouse is currently inside the bounds.
29 - (BOOL)isMouseInside;
30
31 // Update the tag, and the image and tooltip to match. If |anInt| 23 // Update the tag, and the image and tooltip to match. If |anInt|
32 // matches the current tag, no action is taken. |anInt| must be 24 // matches the current tag, no action is taken. |anInt| must be
33 // either |IDC_STOP| or |IDC_RELOAD|. 25 // either |IDC_STOP| or |IDC_RELOAD|.
34 - (void)updateTag:(NSInteger)anInt; 26 - (void)updateTag:(NSInteger)anInt;
35 27
36 // Update the button to be a reload button or stop button depending on 28 // Update the button to be a reload button or stop button depending on
37 // |isLoading|. If |force|, always sets the indicated mode. If 29 // |isLoading|. If |force|, always sets the indicated mode. If
38 // |!force|, and the mouse is over the button, defer the transition 30 // |!force|, and the mouse is over the button, defer the transition
39 // from stop button to reload button until the mouse has left the 31 // from stop button to reload button until the mouse has left the
40 // button, or until |pendingReloadTimer_| fires. This prevents an 32 // button, or until |pendingReloadTimer_| fires. This prevents an
41 // inadvertent click _just_ as the state changes. 33 // inadvertent click _just_ as the state changes.
42 - (void)setIsLoading:(BOOL)isLoading force:(BOOL)force; 34 - (void)setIsLoading:(BOOL)isLoading force:(BOOL)force;
43 35
44 @end 36 @end
45 37
46 @interface ReloadButton (PrivateTestingMethods)
47 + (void)setPendingReloadTimeout:(NSTimeInterval)seconds;
48 - (NSTrackingArea*)trackingArea;
49 @end
50
51 #endif // CHROME_BROWSER_UI_COCOA_TOOLBAR_RELOAD_BUTTON_H_ 38 #endif // CHROME_BROWSER_UI_COCOA_TOOLBAR_RELOAD_BUTTON_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698