diff --git a/AppKit/CPEvent.j b/AppKit/CPEvent.j
index 8185d3a79..5a5cf2a75 100644
--- a/AppKit/CPEvent.j
+++ b/AppKit/CPEvent.j
@@ -206,6 +206,7 @@ var _CPEventPeriodicEventPeriod = 0,
unsigned _clickCount;
float _pressure;
CPWindow _window;
+ Number _windowNumber;
CPString _characters;
CPString _charactersIgnoringModifiers
BOOL _isARepeat;
@@ -327,7 +328,7 @@ var _CPEventPeriodicEventPeriod = 0,
_charactersIgnoringModifiers = unmodCharacters;
_isARepeat = isARepeat;
_keyCode = code;
- _window = [CPApp windowWithWindowNumber:aWindowNumber];
+ _windowNumber = aWindowNumber;
}
return self;
@@ -397,6 +398,9 @@ var _CPEventPeriodicEventPeriod = 0,
*/
- (CPWindow)window
{
+ if (!_window)
+ _window = [CPApp windowWithWindowNumber:_windowNumber];
+
return _window;
}
@@ -532,3 +536,23 @@ function _CPEventFirePeriodEvent()
[CPApp sendEvent:[CPEvent otherEventWithType:CPPeriodic location:_CGPointMakeZero() modifierFlags:0 timestamp:0 windowNumber:0 context:nil subtype:0 data1:0 data2:0]];
}
+var CPEventClass = [CPEvent class];
+
+function _CPEventFromNativeMouseEvent(aNativeEvent, anEventType, aPoint, modifierFlags, aTimestamp, aWindowNumber, aGraphicsContext, anEventNumber, aClickCount, aPressure)
+{
+ aNativeEvent.isa = CPEventClass;
+
+ aNativeEvent._type = anEventType;
+ aNativeEvent._location = aPoint;
+ aNativeEvent._modifierFlags = modifierFlags;
+ aNativeEvent._timestamp = aTimestamp;
+ aNativeEvent._windowNumber = aWindowNumber;
+ aNativeEvent._window = nil;
+ aNativeEvent._context = aGraphicsContext;
+ aNativeEvent._eventNumber = anEventNumber;
+ aNativeEvent._clickCount = aClickCount;
+ aNativeEvent._pressure = aPressure;
+
+ return aNativeEvent;
+}
+
diff --git a/Foundation/CPArray.j b/Foundation/CPArray.j
index 0ebc6db05..67082d555 100755
--- a/Foundation/CPArray.j
+++ b/Foundation/CPArray.j
@@ -255,18 +255,6 @@
return self;
}
-/*!
- Returns a hash of the CPArray.
- @return an unsigned integer hash
-*/
-- (unsigned)hash
-{
- if (self.__address == nil)
- self.__address = _objj_generateObjectHash();
-
- return self.__address;
-}
-
// Querying an array
/*!
Returns YES if the array contains anObject. Otherwise, it returns NO.
diff --git a/Foundation/CPNumber.j b/Foundation/CPNumber.j
index 4a7d70d6e..e214e0746 100644
--- a/Foundation/CPNumber.j
+++ b/Foundation/CPNumber.j
@@ -186,7 +186,7 @@ var __placeholder = new Number(),
return anUnsignedShort;
}
-- (CPString)hash
+- (CPString)UID
{
if (!_CPNumberHashes[self])
_CPNumberHashes[self] = _objj_generateObjectHash();
diff --git a/Foundation/CPObject.j b/Foundation/CPObject.j
index a265dd95d..7bf26aaa8 100644
--- a/Foundation/CPObject.j
+++ b/Foundation/CPObject.j
@@ -459,6 +459,14 @@ CPLog(@"Got some class: %@", inst);
*/
- (unsigned)hash
{
+ return [self UID];
+}
+
+- (unsigned)UID
+{
+ if (typeof self.__address === "undefined")
+ self.__address = _objj_generateObjectHash();
+
return __address;
}
diff --git a/Foundation/CPString.j b/Foundation/CPString.j
index 803f31fe1..7e4f670fb 100644
--- a/Foundation/CPString.j
+++ b/Foundation/CPString.j
@@ -502,7 +502,7 @@ var CPStringHashes = new objj_dictionary();
/*!
Returns a hash of the string instance.
*/
-- (unsigned)hash
+- (unsigned)UID
{
var hash = dictionary_getValue(CPStringHashes, self);
diff --git a/Objective-J/runtime.js b/Objective-J/runtime.js
index 4fccbcdfc..5ed505846 100644
--- a/Objective-J/runtime.js
+++ b/Objective-J/runtime.js
@@ -472,12 +472,9 @@ function objj_msgSend(/*id*/ aReceiver, /*SEL*/ aSelector)
switch(arguments.length)
{
- case 2:
- return implementation(aReceiver, aSelector);
- case 3:
- return implementation(aReceiver, aSelector, arguments[2]);
- case 4:
- return implementation(aReceiver, aSelector, arguments[2], arguments[3]);
+ case 2: return implementation(aReceiver, aSelector);
+ case 3: return implementation(aReceiver, aSelector, arguments[2]);
+ case 4: return implementation(aReceiver, aSelector, arguments[2], arguments[3]);
}
return implementation.apply(aReceiver, arguments);