aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPCustomQuery.m
diff options
context:
space:
mode:
Diffstat (limited to 'Source/SPCustomQuery.m')
-rw-r--r--Source/SPCustomQuery.m20
1 files changed, 16 insertions, 4 deletions
diff --git a/Source/SPCustomQuery.m b/Source/SPCustomQuery.m
index 4b20af0b..8a2031f1 100644
--- a/Source/SPCustomQuery.m
+++ b/Source/SPCustomQuery.m
@@ -2141,19 +2141,31 @@
NSMutableString *queryString = [NSMutableString stringWithString:lastExecutedQuery];
+ NSUInteger modifierFlags = [[NSApp currentEvent] modifierFlags];
+
// Sets column order as tri-state descending, ascending, no sort, descending, ascending etc. order if the same
// header is clicked several times
if (sortField && [[tableColumn identifier] integerValue] == [sortField integerValue]) {
- if(isDesc) {
+ BOOL invert = NO;
+ if (modifierFlags & NSShiftKeyMask) {
+ invert = YES;
+ }
+
+ // this is the same as saying (isDesc && !invert) || (!isDesc && invert)
+ if (isDesc != invert) {
[sortField release];
sortField = nil;
} else {
- if (sortField) [sortField release];
- sortField = [[NSNumber alloc] initWithInteger:[[tableColumn identifier] integerValue]];
isDesc = !isDesc;
}
} else {
- isDesc = NO;
+ // When the column is not sorted, allow to sort in reverse order using Shift+click
+ if (modifierFlags & NSShiftKeyMask) {
+ isDesc = YES;
+ } else {
+ isDesc = NO;
+ }
+
[[customQueryView onMainThread] setIndicatorImage:nil inTableColumn:[customQueryView tableColumnWithIdentifier:[NSString stringWithFormat:@"%lld", (long long)[sortField integerValue]]]];
if (sortField) [sortField release];
sortField = [[NSNumber alloc] initWithInteger:[[tableColumn identifier] integerValue]];