Skip to content

Commit 9cb1339

Browse files
committed
Rewire the push menu
Fixes #150
1 parent 27f778d commit 9cb1339

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

Classes/Controllers/PBGitWindowController.m

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,13 @@ - (void)performPushForBranch:(PBGitRef *)branchRef toRemote:(PBGitRef *)remoteRe
419419
if (!types || [types indexOfObject:[refish refishType]] != NSNotFound)
420420
return refish;
421421
}
422+
NSString *remoteName = nil;
423+
if ([(remoteName = [(NSMenuItem *)sender representedObject]) isKindOfClass:[NSString class]]) {
424+
if ([types indexOfObject:kGitXRemoteType] != NSNotFound
425+
&& [self.repository.remotes indexOfObject:remoteName] != NSNotFound) {
426+
return [PBGitRef refFromString:[kGitXRemoteRefPrefix stringByAppendingString:remoteName]];
427+
}
428+
}
422429

423430
return nil;
424431
}
@@ -578,7 +585,7 @@ - (IBAction)pullRebaseDefaultRemote:(id)sender
578585

579586
- (IBAction)pushUpdatesToRemote:(id)sender
580587
{
581-
id <PBGitRefish> refish = [self refishForSender:sender refishTypes:@[kGitXBranchType]];
588+
id <PBGitRefish> refish = [self refishForSender:sender refishTypes:@[kGitXRemoteType]];
582589
if (!refish || ![refish isKindOfClass:[PBGitRef class]])
583590
return;
584591

@@ -600,12 +607,16 @@ - (IBAction)pushDefaultRemoteForRef:(id)sender
600607

601608
- (IBAction)pushToRemote:(id)sender
602609
{
603-
id <PBGitRefish> refish = [self refishForSender:sender refishTypes:@[kGitXBranchType]];
604-
if (!refish || ![refish isKindOfClass:[PBGitRef class]])
610+
NSMenuItem *remoteSubmenu = sender;
611+
if (![remoteSubmenu isKindOfClass:[NSMenuItem class]]) return;
612+
613+
id <PBGitRefish> ref = [self refishForSender:remoteSubmenu.parentItem refishTypes:@[kGitXBranchType]];
614+
if (!ref || ![ref isKindOfClass:[PBGitRef class]])
605615
return;
606616

607-
PBGitRef *ref = (PBGitRef *)refish;
608-
PBGitRef *remoteRef = ref.remoteRef;
617+
id <PBGitRefish> remoteRef = [self refishForSender:sender refishTypes:@[kGitXRemoteType]];
618+
if (!remoteRef || ![remoteRef isKindOfClass:[PBGitRef class]])
619+
return;
609620

610621
[self performPushForBranch:ref toRemote:remoteRef];
611622
}

0 commit comments

Comments
 (0)