Skip to content

Commit ffbf7a4

Browse files
committed
Fix bundle commands no longer working in popup field editor (and possibly other cases) (#2299)
Replacing some [NSApp mainWindow] with their actually intended calls [NSApp keyWindow] and [view window]
1 parent 5357fd1 commit ffbf7a4

11 files changed

+35
-31
lines changed

Source/SPAppController.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2024,7 +2024,7 @@ - (IBAction)bundleCommandDispatcher:(id)sender
20242024
NSEvent *event = [NSApp currentEvent];
20252025
BOOL checkForKeyEquivalents = ([event type] == NSKeyDown) ? YES : NO;
20262026

2027-
id firstResponder = [[NSApp mainWindow] firstResponder];
2027+
id firstResponder = [[NSApp keyWindow] firstResponder];
20282028

20292029
NSString *scope = [[sender representedObject] objectForKey:@"scope"];
20302030
NSString *keyEqKey = nil;
@@ -2076,7 +2076,7 @@ - (IBAction)bundleCommandDispatcher:(id)sender
20762076
NSMenuItem *aMenuItem = [[[NSMenuItem alloc] init] autorelease];
20772077
[aMenuItem setTag:0];
20782078
[aMenuItem setToolTip:[eq objectForKey:@"path"]];
2079-
[(SPTextView *)[[NSApp mainWindow] firstResponder] executeBundleItemForInputField:aMenuItem];
2079+
[(SPTextView *)firstResponder executeBundleItemForInputField:aMenuItem];
20802080
}
20812081
}
20822082
} else {
@@ -2095,7 +2095,7 @@ - (IBAction)bundleCommandDispatcher:(id)sender
20952095
NSMenuItem *aMenuItem = [[[NSMenuItem alloc] init] autorelease];
20962096
[aMenuItem setTag:0];
20972097
[aMenuItem setToolTip:[eq objectForKey:@"path"]];
2098-
[(SPCopyTable *)[[NSApp mainWindow] firstResponder] executeBundleItemForDataTable:aMenuItem];
2098+
[(SPCopyTable *)firstResponder executeBundleItemForDataTable:aMenuItem];
20992099
}
21002100
}
21012101
} else {

Source/SPBundleEditorController.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,7 +1334,7 @@ - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBy
13341334

13351335
//abort editing
13361336
[control abortEditing];
1337-
[[NSApp mainWindow] makeFirstResponder:commandsOutlineView];
1337+
[[commandsOutlineView window] makeFirstResponder:commandsOutlineView];
13381338
return YES;
13391339
} else{
13401340
return NO;
@@ -1452,7 +1452,7 @@ - (BOOL)validateMenuItem:(NSMenuItem *)menuItem
14521452
(action == @selector(displayBundleMetaInfo:)))
14531453
{
14541454
// Allow to record short-cuts used by the Bundle Editor
1455-
if([[NSApp mainWindow] firstResponder] == keyEquivalentField) return NO;
1455+
if([[NSApp keyWindow] firstResponder] == keyEquivalentField) return NO;
14561456

14571457
return ([[commandBundleTreeController selectedObjects] count] == 1 && ![[[commandBundleTreeController selectedObjects] objectAtIndex:0] objectForKey:kChildrenKey]);
14581458
}

Source/SPCustomQuery.m

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2583,16 +2583,17 @@ - (void)tableViewSelectionDidChange:(NSNotification *)aNotification
25832583
if(!correspondingWindowFound) stopTrigger = YES;
25842584
}
25852585
if(!stopTrigger) {
2586+
id firstResponder = [[NSApp keyWindow] firstResponder];
25862587
if([[data objectAtIndex:1] isEqualToString:SPBundleScopeGeneral]) {
25872588
[[SPAppDelegate onMainThread] executeBundleItemForApp:aMenuItem];
25882589
}
25892590
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeDataTable]) {
2590-
if([[[[[NSApp mainWindow] firstResponder] class] description] isEqualToString:@"SPCopyTable"])
2591-
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForDataTable:aMenuItem];
2591+
if([[[firstResponder class] description] isEqualToString:@"SPCopyTable"])
2592+
[[firstResponder onMainThread] executeBundleItemForDataTable:aMenuItem];
25922593
}
25932594
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeInputField]) {
2594-
if([[[NSApp mainWindow] firstResponder] isKindOfClass:[NSTextView class]])
2595-
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForInputField:aMenuItem];
2595+
if([firstResponder isKindOfClass:[NSTextView class]])
2596+
[[firstResponder onMainThread] executeBundleItemForInputField:aMenuItem];
25962597
}
25972598
}
25982599
}

