Hi everyone, I have an outline view where I want to set things up so that when 
the user starts typing, it both starts editing and replaces the contents of the 
selected row with the typed character. Here is what I have been using:

- (void)insertText:(id)aString {
        if ([self selectedRow] == -1) {
                return;
        }
        NSInteger textColumnNumber = [[self tableColumns] indexOfObject:[self 
tableColumnWithIdentifier:@"Outline"]];

        [self editColumn:textColumnNumber row:[self selectedRow] withEvent:nil 
select:YES];
        [[self currentEditor] insertText:aString];
}

This works fine for ASCII text, when my customers switch to Pinyin or other 
multi-byte languages, it doesn't pick up the first character as marked text, 
and as I continue typing, the character completions only show up on the second 
character on.

Also, it doesn't accept diacriticals to start the editing.

So I thought that I would try implementing the NSTextInputClient protocol in my 
NSOutlineView subclass and see if I could get it working that way. I tried all 
sorts of things for handling the marked text. The following is my current 
attempt:

- (void)setMarkedText:(id)aString selectedRange:(NSRange)newSelection 
replacementRange:(NSRange)replacementRange {
        if ([self selectedRow] == -1) {
                return;
        }
        NSInteger textColumnNumber = [[self tableColumns] indexOfObject:[self 
tableColumnWithIdentifier:@"Outline"]];
        [self editColumn:textColumnNumber row:[self selectedRow] withEvent:nil 
select:YES];

        NSTextView *currentEditor = (NSTextView *)[self currentEditor];
        [currentEditor setMarkedText:aString selectedRange:newSelection];
}

This starts the editing, and displays the character that was typed, with the 
underline indicating that it is being composed, but it doesn't show the 
completions panel.

Also I still haven't worked out how to get it to start editing on entry of a 
diacritical. I suspect it may have something to do with 
validAttributesForMarkedText, but am not sure...

So, two questions:

1. How can I get the editing started *and* show the completions panel for 
multi-byte languages (I am currently testing using Pinyin simplified, which 
shows the problem all the time)?

2. How can I start editing when someone presses a key for a diacritical (e.g. 
Option+e)?

Thanks

Gideon_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to