OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "ui/views/cocoa/bridged_content_view.h" | 5 #import "ui/views/cocoa/bridged_content_view.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/strings/sys_string_conversions.h" | 8 #include "base/strings/sys_string_conversions.h" |
9 #include "grit/ui_strings.h" | 9 #include "grit/ui_strings.h" |
10 #include "ui/base/ime/text_input_client.h" | 10 #include "ui/base/ime/text_input_client.h" |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
164 } | 164 } |
165 | 165 |
166 - (void)moveLeft:(id)sender { | 166 - (void)moveLeft:(id)sender { |
167 [self doCommandByID:IDS_MOVE_LEFT]; | 167 [self doCommandByID:IDS_MOVE_LEFT]; |
168 } | 168 } |
169 | 169 |
170 - (void)moveRight:(id)sender { | 170 - (void)moveRight:(id)sender { |
171 [self doCommandByID:IDS_MOVE_RIGHT]; | 171 [self doCommandByID:IDS_MOVE_RIGHT]; |
172 } | 172 } |
173 | 173 |
174 - (void)insertText:(id)text { | |
175 if (textInputClient_) | |
176 textInputClient_->InsertText(base::SysNSStringToUTF16(text)); | |
177 } | |
178 | |
179 // Support for Services in context menus. | |
180 // Currently we only support reading and writing plain strings. | |
181 - (id)validRequestorForSendType:(NSString*)sendType | |
182 returnType:(NSString*)returnType { | |
183 BOOL canWrite = [sendType isEqualToString:NSStringPboardType] && | |
184 [self selectedRange].length > 0; | |
185 BOOL canRead = [returnType isEqualToString:NSStringPboardType]; | |
186 BOOL valid = textInputClient_ && ((canWrite && (canRead || !returnType)) || | |
tapted
2014/06/25 08:30:28
This condition does my head in a bit ;)
Maybe (as
Andre
2014/06/27 01:18:08
Yeah I didn't really like it either, but I'm also
tapted
2014/06/27 11:14:35
hm I realised the alternative isn't quite the same
| |
187 (canRead && (canWrite || !sendType))); | |
188 return valid ? self : [super validRequestorForSendType:sendType | |
189 returnType:returnType]; | |
190 } | |
191 | |
192 // NSServicesRequests informal protocol. | |
193 | |
194 - (BOOL)writeSelectionToPasteboard:(NSPasteboard*)pboard types:(NSArray*)types { | |
195 DCHECK([types containsObject:NSStringPboardType]); | |
196 if (!textInputClient_) | |
197 return NO; | |
198 | |
199 gfx::Range selectionRange; | |
200 if (!textInputClient_->GetSelectionRange(&selectionRange)) | |
201 return NO; | |
202 | |
203 base::string16 text; | |
204 textInputClient_->GetTextFromRange(selectionRange, &text); | |
205 return [pboard writeObjects:@[ base::SysUTF16ToNSString(text) ]]; | |
206 } | |
207 | |
208 - (BOOL)readSelectionFromPasteboard:(NSPasteboard*)pboard { | |
209 NSArray* objects = | |
210 [pboard readObjectsForClasses:@[ [NSString class] ] options:0]; | |
211 DCHECK([objects count] == 1); | |
212 [self insertText:[objects lastObject]]; | |
213 return YES; | |
214 } | |
215 | |
174 // NSTextInputClient protocol implementation. | 216 // NSTextInputClient protocol implementation. |
175 | 217 |
176 - (NSAttributedString*) | 218 - (NSAttributedString*) |
177 attributedSubstringForProposedRange:(NSRange)range | 219 attributedSubstringForProposedRange:(NSRange)range |
178 actualRange:(NSRangePointer)actualRange { | 220 actualRange:(NSRangePointer)actualRange { |
179 base::string16 substring; | 221 base::string16 substring; |
180 if (textInputClient_) { | 222 if (textInputClient_) { |
181 gfx::Range textRange; | 223 gfx::Range textRange; |
182 textInputClient_->GetTextRange(&textRange); | 224 textInputClient_->GetTextRange(&textRange); |
183 gfx::Range subrange = textRange.Intersect(gfx::Range(range)); | 225 gfx::Range subrange = textRange.Intersect(gfx::Range(range)); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
256 - (void)unmarkText { | 298 - (void)unmarkText { |
257 if (textInputClient_) | 299 if (textInputClient_) |
258 textInputClient_->ConfirmCompositionText(); | 300 textInputClient_->ConfirmCompositionText(); |
259 } | 301 } |
260 | 302 |
261 - (NSArray*)validAttributesForMarkedText { | 303 - (NSArray*)validAttributesForMarkedText { |
262 return @[]; | 304 return @[]; |
263 } | 305 } |
264 | 306 |
265 @end | 307 @end |
OLD | NEW |