diff options
author | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-12 16:35:23 +0000 |
---|---|---|
committer | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-12 16:35:23 +0000 |
commit | 30beb604b883f9219aa33c426871023fe4b52209 (patch) | |
tree | 84b5bede0a19e9f4db035f4a2663a6269acd32bc /chrome/browser/cocoa/tab_view.mm | |
parent | 8485f17afe566edb0cbe46ec30d5bc0c117619a4 (diff) | |
download | chromium_src-30beb604b883f9219aa33c426871023fe4b52209.zip chromium_src-30beb604b883f9219aa33c426871023fe4b52209.tar.gz chromium_src-30beb604b883f9219aa33c426871023fe4b52209.tar.bz2 |
Add a TabController class to manage a TabView (with corresponding xib). Rewrite strip controller to create and manage TabControllers instead of NSButtons.
Review URL: http://codereview.chromium.org/43137
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11541 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/tab_view.mm')
-rw-r--r-- | chrome/browser/cocoa/tab_view.mm | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/tab_view.mm b/chrome/browser/cocoa/tab_view.mm new file mode 100644 index 0000000..ffca1de --- /dev/null +++ b/chrome/browser/cocoa/tab_view.mm @@ -0,0 +1,50 @@ +// Copyright (c) 2009 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. + +#include "chrome/browser/cocoa/tab_view.h" + +@implementation TabView + +- (id)initWithFrame:(NSRect)frame { + self = [super initWithFrame:frame]; + if (self) { + // TODO(alcor): register for theming, either here or the cell + // [self gtm_registerForThemeNotifications]; + } + return self; +} + +- (void)dealloc { + // [self gtm_unregisterForThemeNotifications]; + [super dealloc]; +} + +// Overridden so that mouse clicks come to this view (the parent of the +// hierarchy) first. We want to handle clicks and drags in this class and +// leave the background button for display purposes only. +- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent { + return YES; +} + +// Determines which view a click in our frame actually hit. It's always this +// view, never a child. +// TODO(alcor): Figure out what to do with the close button. Are we using a +// NSButton for it, or drawing it ourselves with a cell? +- (NSView *)hitTest:(NSPoint)aPoint { + if (NSPointInRect(aPoint, [self frame])) return self; + return nil; +} + +// Handle clicks and drags in this button. We get here because we have +// overridden acceptsFirstMouse: and the click is within our bounds. +- (void)mouseDown:(NSEvent *)theEvent { + // fire the action to select the tab + if ([[controller_ target] respondsToSelector:[controller_ action]]) + [[controller_ target] performSelector:[controller_ action] + withObject:self]; + + // TODO(alcor): handle dragging... +} + +@end |