<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -195,7 +195,7 @@ Cocoa_PumpEvents(_THIS)
             /* FIXME: Find a way to stop the beeping, using delegate */
 
             /* Add to support system-wide keyboard shortcuts like CMD+Space */
-            if ([event modifierFlags] &amp; NSCommandKeyMask)
+            if (([event modifierFlags] &amp; NSCommandKeyMask) || [event type] == NSFlagsChanged)
                [NSApp sendEvent: event];
             break;
         default:</diff>
      <filename>SDL/src/video/cocoa/SDL_cocoaevents.m</filename>
    </modified>
    <modified>
      <diff>@@ -56,6 +56,9 @@
 
 @interface SDLTranslatorResponder : NSTextView
 {
+    NSString *_markedText;
+    NSRange   _markedRange;
+    NSRange   _selectedRange;
 }
 - (void) doCommandBySelector:(SEL)myselector;
 @end
@@ -68,6 +71,8 @@
 
     NSLog(@&quot;insertText: %@&quot;, aString);
 
+    /* Could be NSString or NSAttributedString, so we have
+     * to test and convert it before return as SDL event */
     if ([aString isKindOfClass: [NSAttributedString class]])
         str = [[aString string] UTF8String];
     else
@@ -81,6 +86,84 @@
     NSLog(@&quot;doCommandBySelector, passed down&quot;);
     [super doCommandBySelector: myselector];
 }
+
+- (BOOL) hasMarkedText
+{
+    return _markedText != nil;
+}
+
+- (NSRange) markedRange
+{
+    return _markedRange;
+}
+
+- (NSRange) selectedRange
+{
+    return _selectedRange;
+}
+
+- (void) setMarkedText:(id) aString
+         selectedRange:(NSRange) selRange
+{
+    if ([aString isKindOfClass: [NSAttributedString class]])
+        aString = [aString string];
+
+    if ([aString length] == 0)
+    {
+        [self unmarkText];
+        return;
+    }
+
+    if (_markedText != aString)
+    {
+        [_markedText release];
+        _markedText = [aString retain];
+    }
+
+    _selectedRange = selRange;
+    _markedRange = NSMakeRange(0, [aString length]);
+
+    NSLog(@&quot;setMarkedText: %@, (%d, %d)&quot;, _markedText,
+          selRange.location, selRange.length);
+}
+
+- (void) unmarkText
+{
+    [_markedText release];
+    _markedText = nil;
+}
+
+- (NSRect) firstRectForCharacterRange: (NSRange) theRange
+{
+    return NSMakeRect(0, 0, 0, 0);
+}
+
+- (NSAttributedString *) attributedSubstringFromRange: (NSRange) theRange
+{
+    return nil;
+}
+
+- (NSInteger) conversationIdentifier
+{
+    return (NSInteger) self;
+}
+
+// This method returns the index for character that is 
+// nearest to thePoint.  thPoint is in screen coordinate system.
+- (NSUInteger) characterIndexForPoint:(NSPoint) thePoint
+{
+    return 0;
+}
+
+// This method is the key to attribute extension. 
+// We could add new attributes through this method.
+// NSInputServer examines the return value of this
+// method &amp; constructs appropriate attributed string.
+- (NSArray *) validAttributesForMarkedText
+{
+    return [NSArray array];
+}
+
 @end
 
 /* This is the original behavior, before support was added for </diff>
      <filename>SDL/src/video/cocoa/SDL_cocoakeyboard.m</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>902886df5c447a81c9c12b6a98b227d048a02b1a</id>
    </parent>
  </parents>
  <author>
    <name>jjgod</name>
    <email>jjgod@c70aab31-4412-0410-b14c-859654838e24</email>
  </author>
  <url>http://github.com/jjgod/SDL/commit/fa383b0315ac10a992770efc6a731611b9bda23a</url>
  <id>fa383b0315ac10a992770efc6a731611b9bda23a</id>
  <committed-date>2009-05-31T09:57:29-07:00</committed-date>
  <authored-date>2009-05-31T09:57:29-07:00</authored-date>
  <message>Basic marked text handling

git-svn-id: http://svn.libsdl.org/branches/gsoc2009_IME@4524 c70aab31-4412-0410-b14c-859654838e24</message>
  <tree>1a44c5329b449baac8326b768a0a24f402dc028f</tree>
  <committer>
    <name>jjgod</name>
    <email>jjgod@c70aab31-4412-0410-b14c-859654838e24</email>
  </committer>
</commit>
