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);