Support full documented API

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@12974 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2002-03-04 19:32:44 +00:00
parent f3c167b917
commit 0479bbb207
4 changed files with 156 additions and 135 deletions

View file

@ -1,3 +1,9 @@
2002-03-04 Richard Frith-Macdonald <rfm@gnu.org>
* Headers/AppKit/NSEvent.h: Modify to support MacOS-X documented API
(rather than just the currently implemented one).
* Source/NSEvent.m: ditto.
2002-03-04 Pierre-Yves Rivaille <pyrivail@ens-lyon.fr> 2002-03-04 Pierre-Yves Rivaille <pyrivail@ens-lyon.fr>
* Source/NSTableView.m ([NSTableView -superviewFrameChanged:]): * Source/NSTableView.m ([NSTableView -superviewFrameChanged:]):

View file

@ -117,6 +117,9 @@ enum {
short click; short click;
short button; short button;
float pressure; float pressure;
float deltaX;
float deltaY;
float deltaZ;
} mouse; } mouse;
struct struct
{ {
@ -131,12 +134,6 @@ enum {
int tracking_num; int tracking_num;
void *user_data; void *user_data;
} tracking; } tracking;
struct
{
float deltaX;
float deltaY;
float deltaZ;
} scrollWheel;
struct struct
{ {
short sub_type; short sub_type;
@ -184,6 +181,10 @@ enum {
timestamp: (NSTimeInterval)time timestamp: (NSTimeInterval)time
windowNumber: (int)windowNum windowNumber: (int)windowNum
context: (NSGraphicsContext*)context context: (NSGraphicsContext*)context
eventNumber: (int)eventNum
clickCount: (int)clickNum
pressure: (float)pressureValue
buttonNumber: (int)buttonNum
deltaX: (float)deltaX deltaX: (float)deltaX
deltaY: (float)deltaY deltaY: (float)deltaY
deltaZ: (float)deltaZ; deltaZ: (float)deltaZ;

View file

@ -194,6 +194,10 @@ static Class eventClass;
timestamp: (NSTimeInterval)time timestamp: (NSTimeInterval)time
windowNumber: (int)windowNum windowNumber: (int)windowNum
context: (NSGraphicsContext*)context context: (NSGraphicsContext*)context
eventNumber: (int)eventNum
clickCount: (int)clickNum
pressure: (float)pressureValue
buttonNumber: (int)buttonNum
deltaX: (float)deltaX deltaX: (float)deltaX
deltaY: (float)deltaY deltaY: (float)deltaY
deltaZ: (float)deltaZ deltaZ: (float)deltaZ
@ -216,9 +220,13 @@ static Class eventClass;
e->event_time = time; e->event_time = time;
e->window_num = windowNum; e->window_num = windowNum;
e->event_context = context; e->event_context = context;
e->event_data.scrollWheel.deltaX = deltaX; e->event_data.mouse.event_num = eventNum;
e->event_data.scrollWheel.deltaY = deltaY; e->event_data.mouse.click = clickNum;
e->event_data.scrollWheel.deltaZ = deltaZ; e->event_data.mouse.button = buttonNum;
e->event_data.mouse.pressure = pressureValue;
e->event_data.mouse.deltaX = deltaX;
e->event_data.mouse.deltaY = deltaY;
e->event_data.mouse.deltaZ = deltaZ;
return e; return e;
} }
@ -366,8 +374,10 @@ static Class eventClass;
- (int) buttonNumber - (int) buttonNumber
{ {
if (event_type < NSLeftMouseDown || event_type > NSMouseExited) if (event_type < NSLeftMouseDown || event_type > NSMouseExited)
{
[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;
} }
@ -379,9 +389,10 @@ static Class eventClass;
- (NSString *) characters - (NSString *) characters
{ {
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;
} }
@ -394,10 +405,11 @@ static Class eventClass;
- (NSString *) charactersIgnoringModifiers - (NSString *) charactersIgnoringModifiers
{ {
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;
} }
@ -412,9 +424,10 @@ static Class eventClass;
{ {
/* 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 (event_type < NSLeftMouseDown || event_type > NSRightMouseUp)
{
[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;
} }
@ -453,9 +466,10 @@ static Class eventClass;
- (int) data1 - (int) data1
{ {
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;
} }
@ -468,9 +482,10 @@ static Class eventClass;
- (int) data2 - (int) data2
{ {
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;
} }
@ -482,8 +497,9 @@ static Class eventClass;
RELEASE(event_data.key.unmodified_keys); RELEASE(event_data.key.unmodified_keys);
} }
else if (event_type == NSCursorUpdate) else if (event_type == NSCursorUpdate)
{
RELEASE((id)event_data.tracking.user_data); RELEASE((id)event_data.tracking.user_data);
}
NSDeallocateObject(self); NSDeallocateObject(self);
} }
@ -500,12 +516,12 @@ static Class eventClass;
- (float)deltaX - (float)deltaX
{ {
if (event_type != NSScrollWheel if (event_type != NSScrollWheel
&& (event_type < NSMouseMoved && (event_type < NSMouseMoved || event_type > NSRightMouseDragged))
|| 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.scrollWheel.deltaX; return event_data.mouse.deltaX;
} }
/** /**
@ -521,12 +537,12 @@ static Class eventClass;
- (float)deltaY - (float)deltaY
{ {
if (event_type != NSScrollWheel if (event_type != NSScrollWheel
&& (event_type < NSMouseMoved && (event_type < NSMouseMoved || event_type > NSRightMouseDragged))
|| 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.scrollWheel.deltaY; return event_data.mouse.deltaY;
} }
/** /**
@ -545,12 +561,12 @@ static Class eventClass;
- (float)deltaZ - (float)deltaZ
{ {
if (event_type != NSScrollWheel if (event_type != NSScrollWheel
&& (event_type < NSMouseMoved && (event_type < NSMouseMoved || event_type > NSRightMouseDragged))
|| 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.scrollWheel.deltaZ; return event_data.mouse.deltaZ;
} }
- (NSString*) description - (NSString*) description
@ -647,20 +663,21 @@ static Class eventClass;
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,"
@" deltaX = %f, deltaY = %f, deltaZ = %f", @" event number = %d, click = %d, pressure = %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.scrollWheel.deltaX, event_data.mouse.event_num, event_data.mouse.click,
event_data.scrollWheel.deltaY, event_data.mouse.pressure, event_data.mouse.button,
event_data.scrollWheel.deltaZ]; event_data.mouse.deltaX,
event_data.mouse.deltaY,
event_data.mouse.deltaZ];
break; break;
} }
return [super description]; return [super description];
} }
/* FIXME ... handle all the data!
*/
- (void) encodeWithCoder: (NSCoder*)aCoder - (void) encodeWithCoder: (NSCoder*)aCoder
{ {
[aCoder encodeValueOfObjCType: @encode(NSEventType) at: &event_type]; [aCoder encodeValueOfObjCType: @encode(NSEventType) at: &event_type];
@ -677,8 +694,15 @@ static Class eventClass;
case NSOtherMouseUp: case NSOtherMouseUp:
case NSRightMouseDown: case NSRightMouseDown:
case NSRightMouseUp: case NSRightMouseUp:
[aCoder encodeValuesOfObjCTypes: "iif", &event_data.mouse.event_num, case NSScrollWheel:
&event_data.mouse.click, &event_data.mouse.pressure]; case NSMouseMoved:
case NSLeftMouseDragged:
case NSOtherMouseDragged:
case NSRightMouseDragged:
[aCoder encodeValuesOfObjCTypes: "iififff", &event_data.mouse.event_num,
&event_data.mouse.click, &event_data.mouse.pressure,
&event_data.mouse.button, &event_data.mouse.deltaX,
&event_data.mouse.deltaY, &event_data.mouse.deltaZ];
break; break;
case NSMouseEntered: case NSMouseEntered:
@ -706,16 +730,6 @@ static Class eventClass;
[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 NSScrollWheel:
case NSMouseMoved:
case NSLeftMouseDragged:
case NSOtherMouseDragged:
case NSRightMouseDragged:
[aCoder encodeValuesOfObjCTypes: "fff",
&event_data.scrollWheel.deltaX,
&event_data.scrollWheel.deltaY,
&event_data.scrollWheel.deltaZ];
break;
} }
} }
@ -739,8 +753,6 @@ static Class eventClass;
return event_data.mouse.event_num; return event_data.mouse.event_num;
} }
/* FIXME ... handle all the data!
*/
- (id) initWithCoder: (NSCoder*)aDecoder - (id) initWithCoder: (NSCoder*)aDecoder
{ {
[aDecoder decodeValueOfObjCType: @encode(NSEventType) at: &event_type]; [aDecoder decodeValueOfObjCType: @encode(NSEventType) at: &event_type];
@ -758,8 +770,16 @@ static Class eventClass;
case NSOtherMouseUp: case NSOtherMouseUp:
case NSRightMouseDown: case NSRightMouseDown:
case NSRightMouseUp: case NSRightMouseUp:
[aDecoder decodeValuesOfObjCTypes: "iif", &event_data.mouse.event_num, case NSScrollWheel:
&event_data.mouse.click, &event_data.mouse.pressure]; case NSMouseMoved:
case NSLeftMouseDragged:
case NSOtherMouseDragged:
case NSRightMouseDragged:
[aDecoder decodeValuesOfObjCTypes: "iififff",
&event_data.mouse.event_num, &event_data.mouse.click,
&event_data.mouse.pressure, &event_data.mouse.button,
&event_data.mouse.deltaX, &event_data.mouse.deltaY,
&event_data.mouse.deltaZ];
break; break;
case NSMouseEntered: case NSMouseEntered:
@ -787,17 +807,6 @@ static Class eventClass;
[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 NSScrollWheel:
case NSMouseMoved:
case NSLeftMouseDragged:
case NSOtherMouseDragged:
case NSRightMouseDragged:
[aDecoder decodeValuesOfObjCTypes: "fff",
&event_data.scrollWheel.deltaX,
&event_data.scrollWheel.deltaY,
&event_data.scrollWheel.deltaZ];
break;
} }
return self; return self;
@ -826,9 +835,10 @@ static Class eventClass;
{ {
if ((event_type != NSKeyUp) && (event_type != NSKeyDown) if ((event_type != NSKeyUp) && (event_type != NSKeyDown)
&& (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;
} }
@ -860,9 +870,10 @@ static Class eventClass;
{ {
/* 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 (event_type < NSLeftMouseDown || event_type > NSRightMouseDragged)
{
[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;
} }
@ -875,9 +886,10 @@ static Class eventClass;
- (short) subtype - (short) subtype
{ {
if (event_type < NSAppKitDefined || event_type > NSPeriodic) if (event_type < NSAppKitDefined || event_type > NSPeriodic)
{
[NSException raise: NSInternalInconsistencyException [NSException raise: NSInternalInconsistencyException
format: @"subtype requested for invalid event type"]; format: @"subtype requested for invalid event type"];
}
return event_data.misc.sub_type;; return event_data.misc.sub_type;;
} }
@ -899,9 +911,10 @@ static Class eventClass;
{ {
if (event_type != NSMouseEntered && event_type != NSMouseExited if (event_type != NSMouseEntered && event_type != NSMouseExited
&& 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;
} }
@ -923,9 +936,10 @@ static Class eventClass;
{ {
if (event_type != NSMouseEntered && event_type != NSMouseExited if (event_type != NSMouseEntered && event_type != NSMouseExited
&& 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;
} }

View file

@ -546,7 +546,7 @@ static BOOL _gs_display_reading_progress = NO;
{ {
/* Make sure the new accessory view behaves - its height must be fixed /* Make sure the new accessory view behaves - its height must be fixed
* and its position relative to the bottom of the superview must not * and its position relative to the bottom of the superview must not
* change */ * change - so its position rlative to the top must be changable. */
[_accessoryView setAutoresizingMask: NSViewMaxYMargin [_accessoryView setAutoresizingMask: NSViewMaxYMargin
| ([_accessoryView autoresizingMask] | ([_accessoryView autoresizingMask]
& ~(NSViewHeightSizable | NSViewMinYMargin))]; & ~(NSViewHeightSizable | NSViewMinYMargin))];