Changeset 456 for trunk/ICeCoffEE/ICeCoffEE/ICeCoffEEWebKit.m
- Timestamp:
- 03/27/08 22:13:15 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ICeCoffEE/ICeCoffEE/ICeCoffEEWebKit.m
r455 r456 21 21 @end 22 22 23 // r31014 and later; likely to move again 24 @interface WebFrame (WebFrameInternal) 25 - (DOMRange *)_convertNSRangeToDOMRange:(NSRange)range; 26 - (NSString *)_stringForRange:(DOMRange *)range; 27 @end 28 23 29 // XXX WebHTMLView is going away 24 30 @interface WebHTMLView : NSObject … … 28 34 29 35 - (WebView *)_webView; 30 - (WebCoreFrameBridge *)_bridge; 36 - (WebCoreFrameBridge *)_bridge; // moved from WebNSViewExtras in r14032; removed in r31014 37 - (WebFrame *)_frame; // moved from WebNSViewExtras in r14032 31 38 32 39 @end … … 142 149 ICLog(@"got a link"); 143 150 if (!elementIsEditable) { 144 ICCF_StopIC();145 151 return; 146 152 } … … 156 162 NSAssert(range.location != NSNotFound, ICCF_LocalizedString(@"Sorry, ICeCoffEE was unable to find anything to select")); 157 163 158 WebCoreFrameBridge *bridge = [(WebHTMLView *)self _bridge]; 164 WebFrame *frame = [(WebHTMLView *)self _frame]; 165 WebCoreFrameBridge *bridge = nil; 166 if ([self respondsToSelector: @selector(_bridge)]) 167 bridge = [(WebHTMLView *)self _bridge]; 159 168 160 169 // XXX limit to a reasonable size … … 162 171 if (elementIsEditable) // for form fields, range will be field-relative rather than document-relative 163 172 s = [[(NSView<NSTextInput> *)self attributedSubstringFromRange: NSMakeRange(0, UINT_MAX)] string]; 164 else // sometimes attributedSubstringFromRange: returns nil 165 s = [bridge stringForRange: [(WebHTMLView *)self _documentRange]]; 166 173 else { // sometimes attributedSubstringFromRange: returns nil 174 domRange = [(WebHTMLView *)self _documentRange]; 175 if (bridge != nil) 176 s = [bridge stringForRange: domRange]; 177 else if (![frame respondsToSelector: @selector(_stringForRange:)]) 178 return; // WebKit too new? 179 else 180 s = [frame _stringForRange: domRange]; 181 } 182 183 if (bridge == nil && ![frame respondsToSelector: @selector(_convertNSRangeToDOMRange:)]) { 184 return; // WebKit too new? 185 } 186 167 187 if (range.length == 0) { 168 188 range.length = 1; 169 189 range = ICCF_URLEnclosingRange(s, range); 170 domRange = [bridge convertNSRangeToDOMRange: range]; 190 domRange = bridge ? [bridge convertNSRangeToDOMRange: range] : 191 [frame _convertNSRangeToDOMRange: range]; 171 192 [webView setSelectedDOMRange: domRange affinity: NSSelectionAffinityDownstream]; 172 193 } else { 173 domRange = [bridge convertNSRangeToDOMRange: range]; 194 domRange = bridge ? [bridge convertNSRangeToDOMRange: range] : 195 [frame _convertNSRangeToDOMRange: range]; 174 196 } 175 197 … … 202 224 [webView setGrammarCheckingEnabled: YES]; 203 225 } 226 ICCF_StopIC(); 204 227 } 205 206 ICCF_StopIC();207 228 } 208 229
Note:
See TracChangeset
for help on using the changeset viewer.