mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-31 05:20:48 +00:00
Add MacOSX 10.4 methods and constants to NSEvent. Resort event types to
be binary compatible to MacOSX. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@25377 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
9fc6122ab8
commit
8b5ef317f7
7 changed files with 627 additions and 353 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2007-08-03 Fred Kiefer <FredKiefer@gmx.de>
|
||||||
|
|
||||||
|
* Headers/AppKit/NSDocumentController.h,
|
||||||
|
* Source/NSDocumentController.m (-maximumRecentDocumentCount): Add
|
||||||
|
missing method.
|
||||||
|
* Headers/AppKit/NSEvent.h,
|
||||||
|
* Source/NSEvent.m: Add MacOSX 10.4 methods and constants. Resort
|
||||||
|
event types to be binary compatible to MacOSX.
|
||||||
|
* Source/Functions.m (NSEventMaskFromType): Remove.
|
||||||
|
* Source/NSWindow.m (-sendEvent:): Handle new event types.
|
||||||
|
|
||||||
2007-08-03 Richard Frith-Macdonald <rfm@gnu.org>
|
2007-08-03 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
* Source/NSWorkspace.m: ([-launchedApplications]) complete and tidy
|
* Source/NSWorkspace.m: ([-launchedApplications]) complete and tidy
|
||||||
|
|
|
@ -109,6 +109,9 @@
|
||||||
- (IBAction)openDocument:(id)sender;
|
- (IBAction)openDocument:(id)sender;
|
||||||
- (IBAction)newDocument:(id)sender;
|
- (IBAction)newDocument:(id)sender;
|
||||||
- (IBAction)clearRecentDocuments:(id)sender;
|
- (IBAction)clearRecentDocuments:(id)sender;
|
||||||
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
||||||
|
- (unsigned int) maximumRecentDocumentCount;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*" Recent Documents "*/
|
/*" Recent Documents "*/
|
||||||
- (void)noteNewRecentDocument:(NSDocument *)aDocument;
|
- (void)noteNewRecentDocument:(NSDocument *)aDocument;
|
||||||
|
|
|
@ -73,15 +73,12 @@
|
||||||
typedef enum _NSEventType {
|
typedef enum _NSEventType {
|
||||||
// Note - order IS significant as ranges of values
|
// Note - order IS significant as ranges of values
|
||||||
// are used for testing for valid event types.
|
// are used for testing for valid event types.
|
||||||
NSLeftMouseDown,
|
NSLeftMouseDown = 1,
|
||||||
NSLeftMouseUp,
|
NSLeftMouseUp,
|
||||||
NSOtherMouseDown,
|
|
||||||
NSOtherMouseUp,
|
|
||||||
NSRightMouseDown,
|
NSRightMouseDown,
|
||||||
NSRightMouseUp,
|
NSRightMouseUp,
|
||||||
NSMouseMoved,
|
NSMouseMoved,
|
||||||
NSLeftMouseDragged,
|
NSLeftMouseDragged,
|
||||||
NSOtherMouseDragged,
|
|
||||||
NSRightMouseDragged,
|
NSRightMouseDragged,
|
||||||
NSMouseEntered,
|
NSMouseEntered,
|
||||||
NSMouseExited,
|
NSMouseExited,
|
||||||
|
@ -93,19 +90,23 @@ typedef enum _NSEventType {
|
||||||
NSApplicationDefined,
|
NSApplicationDefined,
|
||||||
NSPeriodic,
|
NSPeriodic,
|
||||||
NSCursorUpdate,
|
NSCursorUpdate,
|
||||||
NSScrollWheel
|
NSScrollWheel = 22,
|
||||||
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
||||||
|
NSTabletPoint,
|
||||||
|
NSTabletProximity,
|
||||||
|
#endif
|
||||||
|
NSOtherMouseDown = 25,
|
||||||
|
NSOtherMouseUp,
|
||||||
|
NSOtherMouseDragged
|
||||||
} NSEventType;
|
} NSEventType;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
NSLeftMouseDownMask = (1 << NSLeftMouseDown),
|
NSLeftMouseDownMask = (1 << NSLeftMouseDown),
|
||||||
NSLeftMouseUpMask = (1 << NSLeftMouseUp),
|
NSLeftMouseUpMask = (1 << NSLeftMouseUp),
|
||||||
NSOtherMouseDownMask = (1 << NSOtherMouseDown),
|
|
||||||
NSOtherMouseUpMask = (1 << NSOtherMouseUp),
|
|
||||||
NSRightMouseDownMask = (1 << NSRightMouseDown),
|
NSRightMouseDownMask = (1 << NSRightMouseDown),
|
||||||
NSRightMouseUpMask = (1 << NSRightMouseUp),
|
NSRightMouseUpMask = (1 << NSRightMouseUp),
|
||||||
NSMouseMovedMask = (1 << NSMouseMoved),
|
NSMouseMovedMask = (1 << NSMouseMoved),
|
||||||
NSLeftMouseDraggedMask = (1 << NSLeftMouseDragged),
|
NSLeftMouseDraggedMask = (1 << NSLeftMouseDragged),
|
||||||
NSOtherMouseDraggedMask = (1 << NSOtherMouseDragged),
|
|
||||||
NSRightMouseDraggedMask = (1 << NSRightMouseDragged),
|
NSRightMouseDraggedMask = (1 << NSRightMouseDragged),
|
||||||
NSMouseEnteredMask = (1 << NSMouseEntered),
|
NSMouseEnteredMask = (1 << NSMouseEntered),
|
||||||
NSMouseExitedMask = (1 << NSMouseExited),
|
NSMouseExitedMask = (1 << NSMouseExited),
|
||||||
|
@ -118,104 +119,191 @@ enum {
|
||||||
NSPeriodicMask = (1 << NSPeriodic),
|
NSPeriodicMask = (1 << NSPeriodic),
|
||||||
NSCursorUpdateMask = (1 << NSCursorUpdate),
|
NSCursorUpdateMask = (1 << NSCursorUpdate),
|
||||||
NSScrollWheelMask = (1 << NSScrollWheel),
|
NSScrollWheelMask = (1 << NSScrollWheel),
|
||||||
NSAnyEventMask = 0xffffffff
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
||||||
|
NSTabletPointMask = (1 << NSTabletPoint),
|
||||||
|
NSTabletProximityMask = (1 << NSTabletProximity),
|
||||||
|
#endif
|
||||||
|
NSOtherMouseDownMask = (1 << NSOtherMouseDown),
|
||||||
|
NSOtherMouseUpMask = (1 << NSOtherMouseUp),
|
||||||
|
NSOtherMouseDraggedMask = (1 << NSOtherMouseDragged),
|
||||||
|
|
||||||
|
NSAnyEventMask = 0xffffffffU,
|
||||||
|
|
||||||
|
// key events
|
||||||
|
GSKeyEventMask = (NSKeyDownMask | NSKeyUpMask | NSFlagsChangedMask),
|
||||||
|
// mouse events
|
||||||
|
GSMouseEventMask = (NSLeftMouseDownMask | NSLeftMouseUpMask | NSLeftMouseDraggedMask
|
||||||
|
| NSRightMouseDownMask | NSRightMouseUpMask | NSRightMouseDraggedMask
|
||||||
|
| NSOtherMouseDownMask | NSOtherMouseUpMask | NSOtherMouseDraggedMask
|
||||||
|
| NSMouseMovedMask | NSScrollWheelMask
|
||||||
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
||||||
|
| NSTabletPointMask | NSTabletProximityMask
|
||||||
|
#endif
|
||||||
|
),
|
||||||
|
// mouse move events
|
||||||
|
GSMouseMovedEventMask = (NSMouseMovedMask | NSScrollWheelMask
|
||||||
|
| NSLeftMouseDraggedMask | NSRightMouseDraggedMask
|
||||||
|
| NSOtherMouseDraggedMask),
|
||||||
|
// enter/exit event
|
||||||
|
GSEnterExitEventMask = (NSMouseEnteredMask | NSMouseExitedMask | NSCursorUpdateMask),
|
||||||
|
// other events
|
||||||
|
GSOtherEventMask = (NSAppKitDefinedMask | NSSystemDefinedMask
|
||||||
|
| NSApplicationDefinedMask | NSPeriodicMask),
|
||||||
|
|
||||||
|
// tracking loops may need to add NSPeriodicMask
|
||||||
|
GSTrackingLoopMask = (NSLeftMouseDownMask | NSLeftMouseUpMask
|
||||||
|
| NSLeftMouseDraggedMask | NSMouseMovedMask
|
||||||
|
| NSRightMouseUpMask | NSOtherMouseUpMask)
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert an NSEvent Type to it's respective Event Mask
|
||||||
|
*/
|
||||||
|
// FIXME: Should we use the inline trick from NSGeometry.h here?
|
||||||
|
static inline
|
||||||
|
unsigned int
|
||||||
|
NSEventMaskFromType(NSEventType type)
|
||||||
|
{
|
||||||
|
return (1 << type);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum {
|
||||||
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
||||||
|
NSDeviceIndependentModifierFlagsMask = 0xffff0000U,
|
||||||
|
#endif
|
||||||
|
NSAlphaShiftKeyMask = 1 << 16,
|
||||||
|
NSShiftKeyMask = 2 << 16,
|
||||||
|
NSControlKeyMask = 4 << 16,
|
||||||
|
NSAlternateKeyMask = 8 << 16,
|
||||||
|
NSCommandKeyMask = 16 << 16,
|
||||||
|
NSNumericPadKeyMask = 32 << 16,
|
||||||
|
NSHelpKeyMask = 64 << 16,
|
||||||
|
NSFunctionKeyMask = 128 << 16
|
||||||
|
};
|
||||||
|
|
||||||
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
NSUnknownPointingDevice,
|
||||||
|
NSPenPointingDevice,
|
||||||
|
NSCursorPointingDevice,
|
||||||
|
NSEraserPointingDevice
|
||||||
|
} NSPointingDeviceType;
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
NSPenTipMask = 1,
|
||||||
|
NSPenLowerSideMask = 2,
|
||||||
|
NSPenUpperSideMask = 4
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
NSMouseEventSubtype,
|
||||||
|
NSTabletPointEventSubtype,
|
||||||
|
NSTabletProximityEventSubtype
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
NSAlphaShiftKeyMask = 1,
|
NSWindowExposedEventType = 0,
|
||||||
NSShiftKeyMask = 2,
|
NSApplicationActivatedEventType = 1,
|
||||||
NSControlKeyMask = 4,
|
NSApplicationDeactivatedEventType = 2,
|
||||||
NSAlternateKeyMask = 8,
|
NSWindowMovedEventType = 4,
|
||||||
NSCommandKeyMask = 16,
|
NSScreenChangedEventType = 8,
|
||||||
NSNumericPadKeyMask = 32,
|
NSAWTEventType = 16
|
||||||
NSHelpKeyMask = 64,
|
|
||||||
NSFunctionKeyMask = 128
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
NSPowerOffEventType = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@interface NSEvent : NSObject <NSCoding, NSCopying>
|
@interface NSEvent : NSObject <NSCoding, NSCopying>
|
||||||
{
|
{
|
||||||
NSEventType event_type;
|
NSEventType event_type;
|
||||||
NSPoint location_point;
|
NSPoint location_point;
|
||||||
unsigned int modifier_flags;
|
unsigned int modifier_flags;
|
||||||
NSTimeInterval event_time;
|
NSTimeInterval event_time;
|
||||||
int window_num;
|
int window_num;
|
||||||
NSGraphicsContext *event_context;
|
NSGraphicsContext *event_context;
|
||||||
union _MB_event_data
|
union _MB_event_data
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
int event_num;
|
int event_num;
|
||||||
short click;
|
short click;
|
||||||
short button;
|
short button;
|
||||||
float pressure;
|
float pressure;
|
||||||
float deltaX;
|
float deltaX;
|
||||||
float deltaY;
|
float deltaY;
|
||||||
float deltaZ;
|
float deltaZ;
|
||||||
} mouse;
|
} mouse;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
BOOL repeat;
|
BOOL repeat;
|
||||||
NSString *char_keys;
|
NSString *char_keys;
|
||||||
NSString *unmodified_keys;
|
NSString *unmodified_keys;
|
||||||
unsigned short key_code;
|
unsigned short key_code;
|
||||||
} key;
|
} key;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
int event_num;
|
int event_num;
|
||||||
int tracking_num;
|
int tracking_num;
|
||||||
void *user_data;
|
void *user_data;
|
||||||
} tracking;
|
} tracking;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
short sub_type;
|
short sub_type;
|
||||||
int data1;
|
int data1;
|
||||||
int data2;
|
int data2;
|
||||||
} misc;
|
} misc;
|
||||||
} event_data;
|
} event_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSEvent*) enterExitEventWithType: (NSEventType)type
|
+ (NSEvent*) enterExitEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
timestamp: (NSTimeInterval)time
|
timestamp: (NSTimeInterval)time
|
||||||
windowNumber: (int)windowNum
|
windowNumber: (int)windowNum
|
||||||
context: (NSGraphicsContext*)context
|
context: (NSGraphicsContext*)context
|
||||||
eventNumber: (int)eventNum
|
eventNumber: (int)eventNum
|
||||||
trackingNumber: (int)trackingNum
|
trackingNumber: (int)trackingNum
|
||||||
userData: (void *)userData;
|
userData: (void *)userData;
|
||||||
|
|
||||||
+ (NSEvent*) keyEventWithType: (NSEventType)type
|
+ (NSEvent*) keyEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
timestamp: (NSTimeInterval)time
|
timestamp: (NSTimeInterval)time
|
||||||
windowNumber: (int)windowNum
|
windowNumber: (int)windowNum
|
||||||
context: (NSGraphicsContext*)context
|
context: (NSGraphicsContext*)context
|
||||||
characters: (NSString *)keys
|
characters: (NSString *)keys
|
||||||
charactersIgnoringModifiers: (NSString *)ukeys
|
charactersIgnoringModifiers: (NSString *)ukeys
|
||||||
isARepeat: (BOOL)repeatKey
|
isARepeat: (BOOL)repeatKey
|
||||||
keyCode: (unsigned short)code;
|
keyCode: (unsigned short)code;
|
||||||
|
|
||||||
+ (NSEvent*) mouseEventWithType: (NSEventType)type
|
+ (NSEvent*) mouseEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
timestamp: (NSTimeInterval)time
|
timestamp: (NSTimeInterval)time
|
||||||
windowNumber: (int)windowNum
|
windowNumber: (int)windowNum
|
||||||
context: (NSGraphicsContext*)context
|
context: (NSGraphicsContext*)context
|
||||||
eventNumber: (int)eventNum
|
eventNumber: (int)eventNum
|
||||||
clickCount: (int)clickNum
|
clickCount: (int)clickNum
|
||||||
pressure: (float)pressureValue;
|
pressure: (float)pressureValue;
|
||||||
|
|
||||||
#if OS_API_VERSION(GS_API_NONE, GS_API_NONE)
|
#if OS_API_VERSION(GS_API_NONE, GS_API_NONE)
|
||||||
+ (NSEvent*) mouseEventWithType: (NSEventType)type
|
+ (NSEvent*) mouseEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
timestamp: (NSTimeInterval)time
|
timestamp: (NSTimeInterval)time
|
||||||
windowNumber: (int)windowNum
|
windowNumber: (int)windowNum
|
||||||
context: (NSGraphicsContext*)context
|
context: (NSGraphicsContext*)context
|
||||||
eventNumber: (int)eventNum
|
eventNumber: (int)eventNum
|
||||||
clickCount: (int)clickNum
|
clickCount: (int)clickNum
|
||||||
pressure: (float)pressureValue
|
pressure: (float)pressureValue
|
||||||
buttonNumber: (int)buttonNum
|
buttonNumber: (int)buttonNum
|
||||||
deltaX: (float)deltaX
|
deltaX: (float)deltaX
|
||||||
deltaY: (float)deltaY
|
deltaY: (float)deltaY
|
||||||
deltaZ: (float)deltaZ;
|
deltaZ: (float)deltaZ;
|
||||||
|
@ -224,17 +312,17 @@ enum {
|
||||||
+ (NSPoint)mouseLocation;
|
+ (NSPoint)mouseLocation;
|
||||||
|
|
||||||
+ (NSEvent*) otherEventWithType: (NSEventType)type
|
+ (NSEvent*) otherEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
timestamp: (NSTimeInterval)time
|
timestamp: (NSTimeInterval)time
|
||||||
windowNumber: (int)windowNum
|
windowNumber: (int)windowNum
|
||||||
context: (NSGraphicsContext*)context
|
context: (NSGraphicsContext*)context
|
||||||
subtype: (short)subType
|
subtype: (short)subType
|
||||||
data1: (int)data1
|
data1: (int)data1
|
||||||
data2: (int)data2;
|
data2: (int)data2;
|
||||||
|
|
||||||
+ (void) startPeriodicEventsAfterDelay: (NSTimeInterval)delaySeconds
|
+ (void) startPeriodicEventsAfterDelay: (NSTimeInterval)delaySeconds
|
||||||
withPeriod: (NSTimeInterval)periodSeconds;
|
withPeriod: (NSTimeInterval)periodSeconds;
|
||||||
+ (void) stopPeriodicEvents;
|
+ (void) stopPeriodicEvents;
|
||||||
|
|
||||||
|
|
||||||
|
@ -266,6 +354,27 @@ enum {
|
||||||
- (NSWindow *) window;
|
- (NSWindow *) window;
|
||||||
- (int) windowNumber;
|
- (int) windowNumber;
|
||||||
|
|
||||||
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
|
||||||
|
- (int) absoluteX;
|
||||||
|
- (int) absoluteY;
|
||||||
|
- (int) absoluteZ;
|
||||||
|
- (unsigned int) buttonMask;
|
||||||
|
- (unsigned int) capabilityMask;
|
||||||
|
- (unsigned int) deviceID;
|
||||||
|
- (BOOL) isEnteringProximity;
|
||||||
|
- (unsigned int) pointingDeviceID;
|
||||||
|
- (unsigned int) pointingDeviceSerialNumber;
|
||||||
|
- (NSPointingDeviceType) pointingDeviceType;
|
||||||
|
- (float) rotation;
|
||||||
|
- (unsigned int) systemTabletID;
|
||||||
|
- (unsigned int) tabletID;
|
||||||
|
- (float) tangentialPressure;
|
||||||
|
- (NSPoint) tilt;
|
||||||
|
- (unsigned long long) uniqueID;
|
||||||
|
- (id) vendorDefined;
|
||||||
|
- (unsigned int) vendorID;
|
||||||
|
- (unsigned int) vendorPointingDeviceType;
|
||||||
|
#endif
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
|
@ -78,39 +78,6 @@ NSApplicationMain(int argc, const char **argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Convert an NSEvent Type to it's respective Event Mask
|
|
||||||
*/
|
|
||||||
unsigned
|
|
||||||
NSEventMaskFromType(NSEventType type)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case NSLeftMouseDown: return NSLeftMouseDownMask;
|
|
||||||
case NSLeftMouseUp: return NSLeftMouseUpMask;
|
|
||||||
case NSOtherMouseDown: return NSOtherMouseDownMask;
|
|
||||||
case NSOtherMouseUp: return NSOtherMouseUpMask;
|
|
||||||
case NSRightMouseDown: return NSRightMouseDownMask;
|
|
||||||
case NSRightMouseUp: return NSRightMouseUpMask;
|
|
||||||
case NSMouseMoved: return NSMouseMovedMask;
|
|
||||||
case NSMouseEntered: return NSMouseEnteredMask;
|
|
||||||
case NSMouseExited: return NSMouseExitedMask;
|
|
||||||
case NSLeftMouseDragged: return NSLeftMouseDraggedMask;
|
|
||||||
case NSOtherMouseDragged: return NSOtherMouseDraggedMask;
|
|
||||||
case NSRightMouseDragged: return NSRightMouseDraggedMask;
|
|
||||||
case NSKeyDown: return NSKeyDownMask;
|
|
||||||
case NSKeyUp: return NSKeyUpMask;
|
|
||||||
case NSFlagsChanged: return NSFlagsChangedMask;
|
|
||||||
case NSPeriodic: return NSPeriodicMask;
|
|
||||||
case NSCursorUpdate: return NSCursorUpdateMask;
|
|
||||||
case NSScrollWheel: return NSScrollWheelMask;
|
|
||||||
case NSAppKitDefined: return NSAppKitDefinedMask;
|
|
||||||
case NSSystemDefined: return NSSystemDefinedMask;
|
|
||||||
case NSApplicationDefined: return NSApplicationDefinedMask;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Color Functions
|
* Color Functions
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -990,7 +990,10 @@ static NSDictionary *TypeInfoForHumanReadableName (NSArray *types, NSString *typ
|
||||||
}
|
}
|
||||||
|
|
||||||
// The number of remembered recent documents
|
// The number of remembered recent documents
|
||||||
#define MAX_DOCS 5
|
- (unsigned int) maximumRecentDocumentCount
|
||||||
|
{
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
|
||||||
- (void) noteNewRecentDocument: (NSDocument *)aDocument
|
- (void) noteNewRecentDocument: (NSDocument *)aDocument
|
||||||
{
|
{
|
||||||
|
@ -1011,7 +1014,7 @@ static NSDictionary *TypeInfoForHumanReadableName (NSArray *types, NSString *typ
|
||||||
// Always keep the current object at the end of the list
|
// Always keep the current object at the end of the list
|
||||||
[_recent_documents removeObjectAtIndex: index];
|
[_recent_documents removeObjectAtIndex: index];
|
||||||
}
|
}
|
||||||
else if ([_recent_documents count] > MAX_DOCS)
|
else if ([_recent_documents count] > [self maximumRecentDocumentCount])
|
||||||
{
|
{
|
||||||
[_recent_documents removeObjectAtIndex: 0];
|
[_recent_documents removeObjectAtIndex: 0];
|
||||||
}
|
}
|
||||||
|
|
628
Source/NSEvent.m
628
Source/NSEvent.m
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
This library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
Library General Public License for more details.
|
Library General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU Library General Public
|
||||||
|
@ -50,11 +50,11 @@
|
||||||
#include "GNUstepGUI/GSDisplayServer.h"
|
#include "GNUstepGUI/GSDisplayServer.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* gstep-base has a faster mechanism to get the current thread.
|
* gstep-base has a faster mechanism to get the current thread.
|
||||||
*/
|
*/
|
||||||
#ifndef GNUSTEP_BASE_LIBRARY
|
#ifndef GNUSTEP_BASE_LIBRARY
|
||||||
#define GSCurrentThread() [NSThread currentThread]
|
#define GSCurrentThread() [NSThread currentThread]
|
||||||
#define GSCurrentThreadDictionary() [[NSThread currentThread] threadDictionary]
|
#define GSCurrentThreadDictionary() [[NSThread currentThread] threadDictionary]
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@implementation NSEvent
|
@implementation NSEvent
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
/*
|
/*
|
||||||
* Class variables
|
* Class variables
|
||||||
*/
|
*/
|
||||||
static NSString *timerKey = @"NSEventTimersKey";
|
static NSString *timerKey = @"NSEventTimersKey";
|
||||||
static Class eventClass;
|
static Class eventClass;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -72,7 +72,7 @@ static Class eventClass;
|
||||||
{
|
{
|
||||||
if (self == [NSEvent class])
|
if (self == [NSEvent class])
|
||||||
{
|
{
|
||||||
[self setVersion: 1];
|
[self setVersion: 2];
|
||||||
eventClass = [NSEvent class];
|
eventClass = [NSEvent class];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,22 +81,22 @@ static Class eventClass;
|
||||||
* Creating NSEvent objects
|
* Creating NSEvent objects
|
||||||
*/
|
*/
|
||||||
+ (NSEvent*) enterExitEventWithType: (NSEventType)type
|
+ (NSEvent*) enterExitEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
timestamp: (NSTimeInterval)time
|
timestamp: (NSTimeInterval)time
|
||||||
windowNumber: (int)windowNum
|
windowNumber: (int)windowNum
|
||||||
context: (NSGraphicsContext*)context
|
context: (NSGraphicsContext*)context
|
||||||
eventNumber: (int)eventNum
|
eventNumber: (int)eventNum
|
||||||
trackingNumber: (int)trackingNum
|
trackingNumber: (int)trackingNum
|
||||||
userData: (void *)userData
|
userData: (void *)userData
|
||||||
{
|
{
|
||||||
NSEvent *e;
|
NSEvent *e;
|
||||||
|
|
||||||
if (type == NSCursorUpdate)
|
if (type == NSCursorUpdate)
|
||||||
RETAIN((id)userData);
|
RETAIN((id)userData);
|
||||||
else if ((type != NSMouseEntered) && (type != NSMouseExited))
|
else if ((type != NSMouseEntered) && (type != NSMouseExited))
|
||||||
[NSException raise: NSInvalidArgumentException
|
[NSException raise: NSInvalidArgumentException
|
||||||
format: @"enterExitEvent with wrong type"];
|
format: @"enterExitEvent with wrong type"];
|
||||||
|
|
||||||
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
||||||
if (self != eventClass)
|
if (self != eventClass)
|
||||||
|
@ -118,21 +118,21 @@ static Class eventClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSEvent*) keyEventWithType: (NSEventType)type
|
+ (NSEvent*) keyEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
timestamp: (NSTimeInterval)time
|
timestamp: (NSTimeInterval)time
|
||||||
windowNumber: (int)windowNum
|
windowNumber: (int)windowNum
|
||||||
context: (NSGraphicsContext *)context
|
context: (NSGraphicsContext *)context
|
||||||
characters: (NSString *)keys
|
characters: (NSString *)keys
|
||||||
charactersIgnoringModifiers: (NSString *)ukeys
|
charactersIgnoringModifiers: (NSString *)ukeys
|
||||||
isARepeat: (BOOL)repeatKey
|
isARepeat: (BOOL)repeatKey
|
||||||
keyCode: (unsigned short)code
|
keyCode: (unsigned short)code
|
||||||
{
|
{
|
||||||
NSEvent *e;
|
NSEvent *e;
|
||||||
|
|
||||||
if (type < NSKeyDown || type > NSFlagsChanged)
|
if (!(NSEventMaskFromType(type) & GSKeyEventMask))
|
||||||
[NSException raise: NSInvalidArgumentException
|
[NSException raise: NSInvalidArgumentException
|
||||||
format: @"keyEvent with wrong type"];
|
format: @"keyEvent with wrong type"];
|
||||||
|
|
||||||
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
||||||
if (self != eventClass)
|
if (self != eventClass)
|
||||||
|
@ -156,20 +156,20 @@ static Class eventClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSEvent*) mouseEventWithType: (NSEventType)type
|
+ (NSEvent*) mouseEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
timestamp: (NSTimeInterval)time
|
timestamp: (NSTimeInterval)time
|
||||||
windowNumber: (int)windowNum
|
windowNumber: (int)windowNum
|
||||||
context: (NSGraphicsContext*)context
|
context: (NSGraphicsContext*)context
|
||||||
eventNumber: (int)eventNum
|
eventNumber: (int)eventNum
|
||||||
clickCount: (int)clickNum
|
clickCount: (int)clickNum
|
||||||
pressure: (float)pressureValue
|
pressure: (float)pressureValue
|
||||||
{
|
{
|
||||||
NSEvent *e;
|
NSEvent *e;
|
||||||
|
|
||||||
if (type < NSLeftMouseDown || type > NSRightMouseDragged)
|
if (!(NSEventMaskFromType(type) & GSMouseEventMask))
|
||||||
[NSException raise: NSInvalidArgumentException
|
[NSException raise: NSInvalidArgumentException
|
||||||
format: @"mouseEvent with wrong type"];
|
format: @"mouseEvent with wrong type"];
|
||||||
|
|
||||||
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
||||||
if (self != eventClass)
|
if (self != eventClass)
|
||||||
|
@ -189,26 +189,25 @@ static Class eventClass;
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSEvent*) mouseEventWithType: (NSEventType)type
|
+ (NSEvent*) mouseEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
timestamp: (NSTimeInterval)time
|
timestamp: (NSTimeInterval)time
|
||||||
windowNumber: (int)windowNum
|
windowNumber: (int)windowNum
|
||||||
context: (NSGraphicsContext*)context
|
context: (NSGraphicsContext*)context
|
||||||
eventNumber: (int)eventNum
|
eventNumber: (int)eventNum
|
||||||
clickCount: (int)clickNum
|
clickCount: (int)clickNum
|
||||||
pressure: (float)pressureValue
|
pressure: (float)pressureValue
|
||||||
buttonNumber: (int)buttonNum
|
buttonNumber: (int)buttonNum
|
||||||
deltaX: (float)deltaX
|
deltaX: (float)deltaX
|
||||||
deltaY: (float)deltaY
|
deltaY: (float)deltaY
|
||||||
deltaZ: (float)deltaZ
|
deltaZ: (float)deltaZ
|
||||||
{
|
{
|
||||||
NSEvent *e;
|
NSEvent *e;
|
||||||
|
|
||||||
if ((type < NSLeftMouseDown || type > NSRightMouseDragged)
|
if (!(NSEventMaskFromType(type) & GSMouseEventMask))
|
||||||
&& (type != NSScrollWheel))
|
|
||||||
[NSException raise: NSInvalidArgumentException
|
[NSException raise: NSInvalidArgumentException
|
||||||
format: @"mouseEvent with wrong type"];
|
format: @"mouseEvent with wrong type"];
|
||||||
|
|
||||||
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
||||||
if (self != eventClass)
|
if (self != eventClass)
|
||||||
|
@ -241,20 +240,20 @@ static Class eventClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSEvent*) otherEventWithType: (NSEventType)type
|
+ (NSEvent*) otherEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
timestamp: (NSTimeInterval)time
|
timestamp: (NSTimeInterval)time
|
||||||
windowNumber: (int)windowNum
|
windowNumber: (int)windowNum
|
||||||
context: (NSGraphicsContext*)context
|
context: (NSGraphicsContext*)context
|
||||||
subtype: (short)subType
|
subtype: (short)subType
|
||||||
data1: (int)data1
|
data1: (int)data1
|
||||||
data2: (int)data2
|
data2: (int)data2
|
||||||
{
|
{
|
||||||
NSEvent *e;
|
NSEvent *e;
|
||||||
|
|
||||||
if (type < NSAppKitDefined || type > NSPeriodic)
|
if (!(NSEventMaskFromType(type) & GSOtherEventMask))
|
||||||
[NSException raise: NSInvalidArgumentException
|
[NSException raise: NSInvalidArgumentException
|
||||||
format: @"otherEvent with wrong type"];
|
format: @"otherEvent with wrong type"];
|
||||||
|
|
||||||
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
||||||
if (self != eventClass)
|
if (self != eventClass)
|
||||||
|
@ -278,17 +277,17 @@ static Class eventClass;
|
||||||
* Requesting Periodic Events
|
* Requesting Periodic Events
|
||||||
*/
|
*/
|
||||||
+ (void) startPeriodicEventsAfterDelay: (NSTimeInterval)delaySeconds
|
+ (void) startPeriodicEventsAfterDelay: (NSTimeInterval)delaySeconds
|
||||||
withPeriod: (NSTimeInterval)periodSeconds
|
withPeriod: (NSTimeInterval)periodSeconds
|
||||||
{
|
{
|
||||||
NSTimer *timer;
|
NSTimer *timer;
|
||||||
NSMutableDictionary *dict = GSCurrentThreadDictionary();
|
NSMutableDictionary *dict = GSCurrentThreadDictionary();
|
||||||
|
|
||||||
NSDebugLLog (@"NSEvent", @"startPeriodicEventsAfterDelay: withPeriod: ");
|
NSDebugLLog (@"NSEvent", @"startPeriodicEventsAfterDelay: withPeriod: ");
|
||||||
|
|
||||||
if ([dict objectForKey: timerKey])
|
if ([dict objectForKey: timerKey])
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"Periodic events are already being generated for "
|
format: @"Periodic events are already being generated for "
|
||||||
@"this thread %x", GSCurrentThread()];
|
@"this thread %x", GSCurrentThread()];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Register a timer that will fire in delaySeconds.
|
* Register a timer that will fire in delaySeconds.
|
||||||
|
@ -296,31 +295,31 @@ static Class eventClass;
|
||||||
* a repeat timer that will send the following events
|
* a repeat timer that will send the following events
|
||||||
*/
|
*/
|
||||||
timer = [NSTimer timerWithTimeInterval: delaySeconds
|
timer = [NSTimer timerWithTimeInterval: delaySeconds
|
||||||
target: self
|
target: self
|
||||||
selector: @selector(_registerRealTimer:)
|
selector: @selector(_registerRealTimer:)
|
||||||
userInfo: [NSNumber numberWithDouble: periodSeconds]
|
userInfo: [NSNumber numberWithDouble: periodSeconds]
|
||||||
repeats: NO];
|
repeats: NO];
|
||||||
|
|
||||||
[[NSRunLoop currentRunLoop] addTimer: timer
|
[[NSRunLoop currentRunLoop] addTimer: timer
|
||||||
forMode: NSEventTrackingRunLoopMode];
|
forMode: NSEventTrackingRunLoopMode];
|
||||||
[dict setObject: timer forKey: timerKey];
|
[dict setObject: timer forKey: timerKey];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) _timerFired: (NSTimer*)timer
|
+ (void) _timerFired: (NSTimer*)timer
|
||||||
{
|
{
|
||||||
NSTimeInterval timeInterval;
|
NSTimeInterval timeInterval;
|
||||||
NSEvent *periodicEvent;
|
NSEvent *periodicEvent;
|
||||||
|
|
||||||
timeInterval = [[NSDate date] timeIntervalSinceReferenceDate];
|
timeInterval = [[NSDate date] timeIntervalSinceReferenceDate];
|
||||||
periodicEvent = [self otherEventWithType: NSPeriodic
|
periodicEvent = [self otherEventWithType: NSPeriodic
|
||||||
location: NSZeroPoint
|
location: NSZeroPoint
|
||||||
modifierFlags: 0
|
modifierFlags: 0
|
||||||
timestamp: timeInterval
|
timestamp: timeInterval
|
||||||
windowNumber: 0
|
windowNumber: 0
|
||||||
context: [NSApp context]
|
context: [NSApp context]
|
||||||
subtype: 0
|
subtype: 0
|
||||||
data1: 0
|
data1: 0
|
||||||
data2: 0];
|
data2: 0];
|
||||||
|
|
||||||
NSDebugLLog (@"NSEvent", @"_timerFired: ");
|
NSDebugLLog (@"NSEvent", @"_timerFired: ");
|
||||||
[NSApp postEvent: periodicEvent atStart: NO];
|
[NSApp postEvent: periodicEvent atStart: NO];
|
||||||
|
@ -331,42 +330,42 @@ static Class eventClass;
|
||||||
*/
|
*/
|
||||||
+ (void) _registerRealTimer: (NSTimer*)timer
|
+ (void) _registerRealTimer: (NSTimer*)timer
|
||||||
{
|
{
|
||||||
NSTimer *realTimer;
|
NSTimer *realTimer;
|
||||||
NSMutableDictionary *dict = GSCurrentThreadDictionary();
|
NSMutableDictionary *dict = GSCurrentThreadDictionary();
|
||||||
|
|
||||||
NSDebugLLog (@"NSEvent", @"_registerRealTimer: ");
|
NSDebugLLog (@"NSEvent", @"_registerRealTimer: ");
|
||||||
{
|
{
|
||||||
NSTimeInterval timeInterval;
|
NSTimeInterval timeInterval;
|
||||||
NSEvent *periodicEvent;
|
NSEvent *periodicEvent;
|
||||||
|
|
||||||
timeInterval = [[NSDate date] timeIntervalSinceReferenceDate];
|
timeInterval = [[NSDate date] timeIntervalSinceReferenceDate];
|
||||||
periodicEvent = [self otherEventWithType: NSPeriodic
|
periodicEvent = [self otherEventWithType: NSPeriodic
|
||||||
location: NSZeroPoint
|
location: NSZeroPoint
|
||||||
modifierFlags: 0
|
modifierFlags: 0
|
||||||
timestamp: timeInterval
|
timestamp: timeInterval
|
||||||
windowNumber: 0
|
windowNumber: 0
|
||||||
context: [NSApp context]
|
context: [NSApp context]
|
||||||
subtype: 0
|
subtype: 0
|
||||||
data1: 0
|
data1: 0
|
||||||
data2: 0];
|
data2: 0];
|
||||||
|
|
||||||
[NSApp postEvent: periodicEvent atStart: NO];
|
[NSApp postEvent: periodicEvent atStart: NO];
|
||||||
}
|
}
|
||||||
|
|
||||||
realTimer = [NSTimer timerWithTimeInterval: [[timer userInfo] doubleValue]
|
realTimer = [NSTimer timerWithTimeInterval: [[timer userInfo] doubleValue]
|
||||||
target: self
|
target: self
|
||||||
selector: @selector(_timerFired:)
|
selector: @selector(_timerFired:)
|
||||||
userInfo: nil
|
userInfo: nil
|
||||||
repeats: YES];
|
repeats: YES];
|
||||||
[dict setObject: realTimer forKey: timerKey];
|
[dict setObject: realTimer forKey: timerKey];
|
||||||
[[NSRunLoop currentRunLoop] addTimer: realTimer
|
[[NSRunLoop currentRunLoop] addTimer: realTimer
|
||||||
forMode: NSEventTrackingRunLoopMode];
|
forMode: NSEventTrackingRunLoopMode];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void) stopPeriodicEvents
|
+ (void) stopPeriodicEvents
|
||||||
{
|
{
|
||||||
NSTimer *timer;
|
NSTimer *timer;
|
||||||
NSMutableDictionary *dict = GSCurrentThreadDictionary();
|
NSMutableDictionary *dict = GSCurrentThreadDictionary();
|
||||||
|
|
||||||
NSDebugLLog (@"NSEvent", @"stopPeriodicEvents");
|
NSDebugLLog (@"NSEvent", @"stopPeriodicEvents");
|
||||||
timer = [dict objectForKey: timerKey];
|
timer = [dict objectForKey: timerKey];
|
||||||
|
@ -382,10 +381,10 @@ static Class eventClass;
|
||||||
*/
|
*/
|
||||||
- (int) buttonNumber
|
- (int) buttonNumber
|
||||||
{
|
{
|
||||||
if (event_type < NSLeftMouseDown || event_type > NSMouseExited)
|
if (!(NSEventMaskFromType(event_type) & GSMouseEventMask))
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"buttonNumber requested for non-mouse event"];
|
format: @"buttonNumber requested for non-mouse event"];
|
||||||
}
|
}
|
||||||
return event_data.mouse.button;
|
return event_data.mouse.button;
|
||||||
}
|
}
|
||||||
|
@ -400,7 +399,7 @@ static Class eventClass;
|
||||||
if ((event_type != NSKeyUp) && (event_type != NSKeyDown))
|
if ((event_type != NSKeyUp) && (event_type != NSKeyDown))
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"characters requested for non-keyboard event"];
|
format: @"characters requested for non-keyboard event"];
|
||||||
}
|
}
|
||||||
return event_data.key.char_keys;
|
return event_data.key.char_keys;
|
||||||
}
|
}
|
||||||
|
@ -416,8 +415,8 @@ static Class eventClass;
|
||||||
if ((event_type != NSKeyUp) && (event_type != NSKeyDown))
|
if ((event_type != NSKeyUp) && (event_type != NSKeyDown))
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"charactersIgnoringModifiers requested for "
|
format: @"charactersIgnoringModifiers requested for "
|
||||||
@"non-keyboard event"];
|
@"non-keyboard event"];
|
||||||
}
|
}
|
||||||
return event_data.key.unmodified_keys;
|
return event_data.key.unmodified_keys;
|
||||||
}
|
}
|
||||||
|
@ -432,10 +431,10 @@ static Class eventClass;
|
||||||
- (int) clickCount
|
- (int) clickCount
|
||||||
{
|
{
|
||||||
/* Make sure it is one of the right event types */
|
/* Make sure it is one of the right event types */
|
||||||
if (event_type < NSLeftMouseDown || event_type > NSRightMouseUp)
|
if (!(NSEventMaskFromType(event_type) & GSMouseEventMask))
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"clickCount requested for non-mouse event"];
|
format: @"clickCount requested for non-mouse event"];
|
||||||
}
|
}
|
||||||
return event_data.mouse.click;
|
return event_data.mouse.click;
|
||||||
}
|
}
|
||||||
|
@ -456,12 +455,12 @@ static Class eventClass;
|
||||||
{
|
{
|
||||||
event_data.key.char_keys = [event_data.key.char_keys copyWithZone: zone];
|
event_data.key.char_keys = [event_data.key.char_keys copyWithZone: zone];
|
||||||
event_data.key.unmodified_keys
|
event_data.key.unmodified_keys
|
||||||
= [event_data.key.unmodified_keys copyWithZone: zone];
|
= [event_data.key.unmodified_keys copyWithZone: zone];
|
||||||
}
|
}
|
||||||
else if (event_type == NSCursorUpdate)
|
else if (event_type == NSCursorUpdate)
|
||||||
{
|
{
|
||||||
event_data.tracking.user_data
|
event_data.tracking.user_data
|
||||||
= (void *)[(id)event_data.tracking.user_data copyWithZone: zone];
|
= (void *)[(id)event_data.tracking.user_data copyWithZone: zone];
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
@ -477,7 +476,7 @@ static Class eventClass;
|
||||||
if (event_type < NSAppKitDefined || event_type > NSPeriodic)
|
if (event_type < NSAppKitDefined || event_type > NSPeriodic)
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"data1 requested for invalid event type"];
|
format: @"data1 requested for invalid event type"];
|
||||||
}
|
}
|
||||||
return event_data.misc.data1;
|
return event_data.misc.data1;
|
||||||
}
|
}
|
||||||
|
@ -493,7 +492,7 @@ static Class eventClass;
|
||||||
if (event_type < NSAppKitDefined || event_type > NSPeriodic)
|
if (event_type < NSAppKitDefined || event_type > NSPeriodic)
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"data2 requested for invalid event type"];
|
format: @"data2 requested for invalid event type"];
|
||||||
}
|
}
|
||||||
return event_data.misc.data2;
|
return event_data.misc.data2;
|
||||||
}
|
}
|
||||||
|
@ -525,11 +524,10 @@ static Class eventClass;
|
||||||
*/
|
*/
|
||||||
- (float)deltaX
|
- (float)deltaX
|
||||||
{
|
{
|
||||||
if (event_type != NSScrollWheel
|
if (!(NSEventMaskFromType(event_type) & GSMouseMovedEventMask))
|
||||||
&& (event_type < NSMouseMoved || event_type > NSRightMouseDragged))
|
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"deltaX requested for invalid event type"];
|
format: @"deltaX requested for invalid event type"];
|
||||||
}
|
}
|
||||||
return event_data.mouse.deltaX;
|
return event_data.mouse.deltaX;
|
||||||
}
|
}
|
||||||
|
@ -546,11 +544,10 @@ static Class eventClass;
|
||||||
*/
|
*/
|
||||||
- (float)deltaY
|
- (float)deltaY
|
||||||
{
|
{
|
||||||
if (event_type != NSScrollWheel
|
if (!(NSEventMaskFromType(event_type) & GSMouseMovedEventMask))
|
||||||
&& (event_type < NSMouseMoved || event_type > NSRightMouseDragged))
|
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"deltaY requested for invalid event type"];
|
format: @"deltaY requested for invalid event type"];
|
||||||
}
|
}
|
||||||
return event_data.mouse.deltaY;
|
return event_data.mouse.deltaY;
|
||||||
}
|
}
|
||||||
|
@ -570,11 +567,10 @@ static Class eventClass;
|
||||||
*/
|
*/
|
||||||
- (float)deltaZ
|
- (float)deltaZ
|
||||||
{
|
{
|
||||||
if (event_type != NSScrollWheel
|
if (!(NSEventMaskFromType(event_type) & GSMouseMovedEventMask))
|
||||||
&& (event_type < NSMouseMoved || event_type > NSRightMouseDragged))
|
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"deltaZ requested for invalid event type"];
|
format: @"deltaZ requested for invalid event type"];
|
||||||
}
|
}
|
||||||
return event_data.mouse.deltaZ;
|
return event_data.mouse.deltaZ;
|
||||||
}
|
}
|
||||||
|
@ -582,15 +578,13 @@ static Class eventClass;
|
||||||
- (NSString*) description
|
- (NSString*) description
|
||||||
{
|
{
|
||||||
static const char *eventTypes[] = {
|
static const char *eventTypes[] = {
|
||||||
|
"nullEvent",
|
||||||
"leftMouseDown",
|
"leftMouseDown",
|
||||||
"leftMouseUp",
|
"leftMouseUp",
|
||||||
"otherMouseDown",
|
|
||||||
"otherMouseUp",
|
|
||||||
"rightMouseDown",
|
"rightMouseDown",
|
||||||
"rightMouseUp",
|
"rightMouseUp",
|
||||||
"mouseMoved",
|
"mouseMoved",
|
||||||
"leftMouseDragged",
|
"leftMouseDragged",
|
||||||
"otherMouseDragged",
|
|
||||||
"rightMouseDragged",
|
"rightMouseDragged",
|
||||||
"mouseEntered",
|
"mouseEntered",
|
||||||
"mouseExited",
|
"mouseExited",
|
||||||
|
@ -602,7 +596,12 @@ static const char *eventTypes[] = {
|
||||||
"applicationDefined",
|
"applicationDefined",
|
||||||
"periodic",
|
"periodic",
|
||||||
"cursorUpdate",
|
"cursorUpdate",
|
||||||
"scrollWheel"
|
"scrollWheel",
|
||||||
|
"tabletPoint",
|
||||||
|
"tabletProximity",
|
||||||
|
"otherMouseDown",
|
||||||
|
"otherMouseUp",
|
||||||
|
"otherMouseDragged"
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (event_type)
|
switch (event_type)
|
||||||
|
@ -613,41 +612,41 @@ static const char *eventTypes[] = {
|
||||||
case NSOtherMouseUp:
|
case NSOtherMouseUp:
|
||||||
case NSRightMouseDown:
|
case NSRightMouseDown:
|
||||||
case NSRightMouseUp:
|
case NSRightMouseUp:
|
||||||
return [NSString stringWithFormat:
|
return [NSString stringWithFormat:
|
||||||
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
||||||
@" time = %f, window = %d, dpsContext = %p,"
|
@" time = %f, window = %d, dpsContext = %p,"
|
||||||
@" event number = %d, click = %d, pressure = %f",
|
@" event number = %d, click = %d, pressure = %f",
|
||||||
eventTypes[event_type], location_point.x, location_point.y,
|
eventTypes[event_type], location_point.x, location_point.y,
|
||||||
modifier_flags, event_time, window_num, event_context,
|
modifier_flags, event_time, window_num, event_context,
|
||||||
event_data.mouse.event_num, event_data.mouse.click,
|
event_data.mouse.event_num, event_data.mouse.click,
|
||||||
event_data.mouse.pressure];
|
event_data.mouse.pressure];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSMouseEntered:
|
case NSMouseEntered:
|
||||||
case NSMouseExited:
|
case NSMouseExited:
|
||||||
return [NSString stringWithFormat:
|
return [NSString stringWithFormat:
|
||||||
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
||||||
@" time = %f, window = %d, dpsContext = %p, "
|
@" time = %f, window = %d, dpsContext = %p, "
|
||||||
@" event number = %d, tracking number = %d, user data = %p",
|
@" event number = %d, tracking number = %d, user data = %p",
|
||||||
eventTypes[event_type], location_point.x, location_point.y,
|
eventTypes[event_type], location_point.x, location_point.y,
|
||||||
modifier_flags, event_time, window_num, event_context,
|
modifier_flags, event_time, window_num, event_context,
|
||||||
event_data.tracking.event_num,
|
event_data.tracking.event_num,
|
||||||
event_data.tracking.tracking_num,
|
event_data.tracking.tracking_num,
|
||||||
event_data.tracking.user_data];
|
event_data.tracking.user_data];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSKeyDown:
|
case NSKeyDown:
|
||||||
case NSKeyUp:
|
case NSKeyUp:
|
||||||
return [NSString stringWithFormat:
|
return [NSString stringWithFormat:
|
||||||
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
||||||
@" time = %f, window = %d, dpsContext = %p, "
|
@" time = %f, window = %d, dpsContext = %p, "
|
||||||
@" repeat = %s, keys = %@, ukeys = %@, keyCode = 0x%x",
|
@" repeat = %s, keys = %@, ukeys = %@, keyCode = 0x%x",
|
||||||
eventTypes[event_type], location_point.x, location_point.y,
|
eventTypes[event_type], location_point.x, location_point.y,
|
||||||
modifier_flags, event_time, window_num, event_context,
|
modifier_flags, event_time, window_num, event_context,
|
||||||
(event_data.key.repeat ? "YES" : "NO"),
|
(event_data.key.repeat ? "YES" : "NO"),
|
||||||
event_data.key.char_keys, event_data.key.unmodified_keys,
|
event_data.key.char_keys, event_data.key.unmodified_keys,
|
||||||
event_data.key.key_code];
|
event_data.key.key_code];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSFlagsChanged:
|
case NSFlagsChanged:
|
||||||
case NSPeriodic:
|
case NSPeriodic:
|
||||||
|
@ -655,34 +654,39 @@ static const char *eventTypes[] = {
|
||||||
case NSAppKitDefined:
|
case NSAppKitDefined:
|
||||||
case NSSystemDefined:
|
case NSSystemDefined:
|
||||||
case NSApplicationDefined:
|
case NSApplicationDefined:
|
||||||
return [NSString stringWithFormat:
|
return [NSString stringWithFormat:
|
||||||
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
||||||
@" time = %f, window = %d, dpsContext = %p, "
|
@" time = %f, window = %d, dpsContext = %p, "
|
||||||
@" subtype = %d, data1 = %p, data2 = %p",
|
@" subtype = %d, data1 = %p, data2 = %p",
|
||||||
eventTypes[event_type], location_point.x, location_point.y,
|
eventTypes[event_type], location_point.x, location_point.y,
|
||||||
modifier_flags, event_time, window_num, event_context,
|
modifier_flags, event_time, window_num, event_context,
|
||||||
event_data.misc.sub_type, event_data.misc.data1,
|
event_data.misc.sub_type, event_data.misc.data1,
|
||||||
event_data.misc.data2];
|
event_data.misc.data2];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSScrollWheel:
|
case NSScrollWheel:
|
||||||
case NSMouseMoved:
|
case NSMouseMoved:
|
||||||
case NSLeftMouseDragged:
|
case NSLeftMouseDragged:
|
||||||
case NSOtherMouseDragged:
|
case NSOtherMouseDragged:
|
||||||
case NSRightMouseDragged:
|
case NSRightMouseDragged:
|
||||||
return [NSString stringWithFormat:
|
return [NSString stringWithFormat:
|
||||||
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
||||||
@" time = %f, window = %d, dpsContext = %p,"
|
@" time = %f, window = %d, dpsContext = %p,"
|
||||||
@" event number = %d, click = %d, pressure = %f"
|
@" event number = %d, click = %d, pressure = %f"
|
||||||
@" button = %d, deltaX = %f, deltaY = %f, deltaZ = %f",
|
@" button = %d, deltaX = %f, deltaY = %f, deltaZ = %f",
|
||||||
eventTypes[event_type], location_point.x, location_point.y,
|
eventTypes[event_type], location_point.x, location_point.y,
|
||||||
modifier_flags, event_time, window_num, event_context,
|
modifier_flags, event_time, window_num, event_context,
|
||||||
event_data.mouse.event_num, event_data.mouse.click,
|
event_data.mouse.event_num, event_data.mouse.click,
|
||||||
event_data.mouse.pressure, event_data.mouse.button,
|
event_data.mouse.pressure, event_data.mouse.button,
|
||||||
event_data.mouse.deltaX,
|
event_data.mouse.deltaX,
|
||||||
event_data.mouse.deltaY,
|
event_data.mouse.deltaY,
|
||||||
event_data.mouse.deltaZ];
|
event_data.mouse.deltaZ];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NSTabletPoint:
|
||||||
|
case NSTabletProximity:
|
||||||
|
// FIXME: Tablet events
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return [super description];
|
return [super description];
|
||||||
|
@ -709,37 +713,42 @@ static const char *eventTypes[] = {
|
||||||
case NSLeftMouseDragged:
|
case NSLeftMouseDragged:
|
||||||
case NSOtherMouseDragged:
|
case NSOtherMouseDragged:
|
||||||
case NSRightMouseDragged:
|
case NSRightMouseDragged:
|
||||||
[aCoder encodeValuesOfObjCTypes: "iififff", &event_data.mouse.event_num,
|
[aCoder encodeValuesOfObjCTypes: "iififff", &event_data.mouse.event_num,
|
||||||
&event_data.mouse.click, &event_data.mouse.pressure,
|
&event_data.mouse.click, &event_data.mouse.pressure,
|
||||||
&event_data.mouse.button, &event_data.mouse.deltaX,
|
&event_data.mouse.button, &event_data.mouse.deltaX,
|
||||||
&event_data.mouse.deltaY, &event_data.mouse.deltaZ];
|
&event_data.mouse.deltaY, &event_data.mouse.deltaZ];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSMouseEntered:
|
case NSMouseEntered:
|
||||||
case NSMouseExited:
|
case NSMouseExited:
|
||||||
case NSCursorUpdate:
|
case NSCursorUpdate:
|
||||||
// Can't do anything with the user_data!?
|
// Can't do anything with the user_data!?
|
||||||
[aCoder encodeValuesOfObjCTypes: "ii", &event_data.tracking.event_num,
|
[aCoder encodeValuesOfObjCTypes: "ii", &event_data.tracking.event_num,
|
||||||
&event_data.tracking.tracking_num];
|
&event_data.tracking.tracking_num];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSKeyDown:
|
case NSKeyDown:
|
||||||
case NSKeyUp:
|
case NSKeyUp:
|
||||||
[aCoder encodeValueOfObjCType: @encode(BOOL)
|
[aCoder encodeValueOfObjCType: @encode(BOOL)
|
||||||
at: &event_data.key.repeat];
|
at: &event_data.key.repeat];
|
||||||
[aCoder encodeObject: event_data.key.char_keys];
|
[aCoder encodeObject: event_data.key.char_keys];
|
||||||
[aCoder encodeObject: event_data.key.unmodified_keys];
|
[aCoder encodeObject: event_data.key.unmodified_keys];
|
||||||
[aCoder encodeValueOfObjCType: "S" at: &event_data.key.key_code];
|
[aCoder encodeValueOfObjCType: "S" at: &event_data.key.key_code];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSFlagsChanged:
|
case NSFlagsChanged:
|
||||||
case NSPeriodic:
|
case NSPeriodic:
|
||||||
case NSAppKitDefined:
|
case NSAppKitDefined:
|
||||||
case NSSystemDefined:
|
case NSSystemDefined:
|
||||||
case NSApplicationDefined:
|
case NSApplicationDefined:
|
||||||
[aCoder encodeValuesOfObjCTypes: "sii", &event_data.misc.sub_type,
|
[aCoder encodeValuesOfObjCTypes: "sii", &event_data.misc.sub_type,
|
||||||
&event_data.misc.data1, &event_data.misc.data2];
|
&event_data.misc.data1, &event_data.misc.data2];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NSTabletPoint:
|
||||||
|
case NSTabletProximity:
|
||||||
|
// FIXME: Tablet events
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -753,9 +762,10 @@ static const char *eventTypes[] = {
|
||||||
- (int) eventNumber
|
- (int) eventNumber
|
||||||
{
|
{
|
||||||
/* Make sure it is one of the right event types */
|
/* Make sure it is one of the right event types */
|
||||||
if (event_type < NSLeftMouseDown || event_type > NSMouseExited)
|
if (!(NSEventMaskFromType(event_type) & GSMouseEventMask) &&
|
||||||
|
!(NSEventMaskFromType(event_type) & GSEnterExitEventMask))
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"eventNumber requested for non-mouse event"];
|
format: @"eventNumber requested for non-mouse event"];
|
||||||
|
|
||||||
if ((event_type == NSMouseEntered) || (event_type == NSMouseExited))
|
if ((event_type == NSMouseEntered) || (event_type == NSMouseExited))
|
||||||
return event_data.tracking.event_num;
|
return event_data.tracking.event_num;
|
||||||
|
@ -765,12 +775,44 @@ static const char *eventTypes[] = {
|
||||||
|
|
||||||
- (id) initWithCoder: (NSCoder*)aDecoder
|
- (id) initWithCoder: (NSCoder*)aDecoder
|
||||||
{
|
{
|
||||||
|
int version = [aDecoder versionForClassName: @"NSEvent"];
|
||||||
|
|
||||||
[aDecoder decodeValueOfObjCType: @encode(NSEventType) at: &event_type];
|
[aDecoder decodeValueOfObjCType: @encode(NSEventType) at: &event_type];
|
||||||
location_point = [aDecoder decodePoint];
|
location_point = [aDecoder decodePoint];
|
||||||
[aDecoder decodeValueOfObjCType: @encode(unsigned) at: &modifier_flags];
|
[aDecoder decodeValueOfObjCType: @encode(unsigned) at: &modifier_flags];
|
||||||
[aDecoder decodeValueOfObjCType: @encode(NSTimeInterval) at: &event_time];
|
[aDecoder decodeValueOfObjCType: @encode(NSTimeInterval) at: &event_time];
|
||||||
[aDecoder decodeValueOfObjCType: @encode(unsigned) at: &window_num];
|
[aDecoder decodeValueOfObjCType: @encode(unsigned) at: &window_num];
|
||||||
|
|
||||||
|
if (version == 1)
|
||||||
|
{
|
||||||
|
// For the unlikely case that old events have been stored, convert them.
|
||||||
|
switch (event_type)
|
||||||
|
{
|
||||||
|
case 0: event_type = NSLeftMouseDown; break;
|
||||||
|
case 1: event_type = NSLeftMouseUp; break;
|
||||||
|
case 2: event_type = NSOtherMouseDown; break;
|
||||||
|
case 3: event_type = NSOtherMouseUp; break;
|
||||||
|
case 4: event_type = NSRightMouseDown; break;
|
||||||
|
case 5: event_type = NSRightMouseUp; break;
|
||||||
|
case 6: event_type = NSMouseMoved; break;
|
||||||
|
case 7: event_type = NSLeftMouseDragged; break;
|
||||||
|
case 8: event_type = NSOtherMouseDragged; break;
|
||||||
|
case 9: event_type = NSRightMouseDragged; break;
|
||||||
|
case 10: event_type = NSMouseEntered; break;
|
||||||
|
case 11: event_type = NSMouseExited; break;
|
||||||
|
case 12: event_type = NSKeyDown; break;
|
||||||
|
case 13: event_type = NSKeyUp; break;
|
||||||
|
case 14: event_type = NSFlagsChanged; break;
|
||||||
|
case 15: event_type = NSAppKitDefined; break;
|
||||||
|
case 16: event_type = NSSystemDefined; break;
|
||||||
|
case 17: event_type = NSApplicationDefined; break;
|
||||||
|
case 18: event_type = NSPeriodic; break;
|
||||||
|
case 19: event_type = NSCursorUpdate; break;
|
||||||
|
case 20: event_type = NSScrollWheel; break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Decode the event date based upon the event type
|
// Decode the event date based upon the event type
|
||||||
switch (event_type)
|
switch (event_type)
|
||||||
{
|
{
|
||||||
|
@ -785,38 +827,43 @@ static const char *eventTypes[] = {
|
||||||
case NSLeftMouseDragged:
|
case NSLeftMouseDragged:
|
||||||
case NSOtherMouseDragged:
|
case NSOtherMouseDragged:
|
||||||
case NSRightMouseDragged:
|
case NSRightMouseDragged:
|
||||||
[aDecoder decodeValuesOfObjCTypes: "iififff",
|
[aDecoder decodeValuesOfObjCTypes: "iififff",
|
||||||
&event_data.mouse.event_num, &event_data.mouse.click,
|
&event_data.mouse.event_num, &event_data.mouse.click,
|
||||||
&event_data.mouse.pressure, &event_data.mouse.button,
|
&event_data.mouse.pressure, &event_data.mouse.button,
|
||||||
&event_data.mouse.deltaX, &event_data.mouse.deltaY,
|
&event_data.mouse.deltaX, &event_data.mouse.deltaY,
|
||||||
&event_data.mouse.deltaZ];
|
&event_data.mouse.deltaZ];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSMouseEntered:
|
case NSMouseEntered:
|
||||||
case NSMouseExited:
|
case NSMouseExited:
|
||||||
case NSCursorUpdate:
|
case NSCursorUpdate:
|
||||||
// Can't do anything with the user_data!?
|
// Can't do anything with the user_data!?
|
||||||
[aDecoder decodeValuesOfObjCTypes: "ii", &event_data.tracking.event_num,
|
[aDecoder decodeValuesOfObjCTypes: "ii", &event_data.tracking.event_num,
|
||||||
&event_data.tracking.tracking_num];
|
&event_data.tracking.tracking_num];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSKeyDown:
|
case NSKeyDown:
|
||||||
case NSKeyUp:
|
case NSKeyUp:
|
||||||
[aDecoder decodeValueOfObjCType: @encode(BOOL)
|
[aDecoder decodeValueOfObjCType: @encode(BOOL)
|
||||||
at: &event_data.key.repeat];
|
at: &event_data.key.repeat];
|
||||||
event_data.key.char_keys = [aDecoder decodeObject];
|
event_data.key.char_keys = [aDecoder decodeObject];
|
||||||
event_data.key.unmodified_keys = [aDecoder decodeObject];
|
event_data.key.unmodified_keys = [aDecoder decodeObject];
|
||||||
[aDecoder decodeValueOfObjCType: "S" at: &event_data.key.key_code];
|
[aDecoder decodeValueOfObjCType: "S" at: &event_data.key.key_code];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSFlagsChanged:
|
case NSFlagsChanged:
|
||||||
case NSPeriodic:
|
case NSPeriodic:
|
||||||
case NSAppKitDefined:
|
case NSAppKitDefined:
|
||||||
case NSSystemDefined:
|
case NSSystemDefined:
|
||||||
case NSApplicationDefined:
|
case NSApplicationDefined:
|
||||||
[aDecoder decodeValuesOfObjCTypes: "sii", &event_data.misc.sub_type,
|
[aDecoder decodeValuesOfObjCTypes: "sii", &event_data.misc.sub_type,
|
||||||
&event_data.misc.data1, &event_data.misc.data2];
|
&event_data.misc.data1, &event_data.misc.data2];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NSTabletPoint:
|
||||||
|
case NSTabletProximity:
|
||||||
|
// FIXME: Tablet events
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
@ -831,7 +878,7 @@ static const char *eventTypes[] = {
|
||||||
{
|
{
|
||||||
if ((event_type != NSKeyUp) && (event_type != NSKeyDown))
|
if ((event_type != NSKeyUp) && (event_type != NSKeyDown))
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"isARepeat requested for non-keyboard event"];
|
format: @"isARepeat requested for non-keyboard event"];
|
||||||
|
|
||||||
return event_data.key.repeat;
|
return event_data.key.repeat;
|
||||||
}
|
}
|
||||||
|
@ -847,7 +894,7 @@ static const char *eventTypes[] = {
|
||||||
&& (event_type != NSFlagsChanged))
|
&& (event_type != NSFlagsChanged))
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"keyCode requested for non-keyboard event"];
|
format: @"keyCode requested for non-keyboard event"];
|
||||||
}
|
}
|
||||||
return event_data.key.key_code;
|
return event_data.key.key_code;
|
||||||
}
|
}
|
||||||
|
@ -879,10 +926,10 @@ static const char *eventTypes[] = {
|
||||||
- (float) pressure
|
- (float) pressure
|
||||||
{
|
{
|
||||||
/* Make sure it is one of the right event types */
|
/* Make sure it is one of the right event types */
|
||||||
if (event_type < NSLeftMouseDown || event_type > NSRightMouseDragged)
|
if (!(NSEventMaskFromType(event_type) & GSMouseEventMask))
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"pressure requested for non-mouse event"];
|
format: @"pressure requested for non-mouse event"];
|
||||||
}
|
}
|
||||||
return event_data.mouse.pressure;
|
return event_data.mouse.pressure;
|
||||||
}
|
}
|
||||||
|
@ -891,16 +938,28 @@ static const char *eventTypes[] = {
|
||||||
* Returns the 'subtype' item associated with the event.
|
* Returns the 'subtype' item associated with the event.
|
||||||
* <br />Raises NSInternalInconsistencyException if the event is not
|
* <br />Raises NSInternalInconsistencyException if the event is not
|
||||||
* of type NSAppKitDefined, NSSystemDefined, NSApplicationDefined,
|
* of type NSAppKitDefined, NSSystemDefined, NSApplicationDefined,
|
||||||
* or NSPeriodic
|
* NSPeriodic or a mouve event.
|
||||||
*/
|
*/
|
||||||
- (short) subtype
|
- (short) subtype
|
||||||
{
|
{
|
||||||
if (event_type < NSAppKitDefined || event_type > NSPeriodic)
|
if (!(NSEventMaskFromType(event_type) & GSOtherEventMask) &&
|
||||||
|
!(NSEventMaskFromType(event_type) & GSMouseEventMask))
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"subtype requested for invalid event type"];
|
format: @"subtype requested for invalid event type"];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NSEventMaskFromType(event_type) & GSOtherEventMask)
|
||||||
|
return event_data.misc.sub_type;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (event_type == NSTabletPoint)
|
||||||
|
return NSTabletPointEventSubtype;
|
||||||
|
else if (event_type == NSTabletProximity)
|
||||||
|
return NSTabletProximityEventSubtype;
|
||||||
|
else
|
||||||
|
return NSMouseEventSubtype;
|
||||||
}
|
}
|
||||||
return event_data.misc.sub_type;;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -923,7 +982,7 @@ static const char *eventTypes[] = {
|
||||||
&& event_type != NSCursorUpdate)
|
&& event_type != NSCursorUpdate)
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"trackingNumber requested for non-tracking event"];
|
format: @"trackingNumber requested for non-tracking event"];
|
||||||
}
|
}
|
||||||
return event_data.tracking.tracking_num;
|
return event_data.tracking.tracking_num;
|
||||||
}
|
}
|
||||||
|
@ -948,7 +1007,7 @@ static const char *eventTypes[] = {
|
||||||
&& event_type != NSCursorUpdate)
|
&& event_type != NSCursorUpdate)
|
||||||
{
|
{
|
||||||
[NSException raise: NSInternalInconsistencyException
|
[NSException raise: NSInternalInconsistencyException
|
||||||
format: @"userData requested for non-tracking event"];
|
format: @"userData requested for non-tracking event"];
|
||||||
}
|
}
|
||||||
return event_data.tracking.user_data;
|
return event_data.tracking.user_data;
|
||||||
}
|
}
|
||||||
|
@ -973,4 +1032,121 @@ static const char *eventTypes[] = {
|
||||||
return window_num;
|
return window_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Methods for tablet events
|
||||||
|
*/
|
||||||
|
- (int) absoluteX
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (int) absoluteY
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (int) absoluteZ
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (unsigned int) buttonMask
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (unsigned int) capabilityMask
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (unsigned int) deviceID
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL) isEnteringProximity
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (unsigned int) pointingDeviceID
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (unsigned int) pointingDeviceSerialNumber
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSPointingDeviceType) pointingDeviceType
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return NSUnknownPointingDevice;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (float) rotation
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (unsigned int) systemTabletID
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (unsigned int) tabletID
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (float) tangentialPressure
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSPoint) tilt
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return NSMakePoint(0.0, 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (unsigned long long) uniqueID
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id) vendorDefined
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (unsigned int) vendorID
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (unsigned int) vendorPointingDeviceType
|
||||||
|
{
|
||||||
|
// FIXME
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -3759,6 +3759,11 @@ resetCursorRectsForView(NSView *theView)
|
||||||
case NSSystemDefined:
|
case NSSystemDefined:
|
||||||
case NSApplicationDefined:
|
case NSApplicationDefined:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NSTabletPoint:
|
||||||
|
case NSTabletProximity:
|
||||||
|
// FIXME: Tablet events
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue