Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix bundle commands no longer working in popup field editor (and poss…
…ibly other cases) (#2299)

Replacing some [NSApp mainWindow] with their actually intended calls [NSApp keyWindow] and [view window]
  • Loading branch information
dmoagx committed Oct 20, 2015
1 parent 5357fd1 commit ffbf7a4
Show file tree
Hide file tree
Showing 11 changed files with 35 additions and 31 deletions.
6 changes: 3 additions & 3 deletions Source/SPAppController.m
Expand Up @@ -2024,7 +2024,7 @@ - (IBAction)bundleCommandDispatcher:(id)sender
NSEvent *event = [NSApp currentEvent];
BOOL checkForKeyEquivalents = ([event type] == NSKeyDown) ? YES : NO;

id firstResponder = [[NSApp mainWindow] firstResponder];
id firstResponder = [[NSApp keyWindow] firstResponder];

NSString *scope = [[sender representedObject] objectForKey:@"scope"];
NSString *keyEqKey = nil;
Expand Down Expand Up @@ -2076,7 +2076,7 @@ - (IBAction)bundleCommandDispatcher:(id)sender
NSMenuItem *aMenuItem = [[[NSMenuItem alloc] init] autorelease];
[aMenuItem setTag:0];
[aMenuItem setToolTip:[eq objectForKey:@"path"]];
[(SPTextView *)[[NSApp mainWindow] firstResponder] executeBundleItemForInputField:aMenuItem];
[(SPTextView *)firstResponder executeBundleItemForInputField:aMenuItem];
}
}
} else {
Expand All @@ -2095,7 +2095,7 @@ - (IBAction)bundleCommandDispatcher:(id)sender
NSMenuItem *aMenuItem = [[[NSMenuItem alloc] init] autorelease];
[aMenuItem setTag:0];
[aMenuItem setToolTip:[eq objectForKey:@"path"]];
[(SPCopyTable *)[[NSApp mainWindow] firstResponder] executeBundleItemForDataTable:aMenuItem];
[(SPCopyTable *)firstResponder executeBundleItemForDataTable:aMenuItem];
}
}
} else {
Expand Down
4 changes: 2 additions & 2 deletions Source/SPBundleEditorController.m
Expand Up @@ -1334,7 +1334,7 @@ - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBy

//abort editing
[control abortEditing];
[[NSApp mainWindow] makeFirstResponder:commandsOutlineView];
[[commandsOutlineView window] makeFirstResponder:commandsOutlineView];
return YES;
} else{
return NO;
Expand Down Expand Up @@ -1452,7 +1452,7 @@ - (BOOL)validateMenuItem:(NSMenuItem *)menuItem
(action == @selector(displayBundleMetaInfo:)))
{
// Allow to record short-cuts used by the Bundle Editor
if([[NSApp mainWindow] firstResponder] == keyEquivalentField) return NO;
if([[NSApp keyWindow] firstResponder] == keyEquivalentField) return NO;

return ([[commandBundleTreeController selectedObjects] count] == 1 && ![[[commandBundleTreeController selectedObjects] objectAtIndex:0] objectForKey:kChildrenKey]);
}
Expand Down
9 changes: 5 additions & 4 deletions Source/SPCustomQuery.m
Expand Up @@ -2583,16 +2583,17 @@ - (void)tableViewSelectionDidChange:(NSNotification *)aNotification
if(!correspondingWindowFound) stopTrigger = YES;
}
if(!stopTrigger) {
id firstResponder = [[NSApp keyWindow] firstResponder];
if([[data objectAtIndex:1] isEqualToString:SPBundleScopeGeneral]) {
[[SPAppDelegate onMainThread] executeBundleItemForApp:aMenuItem];
}
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeDataTable]) {
if([[[[[NSApp mainWindow] firstResponder] class] description] isEqualToString:@"SPCopyTable"])
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForDataTable:aMenuItem];
if([[[firstResponder class] description] isEqualToString:@"SPCopyTable"])
[[firstResponder onMainThread] executeBundleItemForDataTable:aMenuItem];
}
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeInputField]) {
if([[[NSApp mainWindow] firstResponder] isKindOfClass:[NSTextView class]])
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForInputField:aMenuItem];
if([firstResponder isKindOfClass:[NSTextView class]])
[[firstResponder onMainThread] executeBundleItemForInputField:aMenuItem];
}
}
}
Expand Down
14 changes: 8 additions & 6 deletions Source/SPDatabaseDocument.m
Expand Up @@ -5291,8 +5291,9 @@ - (void)handleSchemeCommand:(NSDictionary*)commandDict
}

