diff options
Diffstat (limited to 'WebCore/platform/mac/CursorMac.mm')
-rw-r--r-- | WebCore/platform/mac/CursorMac.mm | 93 |
1 files changed, 47 insertions, 46 deletions
diff --git a/WebCore/platform/mac/CursorMac.mm b/WebCore/platform/mac/CursorMac.mm index 1b4c1b1..c006cbc 100644 --- a/WebCore/platform/mac/CursorMac.mm +++ b/WebCore/platform/mac/CursorMac.mm @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006 Apple Inc. All rights reserved. + * Copyright (C) 2004, 2006, 2010 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -27,7 +27,6 @@ #import "Cursor.h" #import "BlockExceptions.h" -#import "FoundationExtras.h" #import <wtf/StdLibExtras.h> @interface WebCoreCursorBundle : NSObject { } @@ -41,14 +40,14 @@ namespace WebCore { // Simple NSCursor calls shouldn't need protection, // but creating a cursor with a bad image might throw. -static NSCursor* createCustomCursor(Image* image, const IntPoint& hotSpot) +static RetainPtr<NSCursor> createCustomCursor(Image* image, const IntPoint& hotSpot) { // FIXME: The cursor won't animate. Not sure if that's a big deal. - NSImage* img = image->getNSImage(); - if (!img) + NSImage* nsImage = image->getNSImage(); + if (!nsImage) return 0; BEGIN_BLOCK_OBJC_EXCEPTIONS; - return [[NSCursor alloc] initWithImage:img hotSpot:hotSpot]; + return RetainPtr<NSCursor>(AdoptNS, [[NSCursor alloc] initWithImage:nsImage hotSpot:hotSpot]); END_BLOCK_OBJC_EXCEPTIONS; return 0; } @@ -81,118 +80,118 @@ void Cursor::ensurePlatformCursor() const switch (m_type) { case Cursor::Pointer: - m_platformCursor = HardRetain([NSCursor arrowCursor]); + m_platformCursor = [NSCursor arrowCursor]; break; case Cursor::Cross: - m_platformCursor = HardRetain(leakNamedCursor("crossHairCursor", 11, 11)); + m_platformCursor = leakNamedCursor("crossHairCursor", 11, 11); break; case Cursor::Hand: - m_platformCursor = HardRetain(leakNamedCursor("linkCursor", 6, 1)); + m_platformCursor = leakNamedCursor("linkCursor", 6, 1); break; case Cursor::IBeam: - m_platformCursor = HardRetain([NSCursor IBeamCursor]); + m_platformCursor = [NSCursor IBeamCursor]; break; case Cursor::Wait: - m_platformCursor = HardRetain(leakNamedCursor("waitCursor", 7, 7)); + m_platformCursor = leakNamedCursor("waitCursor", 7, 7); break; case Cursor::Help: - m_platformCursor = HardRetain(leakNamedCursor("helpCursor", 8, 8)); + m_platformCursor = leakNamedCursor("helpCursor", 8, 8); break; case Cursor::Move: case Cursor::MiddlePanning: - m_platformCursor = HardRetain(leakNamedCursor("moveCursor", 7, 7)); + m_platformCursor = leakNamedCursor("moveCursor", 7, 7); break; case Cursor::EastResize: case Cursor::EastPanning: - m_platformCursor = HardRetain(leakNamedCursor("eastResizeCursor", 14, 7)); + m_platformCursor = leakNamedCursor("eastResizeCursor", 14, 7); break; case Cursor::NorthResize: case Cursor::NorthPanning: - m_platformCursor = HardRetain(leakNamedCursor("northResizeCursor", 7, 1)); + m_platformCursor = leakNamedCursor("northResizeCursor", 7, 1); break; case Cursor::NorthEastResize: case Cursor::NorthEastPanning: - m_platformCursor = HardRetain(leakNamedCursor("northEastResizeCursor", 14, 1)); + m_platformCursor = leakNamedCursor("northEastResizeCursor", 14, 1); break; case Cursor::NorthWestResize: case Cursor::NorthWestPanning: - m_platformCursor = HardRetain(leakNamedCursor("northWestResizeCursor", 0, 0)); + m_platformCursor = leakNamedCursor("northWestResizeCursor", 0, 0); break; case Cursor::SouthResize: case Cursor::SouthPanning: - m_platformCursor = HardRetain(leakNamedCursor("southResizeCursor", 7, 14)); + m_platformCursor = leakNamedCursor("southResizeCursor", 7, 14); break; case Cursor::SouthEastResize: case Cursor::SouthEastPanning: - m_platformCursor = HardRetain(leakNamedCursor("southEastResizeCursor", 14, 14)); + m_platformCursor = leakNamedCursor("southEastResizeCursor", 14, 14); break; case Cursor::SouthWestResize: case Cursor::SouthWestPanning: - m_platformCursor = HardRetain(leakNamedCursor("southWestResizeCursor", 1, 14)); + m_platformCursor = leakNamedCursor("southWestResizeCursor", 1, 14); break; case Cursor::WestResize: - m_platformCursor = HardRetain(leakNamedCursor("westResizeCursor", 1, 7)); + m_platformCursor = leakNamedCursor("westResizeCursor", 1, 7); break; case Cursor::NorthSouthResize: - m_platformCursor = HardRetain(leakNamedCursor("northSouthResizeCursor", 7, 7)); + m_platformCursor = leakNamedCursor("northSouthResizeCursor", 7, 7); break; case Cursor::EastWestResize: case Cursor::WestPanning: - m_platformCursor = HardRetain(leakNamedCursor("eastWestResizeCursor", 7, 7)); + m_platformCursor = leakNamedCursor("eastWestResizeCursor", 7, 7); break; case Cursor::NorthEastSouthWestResize: - m_platformCursor = HardRetain(leakNamedCursor("northEastSouthWestResizeCursor", 7, 7)); + m_platformCursor = leakNamedCursor("northEastSouthWestResizeCursor", 7, 7); break; case Cursor::NorthWestSouthEastResize: - m_platformCursor = HardRetain(leakNamedCursor("northWestSouthEastResizeCursor", 7, 7)); + m_platformCursor = leakNamedCursor("northWestSouthEastResizeCursor", 7, 7); break; case Cursor::ColumnResize: - m_platformCursor = HardRetain([NSCursor resizeLeftRightCursor]); + m_platformCursor = [NSCursor resizeLeftRightCursor]; break; case Cursor::RowResize: - m_platformCursor = HardRetain([NSCursor resizeUpDownCursor]); + m_platformCursor = [NSCursor resizeUpDownCursor]; break; case Cursor::VerticalText: - m_platformCursor = HardRetain(leakNamedCursor("verticalTextCursor", 7, 7)); + m_platformCursor = leakNamedCursor("verticalTextCursor", 7, 7); break; case Cursor::Cell: - m_platformCursor = HardRetain(leakNamedCursor("cellCursor", 7, 7)); + m_platformCursor = leakNamedCursor("cellCursor", 7, 7); break; case Cursor::ContextMenu: - m_platformCursor = HardRetain(leakNamedCursor("contextMenuCursor", 3, 2)); + m_platformCursor = leakNamedCursor("contextMenuCursor", 3, 2); break; case Cursor::Alias: - m_platformCursor = HardRetain(leakNamedCursor("aliasCursor", 11, 3)); + m_platformCursor = leakNamedCursor("aliasCursor", 11, 3); break; case Cursor::Progress: - m_platformCursor = HardRetain(leakNamedCursor("progressCursor", 3, 2)); + m_platformCursor = leakNamedCursor("progressCursor", 3, 2); break; case Cursor::NoDrop: - m_platformCursor = HardRetain(leakNamedCursor("noDropCursor", 3, 1)); + m_platformCursor = leakNamedCursor("noDropCursor", 3, 1); break; case Cursor::Copy: - m_platformCursor = HardRetain(leakNamedCursor("copyCursor", 3, 2)); + m_platformCursor = leakNamedCursor("copyCursor", 3, 2); break; case Cursor::None: - m_platformCursor = HardRetain(leakNamedCursor("noneCursor", 7, 7)); + m_platformCursor = leakNamedCursor("noneCursor", 7, 7); break; case Cursor::NotAllowed: - m_platformCursor = HardRetain(leakNamedCursor("notAllowedCursor", 11, 11)); + m_platformCursor = leakNamedCursor("notAllowedCursor", 11, 11); break; case Cursor::ZoomIn: - m_platformCursor = HardRetain(leakNamedCursor("zoomInCursor", 7, 7)); + m_platformCursor = leakNamedCursor("zoomInCursor", 7, 7); break; case Cursor::ZoomOut: - m_platformCursor = HardRetain(leakNamedCursor("zoomOutCursor", 7, 7)); + m_platformCursor = leakNamedCursor("zoomOutCursor", 7, 7); break; case Cursor::Grab: - m_platformCursor = HardRetain([NSCursor openHandCursor]); + m_platformCursor = [NSCursor openHandCursor]; break; case Cursor::Grabbing: - m_platformCursor = HardRetain([NSCursor closedHandCursor]); + m_platformCursor = [NSCursor closedHandCursor]; break; case Cursor::Custom: - m_platformCursor = HardRetainWithNSRelease(createCustomCursor(m_image.get(), m_hotSpot)); + m_platformCursor = createCustomCursor(m_image.get(), m_hotSpot); break; } } @@ -201,7 +200,7 @@ Cursor::Cursor(const Cursor& other) : m_type(other.m_type) , m_image(other.m_image) , m_hotSpot(other.m_hotSpot) - , m_platformCursor(HardRetain(other.m_platformCursor)) + , m_platformCursor(other.m_platformCursor) { } @@ -210,16 +209,18 @@ Cursor& Cursor::operator=(const Cursor& other) m_type = other.m_type; m_image = other.m_image; m_hotSpot = other.m_hotSpot; - - HardRetain(other.m_platformCursor); - HardRelease(m_platformCursor); m_platformCursor = other.m_platformCursor; return *this; } Cursor::~Cursor() { - HardRelease(m_platformCursor); +} + +NSCursor *Cursor::platformCursor() const +{ + ensurePlatformCursor(); + return m_platformCursor.get(); } } // namespace WebCore |