Source/SPDatabaseDocument.m

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5291,8 +5291,9 @@ - (void)handleSchemeCommand:(NSDictionary*)commandDict
52915291
}
52925292

52935293
if([command isEqualToString:@"SelectTableRows"]) {
5294-
if([params count] > 1 && [[[NSApp mainWindow] firstResponder] respondsToSelector:@selector(selectTableRows:)]) {
5295-
[(SPCopyTable *)[[NSApp mainWindow] firstResponder] selectTableRows:[params subarrayWithRange:NSMakeRange(1, [params count]-1)]];
5294+
id firstResponder = [[NSApp keyWindow] firstResponder];
5295+
if([params count] > 1 && [firstResponder respondsToSelector:@selector(selectTableRows:)]) {
5296+
[(SPCopyTable *)firstResponder selectTableRows:[params subarrayWithRange:NSMakeRange(1, [params count]-1)]];
52965297
}
52975298
return;
52985299
}
@@ -6307,17 +6308,18 @@ - (void)_processDatabaseChangedBundleTriggerActions
63076308
if(!correspondingWindowFound) stopTrigger = YES;
63086309
}
63096310
if(!stopTrigger) {
6311+
id firstResponder = [[NSApp keyWindow] firstResponder];
63106312
if([[data objectAtIndex:1] isEqualToString:SPBundleScopeGeneral]) {
63116313
[[SPAppDelegate onMainThread] executeBundleItemForApp:aMenuItem];
63126314
}
63136315
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeDataTable]) {
6314-
if ([[[[[NSApp mainWindow] firstResponder] class] description] isEqualToString:@"SPCopyTable"]) {
6315-
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForDataTable:aMenuItem];
6316+
if ([[[firstResponder class] description] isEqualToString:@"SPCopyTable"]) {
6317+
[[firstResponder onMainThread] executeBundleItemForDataTable:aMenuItem];
63166318
}
63176319
}
63186320
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeInputField]) {
6319-
if ([[[NSApp mainWindow] firstResponder] isKindOfClass:[NSTextView class]]) {
6320-
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForInputField:aMenuItem];
6321+
if ([firstResponder isKindOfClass:[NSTextView class]]) {
6322+
[[firstResponder onMainThread] executeBundleItemForInputField:aMenuItem];
63216323
}
63226324
}
63236325
}

Source/SPDatabaseViewController.m

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -615,16 +615,17 @@ - (void)_loadTableTask
615615
if(!correspondingWindowFound) stopTrigger = YES;
616616
}
617617
if(!stopTrigger) {
618+
id firstResponder = [[NSApp keyWindow] firstResponder];
618619
if([[data objectAtIndex:1] isEqualToString:SPBundleScopeGeneral]) {
619620
[[SPAppDelegate onMainThread] executeBundleItemForApp:aMenuItem];
620621
}
621622
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeDataTable]) {
622-
if([[[[[NSApp mainWindow] firstResponder] class] description] isEqualToString:@"SPCopyTable"])
623-
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForDataTable:aMenuItem];
623+
if([[[firstResponder class] description] isEqualToString:@"SPCopyTable"])
624+
[[firstResponder onMainThread] executeBundleItemForDataTable:aMenuItem];
624625
}
625626
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeInputField]) {
626-
if([[[NSApp mainWindow] firstResponder] isKindOfClass:[NSTextView class]])
627-
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForInputField:aMenuItem];
627+
if([firstResponder isKindOfClass:[NSTextView class]])
628+
[[firstResponder onMainThread] executeBundleItemForInputField:aMenuItem];
628629
}
629630
}
630631
}

