Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add option for Context Specific spacebar behavior addressing issue #925 #1803

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Expand Up @@ -20,4 +20,5 @@ Quicksilver*.dmg
*.pyc
Quicksilver/SharedSupport/Changes*.html
Quicksilver/Code-External/VDKQueue
Quicksilver/Code-External/DisableSubviews
Quicksilver/Code-External/DisableSubviews
.idea/
48 changes: 47 additions & 1 deletion Quicksilver/Code-QuickStepInterface/QSSearchObjectView.m
Expand Up @@ -1328,8 +1328,13 @@ - (IBAction)shortCircuit:(id)sender {
[resultTimer invalidate];
}

- (void)insertSpace:(id)sender {
- (void)insertSpace:(id)sender
{
NSInteger behavior = [[NSUserDefaults standardUserDefaults] integerForKey:@"QSSearchSpaceBarBehavior"];

QSObject * newSelectedObject = [[super objectValue] resolvedObject];
QSAction *action = [[self actionSelector] objectValue];

switch(behavior) {
case 1: //Normal
[self insertText:@" "];
Expand All @@ -1355,6 +1360,47 @@ - (void)insertSpace:(id)sender {
case 6: // Show Quicklook window
[self togglePreviewPanel:nil];
break;

case 7: // Smart Context Specific behavior based on object

// if we are in the second pane, trigger first action that involves third pane and go there
if (self == [self actionSelector])
{
[self shortCircuit:sender];
}
// go to parent if one exists
else if ([[NSApp currentEvent] modifierFlags] & NSShiftKeyMask)
{
[self moveLeft:sender];
}
// Show child contents but only if object isn't a URL or text file
else if ([newSelectedObject hasChildren] &&
![[newSelectedObject primaryType] isEqualToString:QSURLType] &&
![[newSelectedObject primaryType] isEqualToString:QSSearchURLType] &&
!QSTypeConformsTo([newSelectedObject fileUTI], (__bridge NSString *)kUTTypePlainText))
{
[self moveRight:sender];
}
// If we aren't in the third pane then jump to Indirect if action requires more then one argument (ie. search URL)
else if (self != [self indirectSelector] &&
(action &&
[action respondsToSelector:@selector(argumentCount)] &&
[action argumentCount] == 2))
{
[self shortCircuit:sender];
}
// Show Quicklook window
else if ([self canQuicklookCurrentObject])
{
[self togglePreviewPanel:nil];
}
// Switch to text
else
{
[self transmogrify:sender];
}

break;
}
}

Expand Down