summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/mac/CursorMac.mm
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/mac/CursorMac.mm')
-rw-r--r--WebCore/platform/mac/CursorMac.mm93
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