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

Unified Diff: chrome/browser/ui/cocoa/reload_button.mm

Issue 6326006: [Mac] Organize some files into chrome/browser/ui/cocoa/toolbar/.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/cocoa/reload_button.h ('k') | chrome/browser/ui/cocoa/reload_button_unittest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/cocoa/reload_button.mm
===================================================================
--- chrome/browser/ui/cocoa/reload_button.mm (revision 71837)
+++ chrome/browser/ui/cocoa/reload_button.mm (working copy)
@@ -1,168 +0,0 @@
-// Copyright (c) 2010 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 "chrome/browser/ui/cocoa/reload_button.h"
-
-#include "app/l10n_util.h"
-#include "app/l10n_util_mac.h"
-#include "app/mac/nsimage_cache.h"
-#include "chrome/app/chrome_command_ids.h"
-#import "chrome/browser/ui/cocoa/gradient_button_cell.h"
-#import "chrome/browser/ui/cocoa/view_id_util.h"
-#include "grit/generated_resources.h"
-
-namespace {
-
-NSString* const kReloadImageName = @"reload_Template.pdf";
-NSString* const kStopImageName = @"stop_Template.pdf";
-
-// Constant matches Windows.
-NSTimeInterval kPendingReloadTimeout = 1.35;
-
-} // namespace
-
-@implementation ReloadButton
-
-- (void)dealloc {
- if (trackingArea_) {
- [self removeTrackingArea:trackingArea_];
- trackingArea_.reset();
- }
- [super dealloc];
-}
-
-- (void)updateTrackingAreas {
- // If the mouse is hovering when the tracking area is updated, the
- // control could end up locked into inappropriate behavior for
- // awhile, so unwind state.
- if (isMouseInside_)
- [self mouseExited:nil];
-
- if (trackingArea_) {
- [self removeTrackingArea:trackingArea_];
- trackingArea_.reset();
- }
- trackingArea_.reset([[NSTrackingArea alloc]
- initWithRect:[self bounds]
- options:(NSTrackingMouseEnteredAndExited |
- NSTrackingActiveInActiveApp)
- owner:self
- userInfo:nil]);
- [self addTrackingArea:trackingArea_];
-}
-
-- (void)awakeFromNib {
- [self updateTrackingAreas];
-
- // Don't allow multi-clicks, because the user probably wouldn't ever
- // want to stop+reload or reload+stop.
- [self setIgnoresMultiClick:YES];
-}
-
-- (void)updateTag:(NSInteger)anInt {
- if ([self tag] == anInt)
- return;
-
- // Forcibly remove any stale tooltip which is being displayed.
- [self removeAllToolTips];
-
- [self setTag:anInt];
- if (anInt == IDC_RELOAD) {
- [self setImage:app::mac::GetCachedImageWithName(kReloadImageName)];
- [self setToolTip:l10n_util::GetNSStringWithFixup(IDS_TOOLTIP_RELOAD)];
- } else if (anInt == IDC_STOP) {
- [self setImage:app::mac::GetCachedImageWithName(kStopImageName)];
- [self setToolTip:l10n_util::GetNSStringWithFixup(IDS_TOOLTIP_STOP)];
- } else {
- NOTREACHED();
- }
-}
-
-- (void)setIsLoading:(BOOL)isLoading force:(BOOL)force {
- // Can always transition to stop mode. Only transition to reload
- // mode if forced or if the mouse isn't hovering. Otherwise, note
- // that reload mode is desired and disable the button.
- if (isLoading) {
- pendingReloadTimer_.reset();
- [self updateTag:IDC_STOP];
- [self setEnabled:YES];
- } else if (force || ![self isMouseInside]) {
- pendingReloadTimer_.reset();
- [self updateTag:IDC_RELOAD];
-
- // This button's cell may not have received a mouseExited event, and
- // therefore it could still think that the mouse is inside the button. Make
- // sure the cell's sense of mouse-inside matches the local sense, to prevent
- // drawing artifacts.
- id cell = [self cell];
- if ([cell respondsToSelector:@selector(setMouseInside:animate:)])
- [cell setMouseInside:[self isMouseInside] animate:NO];
- [self setEnabled:YES];
- } else if ([self tag] == IDC_STOP && !pendingReloadTimer_) {
- [self setEnabled:NO];
- pendingReloadTimer_.reset(
- [[NSTimer scheduledTimerWithTimeInterval:kPendingReloadTimeout
- target:self
- selector:@selector(forceReloadState)
- userInfo:nil
- repeats:NO] retain]);
- }
-}
-
-- (void)forceReloadState {
- [self setIsLoading:NO force:YES];
-}
-
-- (BOOL)sendAction:(SEL)theAction to:(id)theTarget {
- if ([self tag] == IDC_STOP) {
- // When the timer is started, the button is disabled, so this
- // should not be possible.
- DCHECK(!pendingReloadTimer_.get());
-
- // When the stop is processed, immediately change to reload mode,
- // even though the IPC still has to bounce off the renderer and
- // back before the regular |-setIsLoaded:force:| will be called.
- // [This is how views and gtk do it.]
- const BOOL ret = [super sendAction:theAction to:theTarget];
- if (ret)
- [self forceReloadState];
- return ret;
- }
-
- return [super sendAction:theAction to:theTarget];
-}
-
-- (void)mouseEntered:(NSEvent*)theEvent {
- isMouseInside_ = YES;
-}
-
-- (void)mouseExited:(NSEvent*)theEvent {
- isMouseInside_ = NO;
-
- // Reload mode was requested during the hover.
- if (pendingReloadTimer_)
- [self forceReloadState];
-}
-
-- (BOOL)isMouseInside {
- return isMouseInside_;
-}
-
-- (ViewID)viewID {
- return VIEW_ID_RELOAD_BUTTON;
-}
-
-@end // ReloadButton
-
-@implementation ReloadButton (Testing)
-
-+ (void)setPendingReloadTimeout:(NSTimeInterval)seconds {
- kPendingReloadTimeout = seconds;
-}
-
-- (NSTrackingArea*)trackingArea {
- return trackingArea_;
-}
-
-@end
« no previous file with comments | « chrome/browser/ui/cocoa/reload_button.h ('k') | chrome/browser/ui/cocoa/reload_button_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698