diff --git a/macosx/Controller.h b/macosx/Controller.h
index 61d8e3706..102047598 100644
--- a/macosx/Controller.h
+++ b/macosx/Controller.h
@@ -63,7 +63,9 @@
NSString * fSortType;
IBOutlet NSMenuItem * fNameSortItem, * fStateSortItem, * fProgressSortItem,
- * fDateSortItem, * fOrderSortItem;
+ * fDateSortItem, * fOrderSortItem,
+ * fNameSortActionItem, * fStateSortActionItem, * fProgressSortActionItem,
+ * fDateSortActionItem, * fOrderSortActionItem;
IBOutlet ImageBackgroundView * fFilterBar;
BOOL fFilterBarVisible;
diff --git a/macosx/Controller.m b/macosx/Controller.m
index 88f791824..4477de3e4 100644
--- a/macosx/Controller.m
+++ b/macosx/Controller.m
@@ -217,18 +217,34 @@ static void sleepCallBack(void * controller, io_service_t y,
//set sort
fSortType = [[fDefaults stringForKey: @"Sort"] retain];
- NSMenuItem * currentSortItem;
+ NSMenuItem * currentSortItem, * currentSortActionItem;
if ([fSortType isEqualToString: @"Name"])
+ {
currentSortItem = fNameSortItem;
+ currentSortActionItem = fNameSortActionItem;
+ }
else if ([fSortType isEqualToString: @"State"])
+ {
currentSortItem = fStateSortItem;
+ currentSortActionItem = fStateSortActionItem;
+ }
else if ([fSortType isEqualToString: @"Progress"])
+ {
currentSortItem = fProgressSortItem;
+ currentSortActionItem = fProgressSortActionItem;
+ }
else if ([fSortType isEqualToString: @"Date"])
+ {
currentSortItem = fDateSortItem;
+ currentSortActionItem = fDateSortActionItem;
+ }
else
+ {
currentSortItem = fOrderSortItem;
+ currentSortActionItem = fOrderSortActionItem;
+ }
[currentSortItem setState: NSOnState];
+ [currentSortActionItem setState: NSOnState];
//set filter
fFilterType = [[fDefaults stringForKey: @"Filter"] retain];
@@ -973,35 +989,76 @@ static void sleepCallBack(void * controller, io_service_t y,
- (void) setSort: (id) sender
{
- NSMenuItem * prevSortItem;
+ //get checked items
+ NSMenuItem * prevSortItem, * prevSortActionItem;
if ([fSortType isEqualToString: @"Name"])
- prevSortItem = fNameSortItem;
- else if ([fSortType isEqualToString: @"State"])
- prevSortItem = fStateSortItem;
- else if ([fSortType isEqualToString: @"Progress"])
- prevSortItem = fProgressSortItem;
- else if ([fSortType isEqualToString: @"Date"])
- prevSortItem = fDateSortItem;
- else
- prevSortItem = fOrderSortItem;
-
- if (sender != prevSortItem)
{
- [prevSortItem setState: NSOffState];
- [sender setState: NSOnState];
-
+ prevSortItem = fNameSortItem;
+ prevSortActionItem = fNameSortActionItem;
+ }
+ else if ([fSortType isEqualToString: @"State"])
+ {
+ prevSortItem = fStateSortItem;
+ prevSortActionItem = fStateSortActionItem;
+ }
+ else if ([fSortType isEqualToString: @"Progress"])
+ {
+ prevSortItem = fProgressSortItem;
+ prevSortActionItem = fProgressSortActionItem;
+ }
+ else if ([fSortType isEqualToString: @"Date"])
+ {
+ prevSortItem = fDateSortItem;
+ prevSortActionItem = fDateSortActionItem;
+ }
+ else
+ {
+ prevSortItem = fOrderSortItem;
+ prevSortActionItem = fOrderSortActionItem;
+ }
+
+ if (sender != prevSortItem && sender != prevSortActionItem)
+ {
[fSortType release];
- if (sender == fNameSortItem)
+
+ //get new items to check
+ NSMenuItem * currentSortItem, * currentSortActionItem;
+ if (sender == fNameSortItem || sender == fNameSortActionItem)
+ {
+ currentSortItem = fNameSortItem;
+ currentSortActionItem = fNameSortActionItem;
fSortType = [[NSString alloc] initWithString: @"Name"];
- else if (sender == fStateSortItem)
+ }
+ else if (sender == fStateSortItem || sender == fStateSortActionItem)
+ {
+ currentSortItem = fStateSortItem;
+ currentSortActionItem = fStateSortActionItem;
fSortType = [[NSString alloc] initWithString: @"State"];
- else if (sender == fProgressSortItem)
+ }
+ else if (sender == fProgressSortItem || sender == fProgressSortActionItem)
+ {
+ currentSortItem = fProgressSortItem;
+ currentSortActionItem = fProgressSortActionItem;
fSortType = [[NSString alloc] initWithString: @"Progress"];
- else if (sender == fDateSortItem)
+ }
+ else if (sender == fDateSortItem || sender == fDateSortActionItem)
+ {
+ currentSortItem = fDateSortItem;
+ currentSortActionItem = fDateSortActionItem;
fSortType = [[NSString alloc] initWithString: @"Date"];
+ }
else
+ {
+ currentSortItem = fOrderSortItem;
+ currentSortActionItem = fOrderSortActionItem;
fSortType = [[NSString alloc] initWithString: @"Order"];
-
+ }
+
+ [prevSortItem setState: NSOffState];
+ [prevSortActionItem setState: NSOffState];
+ [currentSortItem setState: NSOnState];
+ [currentSortActionItem setState: NSOnState];
+
[fDefaults setObject: fSortType forKey: @"Sort"];
}
@@ -1667,7 +1724,7 @@ static void sleepCallBack(void * controller, io_service_t y,
int state = ![fAdvancedBarItem state];
[fAdvancedBarItem setState: state];
[fDefaults setBool: state forKey: @"UseAdvancedBar"];
-
+
[fTableView display];
}
diff --git a/macosx/English.lproj/MainMenu.nib/classes.nib b/macosx/English.lproj/MainMenu.nib/classes.nib
index 9f448446f..12093b166 100644
--- a/macosx/English.lproj/MainMenu.nib/classes.nib
+++ b/macosx/English.lproj/MainMenu.nib/classes.nib
@@ -39,18 +39,22 @@
OUTLETS = {
fActionButton = NSButton;
fAdvancedBarItem = NSMenuItem;
+ fDateSortActionItem = NSMenuItem;
fDateSortItem = NSMenuItem;
fDownloadFilterButton = BarButton;
fDownloadLimitItem = NSMenuItem;
fDownloadMenu = NSMenu;
fDownloadNoLimitItem = NSMenuItem;
fFilterBar = ImageBackgroundView;
+ fNameSortActionItem = NSMenuItem;
fNameSortItem = NSMenuItem;
fNextInfoTabItem = NSMenuItem;
fNoFilterButton = BarButton;
+ fOrderSortActionItem = NSMenuItem;
fOrderSortItem = NSMenuItem;
fPauseFilterButton = BarButton;
fPrevInfoTabItem = NSMenuItem;
+ fProgressSortActionItem = NSMenuItem;
fProgressSortItem = NSMenuItem;
fRatioNotSetItem = NSMenuItem;
fRatioSetItem = NSMenuItem;
@@ -61,6 +65,7 @@
fSpeedLimitButton = NSButton;
fSpeedLimitDockItem = NSMenuItem;
fSpeedLimitItem = NSMenuItem;
+ fStateSortActionItem = NSMenuItem;
fStateSortItem = NSMenuItem;
fStatusBar = ImageBackgroundView;
fTableView = TorrentTableView;
diff --git a/macosx/English.lproj/MainMenu.nib/info.nib b/macosx/English.lproj/MainMenu.nib/info.nib
index 3389940fa..6acaeb4ca 100644
--- a/macosx/English.lproj/MainMenu.nib/info.nib
+++ b/macosx/English.lproj/MainMenu.nib/info.nib
@@ -7,7 +7,7 @@
IBEditorPositions
1041
- 344 478 208 99 0 0 1152 842
+ 344 478 208 130 0 0 1152 842
1480
366 546 420 63 0 0 1152 842
1603
@@ -31,9 +31,8 @@
3
IBOpenObjects
- 21
- 1480
29
+ 1041
1603
IBSystem Version
diff --git a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib
index 10ebd03e1..0a4cb23ad 100644
Binary files a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib and b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib differ