1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2024-12-24 00:34:04 +00:00

fix a whoops with group row removal; when removing a row, select the row below it

This commit is contained in:
Mitchell Livingston 2008-11-29 21:29:06 +00:00
parent 69877384f1
commit 128c91479a
2 changed files with 39 additions and 26 deletions

View file

@ -196,7 +196,7 @@ GroupsController * fGroupsInstance = nil;
- (void) removeGroupWithRowIndex: (NSInteger) row
{
NSInteger index = [[[fGroups objectAtIndex: row] objectForKey: @"Index"] intValue];
[fGroups removeObjectAtIndex: index];
[fGroups removeObjectAtIndex: row];
[[NSNotificationCenter defaultCenter] postNotificationName: @"GroupValueRemoved" object: self userInfo:
[NSDictionary dictionaryWithObject: [NSNumber numberWithInt: index] forKey: @"Index"]];

View file

@ -57,7 +57,11 @@
[fAddRemoveControl setEnabled: NO forSegment: REMOVE_TAG];
[fSelectedColorView addObserver: self forKeyPath: @"color" options: 0 context: NULL];
[self updateSelectedColor];
if ([fTableView numberOfRows] > 0)
[fTableView selectRow: 0 byExtendingSelection: NO];
else
[self updateSelectedColor]; //make sure all fields are disabled
}
- (NSInteger) numberOfRowsInTableView: (NSTableView *) tableview
@ -82,26 +86,6 @@
[self updateSelectedColor];
}
- (void) updateSelectedColor
{
[fAddRemoveControl setEnabled: [fTableView numberOfSelectedRows] > 0 forSegment: REMOVE_TAG];
if ([fTableView numberOfSelectedRows] == 1)
{
NSInteger index = [[GroupsController groups] indexForRow: [fTableView selectedRow]];
[fSelectedColorView setColor: [[GroupsController groups] colorForIndex: index]];
[fSelectedColorView setEnabled: YES];
[fSelectedColorNameField setStringValue: [[GroupsController groups] nameForIndex: index]];
[fSelectedColorNameField setEnabled: YES];
}
else
{
[fSelectedColorView setColor: [NSColor whiteColor]];
[fSelectedColorView setEnabled: NO];
[fSelectedColorNameField setStringValue: @""];
[fSelectedColorNameField setEnabled: NO];
}
}
- (void) observeValueForKeyPath: (NSString *) keyPath ofObject: (id) object change: (NSDictionary *) change context: (void *) context
{
if (object == fSelectedColorView && [fTableView numberOfSelectedRows] == 1)
@ -171,7 +155,7 @@
[fTableView reloadData];
row = [fTableView numberOfRows]-1;
[fTableView selectRowIndexes: [NSIndexSet indexSetWithIndex: row] byExtendingSelection: NO];
[fTableView selectRow: row byExtendingSelection: NO];
[fTableView scrollRowToVisible: row];
break;
@ -184,13 +168,42 @@
&& row == [[GroupsController groups] rowValueForIndex: fCurrentColorIndex])
[[NSColorPanel sharedColorPanel] close];
[[GroupsController groups] removeGroupWithRowIndex: row];
[fTableView deselectAll: self];
[[GroupsController groups] removeGroupWithRowIndex: row];
[fTableView reloadData];
//select the next row
if (row == [fTableView numberOfRows])
row--;
if (row >= 0)
[fTableView selectRow: row byExtendingSelection: NO];
break;
}
}
@end
@implementation GroupsWindowController (Private)
- (void) updateSelectedColor
{
[fAddRemoveControl setEnabled: [fTableView numberOfSelectedRows] > 0 forSegment: REMOVE_TAG];
if ([fTableView numberOfSelectedRows] == 1)
{
NSInteger index = [[GroupsController groups] indexForRow: [fTableView selectedRow]];
[fSelectedColorView setColor: [[GroupsController groups] colorForIndex: index]];
[fSelectedColorView setEnabled: YES];
[fSelectedColorNameField setStringValue: [[GroupsController groups] nameForIndex: index]];
[fSelectedColorNameField setEnabled: YES];
}
else
{
[fSelectedColorView setColor: [NSColor whiteColor]];
[fSelectedColorView setEnabled: NO];
[fSelectedColorNameField setStringValue: @""];
[fSelectedColorNameField setEnabled: NO];
}
}
@end