if([command isEqualToString:@"SelectTableRows"]) {
if([params count] > 1 && [[[NSApp mainWindow] firstResponder] respondsToSelector:@selector(selectTableRows:)]) {
[(SPCopyTable *)[[NSApp mainWindow] firstResponder] selectTableRows:[params subarrayWithRange:NSMakeRange(1, [params count]-1)]];
id firstResponder = [[NSApp keyWindow] firstResponder];
if([params count] > 1 && [firstResponder respondsToSelector:@selector(selectTableRows:)]) {
[(SPCopyTable *)firstResponder selectTableRows:[params subarrayWithRange:NSMakeRange(1, [params count]-1)]];
}
return;
}
Expand Down Expand Up @@ -6307,17 +6308,18 @@ - (void)_processDatabaseChangedBundleTriggerActions
if(!correspondingWindowFound) stopTrigger = YES;
}
if(!stopTrigger) {
id firstResponder = [[NSApp keyWindow] firstResponder];
if([[data objectAtIndex:1] isEqualToString:SPBundleScopeGeneral]) {
[[SPAppDelegate onMainThread] executeBundleItemForApp:aMenuItem];
}
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeDataTable]) {
if ([[[[[NSApp mainWindow] firstResponder] class] description] isEqualToString:@"SPCopyTable"]) {
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForDataTable:aMenuItem];
if ([[[firstResponder class] description] isEqualToString:@"SPCopyTable"]) {
[[firstResponder onMainThread] executeBundleItemForDataTable:aMenuItem];
}
}
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeInputField]) {
if ([[[NSApp mainWindow] firstResponder] isKindOfClass:[NSTextView class]]) {
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForInputField:aMenuItem];
if ([firstResponder isKindOfClass:[NSTextView class]]) {
[[firstResponder onMainThread] executeBundleItemForInputField:aMenuItem];
}
}
}
Expand Down
9 changes: 5 additions & 4 deletions Source/SPDatabaseViewController.m
Expand Up @@ -615,16 +615,17 @@ - (void)_loadTableTask
if(!correspondingWindowFound) stopTrigger = YES;
}
if(!stopTrigger) {
id firstResponder = [[NSApp keyWindow] firstResponder];
if([[data objectAtIndex:1] isEqualToString:SPBundleScopeGeneral]) {
[[SPAppDelegate onMainThread] executeBundleItemForApp:aMenuItem];
}
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeDataTable]) {
if([[[[[NSApp mainWindow] firstResponder] class] description] isEqualToString:@"SPCopyTable"])
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForDataTable:aMenuItem];
if([[[firstResponder class] description] isEqualToString:@"SPCopyTable"])
[[firstResponder onMainThread] executeBundleItemForDataTable:aMenuItem];
}
else if([[data objectAtIndex:1] isEqualToString:SPBundleScopeInputField]) {
if([[[NSApp mainWindow] firstResponder] isKindOfClass:[NSTextView class]])
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForInputField:aMenuItem];
if([firstResponder isKindOfClass:[NSTextView class]])
[[firstResponder onMainThread] executeBundleItemForInputField:aMenuItem];
}
}
}
Expand Down
10 changes: 5 additions & 5 deletions Source/SPTableContentDelegate.m
Expand Up @@ -148,18 +148,18 @@ - (void)tableViewSelectionDidChange:(NSNotification *)aNotification
if (!correspondingWindowFound) stopTrigger = YES;
}
if (!stopTrigger) {

id firstResponder = [[NSApp keyWindow] firstResponder];
if ([[data objectAtIndex:1] isEqualToString:SPBundleScopeGeneral]) {
[[SPAppDelegate onMainThread] executeBundleItemForApp:aMenuItem];
}
else if ([[data objectAtIndex:1] isEqualToString:SPBundleScopeDataTable]) {
if ([[[[[NSApp mainWindow] firstResponder] class] description] isEqualToString:@"SPCopyTable"]) {
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForDataTable:aMenuItem];
if ([[[firstResponder class] description] isEqualToString:@"SPCopyTable"]) {
[[firstResponder onMainThread] executeBundleItemForDataTable:aMenuItem];
}
}
else if ([[data objectAtIndex:1] isEqualToString:SPBundleScopeInputField]) {
if ([[[NSApp mainWindow] firstResponder] isKindOfClass:[NSTextView class]]) {
[[[[NSApp mainWindow] firstResponder] onMainThread] executeBundleItemForInputField:aMenuItem];
if ([firstResponder isKindOfClass:[NSTextView class]]) {
[[firstResponder onMainThread] executeBundleItemForInputField:aMenuItem];
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion Source/SPTableInfo.h
Expand Up @@ -30,7 +30,7 @@

@interface SPTableInfo : NSObject
{
IBOutlet id infoTable;
IBOutlet NSTableView *infoTable;
IBOutlet id tableList;
IBOutlet id tableListInstance;
IBOutlet id tableDataInstance;
Expand Down
4 changes: 2 additions & 2 deletions Source/SPTableInfo.m
Expand Up @@ -390,11 +390,11 @@ - (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn

if (![tableInfoScrollView isHidden]) {
[tableDocumentInstance setActivityPaneHidden:@0];
[[NSApp mainWindow] makeFirstResponder:activitiesTable];
[[activitiesTable window] makeFirstResponder:activitiesTable];
}
else {
[tableDocumentInstance setActivityPaneHidden:@1];
[[NSApp mainWindow] makeFirstResponder:infoTable];
[[infoTable window] makeFirstResponder:infoTable];
}

[infoTable deselectAll:nil];
Expand Down
2 changes: 1 addition & 1 deletion Source/SPTablesList.m
Expand Up @@ -1634,7 +1634,7 @@ - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBy
[textView methodForSelector:command] == [textView methodForSelector:@selector(complete:)] ) {

[control abortEditing];
[[NSApp mainWindow] makeFirstResponder:tablesListView];
[[tablesListView window] makeFirstResponder:tablesListView];

return YES;
} else{
Expand Down
4 changes: 2 additions & 2 deletions Source/SPTextAndLinkCell.m
Expand Up @@ -183,7 +183,7 @@ - (NSCellHitResult) hitTestForEvent:(NSEvent *)event inRect:(NSRect)cellFrame of
// Fast case for no link - make entire cell editable click area
if (!hasLink || !linkActive) return NSCellHitContentArea | NSCellHitEditableTextArea;

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

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

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

Expand Down
2 changes: 1 addition & 1 deletion Source/SPTextViewAdditions.m
Expand Up @@ -849,7 +849,7 @@ - (NSMenu *)menuForEvent:(NSEvent *)event
if([keyEq length])
[mItem setKeyEquivalentModifierMask:[[[item objectForKey:SPBundleFileKeyEquivalentKey] objectAtIndex:1] intValue]];

[mItem setTarget:[[NSApp mainWindow] firstResponder]];
[mItem setTarget:[[NSApp keyWindow] firstResponder]];

if([item objectForKey:SPBundleFileTooltipKey])
[mItem setToolTip:[item objectForKey:SPBundleFileTooltipKey]];
Expand Down

0 comments on commit ffbf7a4

Please sign in to comment.