Merged in cinderblocks/storm-2127
commit
56f736b654
|
|
@ -331,6 +331,7 @@ Cinder Roxley
|
|||
STORM-2037
|
||||
STORM-2053
|
||||
STORM-2113
|
||||
STORM-2127
|
||||
Clara Young
|
||||
Coaldust Numbers
|
||||
VWR-1095
|
||||
|
|
|
|||
|
|
@ -25,13 +25,69 @@
|
|||
*/
|
||||
|
||||
#import "llopenglview-objc.h"
|
||||
#include "llwindowmacosx-objc.h"
|
||||
#import "llwindowmacosx-objc.h"
|
||||
#import "llappdelegate-objc.h"
|
||||
|
||||
#pragma mark local functions
|
||||
|
||||
NativeKeyEventData extractKeyDataFromKeyEvent(NSEvent* theEvent)
|
||||
{
|
||||
NativeKeyEventData eventData;
|
||||
eventData.mKeyEvent = NativeKeyEventData::KEYUNKNOWN;
|
||||
eventData.mEventType = [theEvent type];
|
||||
eventData.mEventModifiers = [theEvent modifierFlags];
|
||||
eventData.mEventKeyCode = [theEvent keyCode];
|
||||
NSString *strEventChars = [theEvent characters];
|
||||
eventData.mEventChars = (strEventChars.length) ? [strEventChars characterAtIndex:0] : 0;
|
||||
NSString *strEventUChars = [theEvent charactersIgnoringModifiers];
|
||||
eventData.mEventUnmodChars = (strEventUChars.length) ? [strEventUChars characterAtIndex:0] : 0;
|
||||
eventData.mEventRepeat = [theEvent isARepeat];
|
||||
return eventData;
|
||||
}
|
||||
|
||||
NativeKeyEventData extractKeyDataFromModifierEvent(NSEvent* theEvent)
|
||||
{
|
||||
NativeKeyEventData eventData;
|
||||
eventData.mKeyEvent = NativeKeyEventData::KEYUNKNOWN;
|
||||
eventData.mEventType = [theEvent type];
|
||||
eventData.mEventModifiers = [theEvent modifierFlags];
|
||||
eventData.mEventKeyCode = [theEvent keyCode];
|
||||
return eventData;
|
||||
}
|
||||
|
||||
//---------------------------
|
||||
attributedStringInfo getSegments(NSAttributedString *str)
|
||||
{
|
||||
attributedStringInfo segments;
|
||||
segment_lengths seg_lengths;
|
||||
segment_standouts seg_standouts;
|
||||
NSRange effectiveRange;
|
||||
NSRange limitRange = NSMakeRange(0, [str length]);
|
||||
|
||||
while (limitRange.length > 0) {
|
||||
NSNumber *attr = [str attribute:NSUnderlineStyleAttributeName atIndex:limitRange.location longestEffectiveRange:&effectiveRange inRange:limitRange];
|
||||
limitRange = NSMakeRange(NSMaxRange(effectiveRange), NSMaxRange(limitRange) - NSMaxRange(effectiveRange));
|
||||
|
||||
if (effectiveRange.length <= 0)
|
||||
{
|
||||
effectiveRange.length = 1;
|
||||
}
|
||||
|
||||
if ([attr integerValue] == 2)
|
||||
{
|
||||
seg_lengths.push_back(effectiveRange.length);
|
||||
seg_standouts.push_back(true);
|
||||
} else
|
||||
{
|
||||
seg_lengths.push_back(effectiveRange.length);
|
||||
seg_standouts.push_back(false);
|
||||
}
|
||||
}
|
||||
segments.seg_lengths = seg_lengths;
|
||||
segments.seg_standouts = seg_standouts;
|
||||
return segments;
|
||||
}
|
||||
|
||||
#pragma mark class implementations
|
||||
|
||||
@implementation NSScreen (PointConversion)
|
||||
|
||||
|
|
@ -63,53 +119,6 @@
|
|||
|
||||
@end
|
||||
|
||||
void extractKeyDataFromEvent (NSEvent *theEvent, NativeKeyEventData * eventData)
|
||||
{
|
||||
eventData->mKeyEvent = NativeKeyEventData::KEYUNKNOWN;
|
||||
eventData->mEventType = [theEvent type];
|
||||
eventData->mEventModifiers = [theEvent modifierFlags];
|
||||
eventData->mEventKeyCode = [theEvent keyCode];
|
||||
NSString *strEventChars = [theEvent characters];
|
||||
eventData->mEventChars = (strEventChars.length) ? [strEventChars characterAtIndex:0] : 0;
|
||||
NSString *strEventUChars = [theEvent charactersIgnoringModifiers];
|
||||
eventData->mEventUnmodChars = (strEventUChars.length) ? [strEventUChars characterAtIndex:0] : 0;
|
||||
eventData->mEventRepeat = [theEvent isARepeat];
|
||||
|
||||
}
|
||||
|
||||
|
||||
attributedStringInfo getSegments(NSAttributedString *str)
|
||||
{
|
||||
attributedStringInfo segments;
|
||||
segment_lengths seg_lengths;
|
||||
segment_standouts seg_standouts;
|
||||
NSRange effectiveRange;
|
||||
NSRange limitRange = NSMakeRange(0, [str length]);
|
||||
|
||||
while (limitRange.length > 0) {
|
||||
NSNumber *attr = [str attribute:NSUnderlineStyleAttributeName atIndex:limitRange.location longestEffectiveRange:&effectiveRange inRange:limitRange];
|
||||
limitRange = NSMakeRange(NSMaxRange(effectiveRange), NSMaxRange(limitRange) - NSMaxRange(effectiveRange));
|
||||
|
||||
if (effectiveRange.length <= 0)
|
||||
{
|
||||
effectiveRange.length = 1;
|
||||
}
|
||||
|
||||
if ([attr integerValue] == 2)
|
||||
{
|
||||
seg_lengths.push_back(effectiveRange.length);
|
||||
seg_standouts.push_back(true);
|
||||
} else
|
||||
{
|
||||
seg_lengths.push_back(effectiveRange.length);
|
||||
seg_standouts.push_back(false);
|
||||
}
|
||||
}
|
||||
segments.seg_lengths = seg_lengths;
|
||||
segments.seg_standouts = seg_standouts;
|
||||
return segments;
|
||||
}
|
||||
|
||||
@implementation LLOpenGLView
|
||||
|
||||
// Force a high quality update after live resizing
|
||||
|
|
@ -426,18 +435,14 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (void) keyUp:(NSEvent *)theEvent
|
||||
{
|
||||
NativeKeyEventData eventData;
|
||||
|
||||
extractKeyDataFromEvent( theEvent, &eventData );
|
||||
NativeKeyEventData eventData = extractKeyDataFromKeyEvent(theEvent);
|
||||
eventData.mKeyEvent = NativeKeyEventData::KEYUP;
|
||||
callKeyUp(&eventData, [theEvent keyCode], [theEvent modifierFlags]);
|
||||
}
|
||||
|
||||
- (void) keyDown:(NSEvent *)theEvent
|
||||
{
|
||||
NativeKeyEventData eventData;
|
||||
|
||||
extractKeyDataFromEvent( theEvent, &eventData );
|
||||
NativeKeyEventData eventData = extractKeyDataFromKeyEvent(theEvent);
|
||||
eventData.mKeyEvent = NativeKeyEventData::KEYDOWN;
|
||||
|
||||
uint keycode = [theEvent keyCode];
|
||||
|
|
@ -475,9 +480,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
|
|||
|
||||
- (void)flagsChanged:(NSEvent *)theEvent
|
||||
{
|
||||
NativeKeyEventData eventData;
|
||||
|
||||
extractKeyDataFromEvent( theEvent, &eventData );
|
||||
NativeKeyEventData eventData = extractKeyDataFromModifierEvent(theEvent);
|
||||
|
||||
mModifiers = [theEvent modifierFlags];
|
||||
callModifier([theEvent modifierFlags]);
|
||||
|
|
|
|||
|
|
@ -55,13 +55,13 @@ struct NativeKeyEventData {
|
|||
KEYCHAR
|
||||
};
|
||||
|
||||
EventType mKeyEvent;
|
||||
uint32_t mEventType;
|
||||
uint32_t mEventModifiers;
|
||||
uint32_t mEventKeyCode;
|
||||
uint32_t mEventChars;
|
||||
uint32_t mEventUnmodChars;
|
||||
bool mEventRepeat;
|
||||
EventType mKeyEvent = KEYUNKNOWN;
|
||||
uint32_t mEventType = 0;
|
||||
uint32_t mEventModifiers = 0;
|
||||
uint32_t mEventKeyCode = 0;
|
||||
uint32_t mEventChars = 0;
|
||||
uint32_t mEventUnmodChars = 0;
|
||||
bool mEventRepeat = false;
|
||||
};
|
||||
|
||||
typedef const NativeKeyEventData * NSKeyEventRef;
|
||||
|
|
|
|||
Loading…
Reference in New Issue