mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-26 21:00:57 +00:00
Source/NSEvent.h
Headers/gnustep/gui/NSEvent.h Source/NSResponder.m Source/NSScrollView.m git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@12908 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
d08fdfa221
commit
db98f96fca
5 changed files with 203 additions and 31 deletions
19
ChangeLog
19
ChangeLog
|
@ -1,3 +1,22 @@
|
||||||
|
2002-02-28 Pierre-Yves Rivaille <pyrivail@ens-lyon.fr>
|
||||||
|
|
||||||
|
* Headers/gnustep/gui/NSEvent.h:
|
||||||
|
new element in event_data union, provides support for deltaX, deltaY
|
||||||
|
and deltaZ.
|
||||||
|
* Source/NSEvent.m
|
||||||
|
([NSEvent +mouseEventWithType:location:modifierFlags:timestamp:
|
||||||
|
windowNumber:context:deltaX:deltaY:deltaZ:]):
|
||||||
|
new method : support for creating event with deltaX, deltaY and deltaZ.
|
||||||
|
([NSEvent -delta{X, Y, Z}]): methods implemented.
|
||||||
|
([NSEvent -description]):
|
||||||
|
([NSEvent -initWithCoder:]):
|
||||||
|
([NSEvent -encodeWithCoder:]):
|
||||||
|
suppor for deltaX, deltaY and deltaZ
|
||||||
|
* Source/NSResponder.m ([NSResponder -scrollWheel:]):
|
||||||
|
implementation.
|
||||||
|
* Source/NSScrollView.m ([NSScrollView -scrollWheel:]):
|
||||||
|
implementation, does scroll the document view.
|
||||||
|
|
||||||
Thu Feb 28 16:47:58 2002 Nicola Pero <n.pero@mi.flashnet.it>
|
Thu Feb 28 16:47:58 2002 Nicola Pero <n.pero@mi.flashnet.it>
|
||||||
|
|
||||||
* Tools/make_services.m: Use 'Applications' not 'Apps'.
|
* Tools/make_services.m: Use 'Applications' not 'Apps'.
|
||||||
|
|
|
@ -113,9 +113,9 @@ enum {
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
int event_num;
|
int event_num;
|
||||||
int click;
|
int click;
|
||||||
float pressure;
|
float pressure;
|
||||||
} mouse;
|
} mouse;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
@ -130,6 +130,12 @@ 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;
|
||||||
|
@ -174,6 +180,16 @@ enum {
|
||||||
clickCount: (int)clickNum
|
clickCount: (int)clickNum
|
||||||
pressure: (float)pressureValue;
|
pressure: (float)pressureValue;
|
||||||
|
|
||||||
|
+ (NSEvent*) mouseEventWithType: (NSEventType)type
|
||||||
|
location: (NSPoint)location
|
||||||
|
modifierFlags: (unsigned int)flags
|
||||||
|
timestamp: (NSTimeInterval)time
|
||||||
|
windowNumber: (int)windowNum
|
||||||
|
context: (NSGraphicsContext*)context
|
||||||
|
deltaX: (float)deltaX
|
||||||
|
deltaY: (float)deltaY
|
||||||
|
deltaZ: (float)deltaZ;
|
||||||
|
|
||||||
+ (NSEvent*) otherEventWithType: (NSEventType)type
|
+ (NSEvent*) otherEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
|
|
140
Source/NSEvent.m
140
Source/NSEvent.m
|
@ -188,6 +188,41 @@ static Class eventClass;
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (NSEvent*) mouseEventWithType: (NSEventType)type
|
||||||
|
location: (NSPoint)location
|
||||||
|
modifierFlags: (unsigned int)flags
|
||||||
|
timestamp: (NSTimeInterval)time
|
||||||
|
windowNumber: (int)windowNum
|
||||||
|
context: (NSGraphicsContext*)context
|
||||||
|
deltaX: (float)deltaX
|
||||||
|
deltaY: (float)deltaY
|
||||||
|
deltaZ: (float)deltaZ
|
||||||
|
{
|
||||||
|
NSEvent *e;
|
||||||
|
|
||||||
|
if ((type < NSMouseMoved || type > NSRightMouseDragged)
|
||||||
|
&& (type != NSScrollWheel))
|
||||||
|
[NSException raise: NSInvalidArgumentException
|
||||||
|
format: @"mouseEvent with wrong type"];
|
||||||
|
|
||||||
|
e = (NSEvent*)NSAllocateObject(self, 0, NSDefaultMallocZone());
|
||||||
|
if (self != eventClass)
|
||||||
|
e = [e init];
|
||||||
|
AUTORELEASE(e);
|
||||||
|
|
||||||
|
e->event_type = type;
|
||||||
|
e->location_point = location;
|
||||||
|
e->modifier_flags = flags;
|
||||||
|
e->event_time = time;
|
||||||
|
e->window_num = windowNum;
|
||||||
|
e->event_context = context;
|
||||||
|
e->event_data.scrollWheel.deltaX = deltaX;
|
||||||
|
e->event_data.scrollWheel.deltaY = deltaY;
|
||||||
|
e->event_data.scrollWheel.deltaZ = deltaZ;
|
||||||
|
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
+ (NSEvent*) otherEventWithType: (NSEventType)type
|
+ (NSEvent*) otherEventWithType: (NSEventType)type
|
||||||
location: (NSPoint)location
|
location: (NSPoint)location
|
||||||
modifierFlags: (unsigned int)flags
|
modifierFlags: (unsigned int)flags
|
||||||
|
@ -506,31 +541,70 @@ static Class eventClass;
|
||||||
/*
|
/*
|
||||||
* Scroll event data
|
* Scroll event data
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
<p>
|
||||||
|
Returns the movement of the mouse on the X axis.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This method is only valid for NSMouseMoved, NS*MouseDragged and
|
||||||
|
NSScrollWheel events, otherwise it will raise an
|
||||||
|
NSInvalidArgumentException.
|
||||||
|
</p>
|
||||||
|
*/
|
||||||
- (float)deltaX
|
- (float)deltaX
|
||||||
{
|
{
|
||||||
if (event_type != NSScrollWheel)
|
if (event_type != NSScrollWheel
|
||||||
|
&& (event_type < NSMouseMoved
|
||||||
|
|| event_type > NSRightMouseDragged))
|
||||||
[NSException raise: NSInvalidArgumentException
|
[NSException raise: NSInvalidArgumentException
|
||||||
format: @"deltaX requested for invalid event type"];
|
format: @"deltaX requested for invalid event type"];
|
||||||
// FIXME
|
|
||||||
return 0.0;
|
return event_data.scrollWheel.deltaX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
<p>
|
||||||
|
Returns the movement of the mouse on the Y axis.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This method is only valid for NSMouseMoved, NS*MouseDragged and
|
||||||
|
NSScrollWheel events, otherwise it will raise an
|
||||||
|
NSInvalidArgumentException.
|
||||||
|
</p>
|
||||||
|
*/
|
||||||
- (float)deltaY
|
- (float)deltaY
|
||||||
{
|
{
|
||||||
if (event_type != NSScrollWheel)
|
if (event_type != NSScrollWheel
|
||||||
|
&& (event_type < NSMouseMoved
|
||||||
|
|| event_type > NSRightMouseDragged))
|
||||||
[NSException raise: NSInvalidArgumentException
|
[NSException raise: NSInvalidArgumentException
|
||||||
format: @"deltaY requested for invalid event type"];
|
format: @"deltaY requested for invalid event type"];
|
||||||
// FIXME
|
|
||||||
return 0.0;
|
return event_data.scrollWheel.deltaY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
<p>
|
||||||
|
Returns the movement of the mouse on the Z axis.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This method is only valid for NSMouseMoved, NS*MouseDragged and
|
||||||
|
NSScrollWheel events, otherwise it will raise an
|
||||||
|
NSInvalidArgumentException.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The value returned is 0.0 in most cases.
|
||||||
|
</p>
|
||||||
|
*/
|
||||||
- (float)deltaZ
|
- (float)deltaZ
|
||||||
{
|
{
|
||||||
if (event_type != NSScrollWheel)
|
if (event_type != NSScrollWheel
|
||||||
|
&& (event_type < NSMouseMoved
|
||||||
|
|| event_type > NSRightMouseDragged))
|
||||||
[NSException raise: NSInvalidArgumentException
|
[NSException raise: NSInvalidArgumentException
|
||||||
format: @"deltaZ requested for invalid event type"];
|
format: @"deltaZ requested for invalid event type"];
|
||||||
// FIXME
|
|
||||||
return 0.0;
|
return event_data.scrollWheel.deltaZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -552,10 +626,6 @@ static Class eventClass;
|
||||||
case NSMiddleMouseUp:
|
case NSMiddleMouseUp:
|
||||||
case NSRightMouseDown:
|
case NSRightMouseDown:
|
||||||
case NSRightMouseUp:
|
case NSRightMouseUp:
|
||||||
case NSMouseMoved:
|
|
||||||
case NSLeftMouseDragged:
|
|
||||||
case NSMiddleMouseDragged:
|
|
||||||
case NSRightMouseDragged:
|
|
||||||
[aCoder encodeValuesOfObjCTypes: "iif", &event_data.mouse.event_num,
|
[aCoder encodeValuesOfObjCTypes: "iif", &event_data.mouse.event_num,
|
||||||
&event_data.mouse.click, &event_data.mouse.pressure];
|
&event_data.mouse.click, &event_data.mouse.pressure];
|
||||||
break;
|
break;
|
||||||
|
@ -586,7 +656,14 @@ static Class eventClass;
|
||||||
&event_data.misc.data1, &event_data.misc.data2];
|
&event_data.misc.data1, &event_data.misc.data2];
|
||||||
break;
|
break;
|
||||||
case NSScrollWheel:
|
case NSScrollWheel:
|
||||||
// FIXME
|
case NSMouseMoved:
|
||||||
|
case NSLeftMouseDragged:
|
||||||
|
case NSMiddleMouseDragged:
|
||||||
|
case NSRightMouseDragged:
|
||||||
|
[aCoder encodeValuesOfObjCTypes: "fff",
|
||||||
|
&event_data.scrollWheel.deltaX,
|
||||||
|
&event_data.scrollWheel.deltaY,
|
||||||
|
&event_data.scrollWheel.deltaZ];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -608,10 +685,6 @@ static Class eventClass;
|
||||||
case NSMiddleMouseUp:
|
case NSMiddleMouseUp:
|
||||||
case NSRightMouseDown:
|
case NSRightMouseDown:
|
||||||
case NSRightMouseUp:
|
case NSRightMouseUp:
|
||||||
case NSMouseMoved:
|
|
||||||
case NSLeftMouseDragged:
|
|
||||||
case NSMiddleMouseDragged:
|
|
||||||
case NSRightMouseDragged:
|
|
||||||
[aDecoder decodeValuesOfObjCTypes: "iif", &event_data.mouse.event_num,
|
[aDecoder decodeValuesOfObjCTypes: "iif", &event_data.mouse.event_num,
|
||||||
&event_data.mouse.click, &event_data.mouse.pressure];
|
&event_data.mouse.click, &event_data.mouse.pressure];
|
||||||
break;
|
break;
|
||||||
|
@ -643,7 +716,14 @@ static Class eventClass;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NSScrollWheel:
|
case NSScrollWheel:
|
||||||
// FIXME
|
case NSMouseMoved:
|
||||||
|
case NSLeftMouseDragged:
|
||||||
|
case NSMiddleMouseDragged:
|
||||||
|
case NSRightMouseDragged:
|
||||||
|
[aDecoder decodeValuesOfObjCTypes: "fff",
|
||||||
|
&event_data.scrollWheel.deltaX,
|
||||||
|
&event_data.scrollWheel.deltaY,
|
||||||
|
&event_data.scrollWheel.deltaZ];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -691,7 +771,8 @@ static Class eventClass;
|
||||||
"systemDefined",
|
"systemDefined",
|
||||||
"applicationDefined",
|
"applicationDefined",
|
||||||
"periodic",
|
"periodic",
|
||||||
"cursorUpdate"
|
"cursorUpdate",
|
||||||
|
"scrollWheel"
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (event_type)
|
switch (event_type)
|
||||||
|
@ -702,10 +783,6 @@ static Class eventClass;
|
||||||
case NSMiddleMouseUp:
|
case NSMiddleMouseUp:
|
||||||
case NSRightMouseDown:
|
case NSRightMouseDown:
|
||||||
case NSRightMouseUp:
|
case NSRightMouseUp:
|
||||||
case NSMouseMoved:
|
|
||||||
case NSLeftMouseDragged:
|
|
||||||
case NSMiddleMouseDragged:
|
|
||||||
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,"
|
||||||
|
@ -757,8 +834,21 @@ static Class eventClass;
|
||||||
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:
|
||||||
// FIXME
|
case NSMouseMoved:
|
||||||
|
case NSLeftMouseDragged:
|
||||||
|
case NSMiddleMouseDragged:
|
||||||
|
case NSRightMouseDragged:
|
||||||
|
return [NSString stringWithFormat:
|
||||||
|
@"NSEvent: eventType = %s, point = { %f, %f }, modifiers = %u,"
|
||||||
|
@" time = %f, window = %d, dpsContext = %p,"
|
||||||
|
@" deltaX = %f, deltaY = %f, deltaZ = %f",
|
||||||
|
eventTypes[event_type], location_point.x, location_point.y,
|
||||||
|
modifier_flags, event_time, window_num, event_context,
|
||||||
|
event_data.scrollWheel.deltaX,
|
||||||
|
event_data.scrollWheel.deltaY,
|
||||||
|
event_data.scrollWheel.deltaZ];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -289,8 +289,10 @@
|
||||||
|
|
||||||
- (void) scrollWheel: (NSEvent *)theEvent
|
- (void) scrollWheel: (NSEvent *)theEvent
|
||||||
{
|
{
|
||||||
// FIXME
|
if (_next_responder)
|
||||||
NSLog(@"Sorry, currently no support for scroll wheel.");
|
return [_next_responder scrollWheel: theEvent];
|
||||||
|
else
|
||||||
|
return [self noResponderFor: @selector(scrollWheel:)];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -292,7 +292,52 @@ static float scrollerWidth;
|
||||||
|
|
||||||
- (void) scrollWheel: (NSEvent *)theEvent
|
- (void) scrollWheel: (NSEvent *)theEvent
|
||||||
{
|
{
|
||||||
// FIXME
|
NSRect clipViewBounds = [_contentView bounds];
|
||||||
|
float deltaY = [theEvent deltaY];
|
||||||
|
float amount;
|
||||||
|
NSPoint point = clipViewBounds.origin;
|
||||||
|
|
||||||
|
|
||||||
|
if (([theEvent modifierFlags] & NSAlternateKeyMask) == NSAlternateKeyMask)
|
||||||
|
{
|
||||||
|
amount = - (clipViewBounds.size.height - _vPageScroll) * deltaY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
amount = - _vLineScroll * deltaY;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!_contentView->_rFlags.flipped_view)
|
||||||
|
{
|
||||||
|
/* If view is flipped reverse the scroll direction */
|
||||||
|
amount = -amount;
|
||||||
|
}
|
||||||
|
NSDebugLog (@"increment/decrement: amount = %f, flipped = %d",
|
||||||
|
amount, _contentView->_rFlags.flipped_view);
|
||||||
|
point.y = clipViewBounds.origin.y + amount;
|
||||||
|
|
||||||
|
if (_hasHeaderView)
|
||||||
|
{
|
||||||
|
NSPoint scrollTo;
|
||||||
|
|
||||||
|
scrollTo = [_headerClipView bounds].origin;
|
||||||
|
scrollTo.x += point.x - clipViewBounds.origin.x;
|
||||||
|
[_headerClipView scrollToPoint: scrollTo];
|
||||||
|
}
|
||||||
|
[_contentView scrollToPoint: point];
|
||||||
|
|
||||||
|
if (_rulersVisible == YES)
|
||||||
|
{
|
||||||
|
if (_hasHorizRuler)
|
||||||
|
{
|
||||||
|
[_horizRuler setNeedsDisplay: YES];
|
||||||
|
}
|
||||||
|
if (_hasVertRuler)
|
||||||
|
{
|
||||||
|
[_vertRuler setNeedsDisplay: YES];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) _doScroll: (NSScroller*)scroller
|
- (void) _doScroll: (NSScroller*)scroller
|
||||||
|
|
Loading…
Reference in a new issue