aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/SPCustomQuery.m20
-rw-r--r--Source/SPTableContent.m20
2 files changed, 31 insertions, 9 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]];
diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m
index 433ac25c..8e537178 100644
--- a/Source/SPTableContent.m
+++ b/Source/SPTableContent.m
@@ -1648,22 +1648,32 @@ static NSString *SPTableFilterSetDefaultOperator = @"SPTableFilterSetDefaultOper
return;
}
+ 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 (sortCol && [[tableColumn identifier] integerValue] == [sortCol integerValue]) {
- if (isDesc) {
+ BOOL invert = NO;
+ if (modifierFlags & NSShiftKeyMask) {
+ invert = YES;
+ }
+
+ // this is the same as saying (isDesc && !invert) || (!isDesc && invert)
+ if (isDesc != invert) {
[sortCol release];
sortCol = nil;
}
else {
- if (sortCol) [sortCol release];
-
- sortCol = [[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;
+ }
[[tableContentView onMainThread] setIndicatorImage:nil inTableColumn:[tableContentView tableColumnWithIdentifier:[NSString stringWithFormat:@"%lld", (long long)[sortCol integerValue]]]];