Skip to content

Commit

Permalink
Merge pull request #857 from pjrobertson/updateObjects
Browse files Browse the repository at this point in the history
Update the search object and the actions in a more user friendly way, fixes #856
  • Loading branch information
skurfer committed May 7, 2012
2 parents 08c699c + b7a9a87 commit 8ad9997
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 21 deletions.
24 changes: 16 additions & 8 deletions Quicksilver/Code-QuickStepInterface/QSInterfaceController.m
Expand Up @@ -291,19 +291,27 @@ - (NSArray *)rankedActions {
}

- (void)updateActions {
[aSelector setResultArray:nil];
[aSelector clearObjectValue];
// update the actions after a delay (see setActionUpdateTimer for the delay length)
[self performSelectorOnMainThread:@selector(setActionUpdateTimer) withObject:nil waitUntilDone:YES];
}

- (void)updateActionsNow {
NSArray *actions = [self rankedActions];
// Don't reload the 2nd pane if the actions are identical
if ([actions isEqualToArray:[aSelector resultArray]]) {
return;
}

// Clear the current results in the aSelector ready for the new results
[aSelector setResultArray:nil];
[aSelector clearObjectValue];
[actionsUpdateTimer invalidate];

[aSelector setEnabled:YES];
NSString *type = [NSString stringWithFormat:@"QSActionMnemonic:%@", [[dSelector objectValue] primaryType]];
NSArray *actions = [self rankedActions];

[self updateControl:aSelector withArray:actions];
[self updateControl:aSelector withArray:actions];

NSString *type = [NSString stringWithFormat:@"QSActionMnemonic:%@", [[dSelector objectValue] primaryType]];

[aSelector setMatchedString:type];
[aSelector setSearchString:nil];
Expand Down Expand Up @@ -393,9 +401,9 @@ - (void)objectIconModified:(NSNotification *)notif {
- (void)searchObjectChanged:(NSNotification*)notif {
[[self window] disableFlushWindow];
if ([notif object] == dSelector) {
[iSelector setObjectValue:nil];
[self updateActions];
[self updateViewLocations];
[iSelector setObjectValue:nil];
[self updateActions];
[self updateViewLocations];
} else if ([notif object] == aSelector) {
QSAction *obj = [aSelector objectValue];
if ([obj isKindOfClass:[QSRankedObject class]])
Expand Down
35 changes: 22 additions & 13 deletions Quicksilver/Code-QuickStepInterface/QSSearchObjectView.m
Expand Up @@ -584,29 +584,38 @@ - (IBAction)updateResultView:(id)sender {
#pragma mark Object Value
- (void)selectObjectValue:(QSObject *)newObject {
QSObject *currentObject = [self objectValue];
QSObject *tempNewObject;
QSObject *tempCurrentObject;

// resolve the current and new objects in order to compare them
if ([newObject isKindOfClass:[QSRankedObject class]]) {
tempNewObject = [(QSRankedObject *)newObject object];
newObject = [(QSRankedObject *)newObject object];
}
if ([currentObject isKindOfClass:[QSRankedObject class]]) {
tempCurrentObject = [(QSRankedObject *)currentObject object];
currentObject = [(QSRankedObject *)currentObject object];
}
if ((tempNewObject ? tempNewObject : newObject) != (tempCurrentObject ? tempCurrentObject : currentObject)) {
// if the two objects are not the same, send an 'object chagned' notif
if (newObject != currentObject) {
[super setObjectValue:newObject];
[[NSNotificationCenter defaultCenter] postNotificationName:@"SearchObjectChanged" object:self];
}
}

- (void)setObjectValue:(QSBasicObject *)newObject {
//if (newObject) NSLog(@"%p set value %@", self, newObject);
[self hideResultView:self];
[self clearSearch];
[parentStack removeAllObjects];
[self setResultArray:[NSArray arrayWithObjects:newObject, nil]];
[super setObjectValue:newObject];

[[NSNotificationCenter defaultCenter] postNotificationName:@"SearchObjectChanged" object:self];
QSObject *currentObject = [self objectValue];
if ([newObject isKindOfClass:[QSRankedObject class]]) {
newObject = [(QSRankedObject *)newObject object];
}
if ([currentObject isKindOfClass:[QSRankedObject class]]) {
currentObject = [(QSRankedObject *)currentObject object];
}
if (newObject != currentObject) {
[self hideResultView:self];
[self clearSearch];
[parentStack removeAllObjects];
[self setResultArray:[NSArray arrayWithObjects:newObject, nil]];
[super setObjectValue:newObject];

[[NSNotificationCenter defaultCenter] postNotificationName:@"SearchObjectChanged" object:self];
}
}

- (void)clearObjectValue {
Expand Down

0 comments on commit 8ad9997

Please sign in to comment.