Source/SPTableContentDelegate.m

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -148,18 +148,18 @@ - (void)tableViewSelectionDidChange:(NSNotification *)aNotification
148148
if (!correspondingWindowFound) stopTrigger = YES;
149149
}
150150
if (!stopTrigger) {
151-
151+
id firstResponder = [[NSApp keyWindow] firstResponder];
152152
if ([[data objectAtIndex:1] isEqualToString:SPBundleScopeGeneral]) {
153153
[[SPAppDelegate onMainThread] executeBundleItemForApp:aMenuItem];
154154
}
155155
else if ([[data objectAtIndex:1] isEqualToString:SPBundleScopeDataTable]) {
156-
if ([[[[[NSApp mainWindow] firstResponder] class] description] isEqualToString:@"SPCopyTable"]) {
157-
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForDataTable:aMenuItem];
156+
if ([[[firstResponder class] description] isEqualToString:@"SPCopyTable"]) {
157+
[[firstResponder onMainThread] executeBundleItemForDataTable:aMenuItem];
158158
}
159159
}
160160
else if ([[data objectAtIndex:1] isEqualToString:SPBundleScopeInputField]) {
161-
if ([[[NSApp mainWindow] firstResponder] isKindOfClass:[NSTextView class]]) {
162-
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForInputField:aMenuItem];
161+
if ([firstResponder isKindOfClass:[NSTextView class]]) {
162+
[[firstResponder onMainThread] executeBundleItemForInputField:aMenuItem];
163163
}
164164
}
165165
}

Source/SPTableInfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
@interface SPTableInfo : NSObject
3232
{
33-
IBOutlet id infoTable;
33+
IBOutlet NSTableView *infoTable;
3434
IBOutlet id tableList;
3535
IBOutlet id tableListInstance;
3636
IBOutlet id tableDataInstance;

Source/SPTableInfo.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,11 +390,11 @@ - (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn
390390

391391
if (![tableInfoScrollView isHidden]) {
392392
[tableDocumentInstance setActivityPaneHidden:@0];
393-
[[NSApp mainWindow] makeFirstResponder:activitiesTable];
393+
[[activitiesTable window] makeFirstResponder:activitiesTable];
394394
}
395395
else {
396396
[tableDocumentInstance setActivityPaneHidden:@1];
397-
[[NSApp mainWindow] makeFirstResponder:infoTable];
397+
[[infoTable window] makeFirstResponder:infoTable];
398398
}
399399

400400
[infoTable deselectAll:nil];

Source/SPTablesList.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1634,7 +1634,7 @@ - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBy
16341634
[textView methodForSelector:command] == [textView methodForSelector:@selector(complete:)] ) {
16351635

16361636
[control abortEditing];
1637-
[[NSApp mainWindow] makeFirstResponder:tablesListView];
1637+
[[tablesListView window] makeFirstResponder:tablesListView];
16381638

16391639
return YES;
16401640
} else{

Source/SPTextAndLinkCell.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ - (NSCellHitResult) hitTestForEvent:(NSEvent *)event inRect:(NSRect)cellFrame of
183183
// Fast case for no link - make entire cell editable click area
184184
if (!hasLink || !linkActive) return NSCellHitContentArea | NSCellHitEditableTextArea;
185185

186-
NSPoint p = [[[NSApp mainWindow] contentView] convertPoint:[event locationInWindow] toView:controlView];
186+
NSPoint p = [[[controlView window] contentView] convertPoint:[event locationInWindow] toView:controlView];
187187
NSRect linkRect = SPTextLinkRectFromCellRect(cellFrame);
188188

189189
// Hit the link if it falls within the link rectangle for this cell, set when drawing
@@ -233,7 +233,7 @@ - (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *
233233

234234
// Capture the clicked row and cell
235235
NSTableView *tableView = (NSTableView *)[self controlView];
236-
p = [[[NSApp mainWindow] contentView] convertPoint:[theEvent locationInWindow] toView:tableView];
236+
p = [[[tableView window] contentView] convertPoint:[theEvent locationInWindow] toView:tableView];
237237
lastLinkColumn = [tableView columnAtPoint:p];
238238
lastLinkRow = [tableView rowAtPoint:p];
239239

Source/SPTextViewAdditions.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,7 @@ - (NSMenu *)menuForEvent:(NSEvent *)event
849849
if([keyEq length])
850850
[mItem setKeyEquivalentModifierMask:[[[item objectForKey:SPBundleFileKeyEquivalentKey] objectAtIndex:1] intValue]];
851851

852-
[mItem setTarget:[[NSApp mainWindow] firstResponder]];
852+
[mItem setTarget:[[NSApp keyWindow] firstResponder]];
853853

854854
if([item objectForKey:SPBundleFileTooltipKey])
855855
[mItem setToolTip:[item objectForKey:SPBundleFileTooltipKey]];

0 commit comments

Comments
 (0)