diff options
| author | nyamatongwe <unknown> | 2011-07-10 11:33:56 +1000 | 
|---|---|---|
| committer | nyamatongwe <unknown> | 2011-07-10 11:33:56 +1000 | 
| commit | 9cb0008c22a0e2baf9f1cd11c6aae472b6b72cad (patch) | |
| tree | 95e4052c1c3ec211b2d013acca7d001238d38a7d | |
| parent | 683c2ca914f1987dfbeabca54db5b69ccb5c53e9 (diff) | |
| download | scintilla-mirror-9cb0008c22a0e2baf9f1cd11c6aae472b6b72cad.tar.gz | |
Encoding support for copy and text insertion.
| -rw-r--r-- | cocoa/ScintillaCocoa.mm | 30 | 
1 files changed, 23 insertions, 7 deletions
| diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm index 714fb93e2..1d6432b00 100644 --- a/cocoa/ScintillaCocoa.mm +++ b/cocoa/ScintillaCocoa.mm @@ -1066,8 +1066,11 @@ void ScintillaCocoa::SetPasteboardData(NSPasteboard* board, const SelectionText    if (selectedText.len == 0)      return; -  NSString *string; -  string = [NSString stringWithUTF8String: selectedText.s]; +  CFStringEncoding encoding = EncodingFromCharacterSet(selectedText.codePage == SC_CP_UTF8, +                                                       selectedText.characterSet); +  CFStringRef cfsVal = CFStringCreateWithBytes(kCFAllocatorDefault, +                                               reinterpret_cast<const UInt8 *>(selectedText.s),  +                                               selectedText.len-1, encoding, false);    [board declareTypes:[NSArray arrayWithObjects:                         NSStringPboardType, @@ -1077,11 +1080,12 @@ void ScintillaCocoa::SetPasteboardData(NSPasteboard* board, const SelectionText    if (selectedText.rectangular)    {      // This is specific to scintilla, allows us to drag rectangular selections around the document. -    [board setString: string forType: ScintillaRecPboardType]; +    [board setString: (NSString *)cfsVal forType: ScintillaRecPboardType];    } -  [board setString: string forType: NSStringPboardType]; -   +  [board setString: (NSString *)cfsVal forType: NSStringPboardType]; + +  CFRelease(cfsVal);  }  //-------------------------------------------------------------------------------------------------- @@ -1574,8 +1578,20 @@ bool ScintillaCocoa::KeyboardInput(NSEvent* event)   */  int ScintillaCocoa::InsertText(NSString* input)  { -  const char* utf8 = [input UTF8String]; -  AddCharUTF((char*) utf8, strlen(utf8), false); +  CFStringEncoding encoding = EncodingFromCharacterSet(IsUnicodeMode(), +                                                         vs.styles[STYLE_DEFAULT].characterSet); +  CFRange rangeAll = {0, [input length]}; +  CFIndex usedLen = 0; +  CFStringGetBytes((CFStringRef)input, rangeAll, encoding, '?', +                   false, NULL, 0, &usedLen); +     +  UInt8 *buffer = new UInt8[usedLen]; +     +  CFStringGetBytes((CFStringRef)input, rangeAll, encoding, '?', +                     false, buffer,usedLen, NULL); +     +  AddCharUTF((char*) buffer, usedLen, false); +  delete []buffer;    return true;  } | 
