]> granicus.if.org Git - transmission/commitdiff
fix a whoops with group row removal; when removing a row, select the row below it
authorMitchell Livingston <livings124@transmissionbt.com>
Sat, 29 Nov 2008 21:29:06 +0000 (21:29 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Sat, 29 Nov 2008 21:29:06 +0000 (21:29 +0000)
macosx/GroupsController.m
macosx/GroupsWindowController.m

index 967b167518bee3f6a4b127f45af9e4a85b7742c7..8d3b7da1b3d311979fd094d8f4d9834ee904aeea 100644 (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"]];
index 133a05cbcb75cd99c1462f224a5f89da2eb9ed40..ae6a030d3301a99698330c9b49b31bb1ebc47bfc 100644 (file)
 
     [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
     [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)
             [fTableView reloadData];
             
             row = [fTableView numberOfRows]-1;
-            [fTableView selectRowIndexes: [NSIndexSet indexSetWithIndex: row] byExtendingSelection: NO];
+            [fTableView selectRow: row byExtendingSelection: NO];
             [fTableView scrollRowToVisible: row];
             
             break;
                 && 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