@@ -29,39 +29,23 @@ id frontMostTextViewForSelector(SEL selector, BOOL *isNew, NSWindow* *winForText
29
29
// Find the front most OakTextView
30
30
for (NSWindow * win in [NSApp orderedWindows ])
31
31
{
32
+ NSMutableArray * views = [NSMutableArray array ];
33
+ if (id firstResponder = [win firstResponder ])
34
+ [views addObject: firstResponder];
35
+ [views addObject: [win contentView ]];
32
36
33
- // Check the firstResponder to speed up the search
34
- if ([[win firstResponder ] respondsToSelector: checkSelector]
35
- && [[win firstResponder ] respondsToSelector: selector])
36
- {
37
- if (winForTextView) *winForTextView = win;
38
- return [win firstResponder ];
39
- }
40
-
41
- // Look for it in first level subViews
42
- NSMutableArray * allViews = [[[[win contentView ] subviews ] mutableCopy ] autorelease ];
43
- for (NSView * view in allViews)
37
+ for (NSUInteger i = 0 ; i < [views count ]; ++i)
44
38
{
39
+ id view = [views objectAtIndex: i];
45
40
if ([view respondsToSelector: checkSelector] && [view respondsToSelector: selector])
46
41
{
47
42
if (winForTextView) *winForTextView = win;
48
43
return view;
49
44
}
50
- }
51
45
52
- // Look deeper for it in the second level subViews
53
- NSMutableArray * allSubViews = [NSMutableArray array ];
54
- for (NSUInteger i = 0 ; i < [allViews count ]; ++i)
55
- [allSubViews addObjectsFromArray: [(id )CFArrayGetValueAtIndex ((CFArrayRef)allViews, i) subviews ]];
56
- for (NSView * view in allSubViews)
57
- {
58
- if ([view respondsToSelector: checkSelector] && [view respondsToSelector: selector])
59
- {
60
- if (winForTextView) *winForTextView = win;
61
- return view;
62
- }
46
+ if ([view respondsToSelector: @selector (subviews )])
47
+ [views addObjectsFromArray: [view performSelector: @selector (subviews )]];
63
48
}
64
-
65
49
}
66
50
67
51
// If no textView was found create a new document
0 commit comments