Changeset 13124


Ignore:
Timestamp:
Jan 2, 2012, 7:05:21 PM (10 years ago)
Author:
livings124
Message:

#4693 (Lion) animate adding/removing/dragging rows in the group pref table

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/GroupsPrefsController.m

    r13108 r13124  
    2727#import "ExpandedPathToPathTransformer.h"
    2828#import "ExpandedPathToIconTransformer.h"
     29#import "NSApplicationAdditions.h"
    2930
    3031#define GROUP_TABLE_VIEW_DATA_TYPE @"GroupTableViewDataType"
     
    122123        NSInteger oldRow = [indexes firstIndex], selectedRow = [fTableView selectedRow];
    123124       
     125       
     126        if ([NSApp isOnLionOrBetter])
     127            [fTableView beginUpdates];
     128       
    124129        [[GroupsController groups] moveGroupAtRow: oldRow toRow: newRow];
    125130       
     
    127132            newRow--;
    128133       
    129         if (selectedRow == oldRow)
    130             selectedRow = newRow;
    131         else if (selectedRow > oldRow && selectedRow <= newRow)
    132             selectedRow--;
    133         else if (selectedRow < oldRow && selectedRow >= newRow)
    134             selectedRow++;
    135         else;
    136        
    137         [fTableView selectRowIndexes: [NSIndexSet indexSetWithIndex: selectedRow] byExtendingSelection: NO];
    138         [fTableView reloadData];
     134        if ([NSApp isOnLionOrBetter])
     135        {
     136            [fTableView moveRowAtIndex: oldRow toIndex: newRow];
     137            [fTableView endUpdates];
     138        }
     139        else
     140        {
     141            if (selectedRow == oldRow)
     142                selectedRow = newRow;
     143            else if (selectedRow > oldRow && selectedRow <= newRow)
     144                selectedRow--;
     145            else if (selectedRow < oldRow && selectedRow >= newRow)
     146                selectedRow++;
     147            else;
     148           
     149            [fTableView selectRowIndexes: [NSIndexSet indexSetWithIndex: selectedRow] byExtendingSelection: NO];
     150            [fTableView reloadData];
     151        }
    139152    }
    140153   
     
    151164    {
    152165        case ADD_TAG:
     166            if ([NSApp isOnLionOrBetter])
     167                [fTableView beginUpdates];
     168           
    153169            [[GroupsController groups] addNewGroup];
    154170           
    155             [fTableView reloadData];
    156            
    157             row = [fTableView numberOfRows]-1;
     171            row = [fTableView numberOfRows];
     172           
     173            if ([NSApp isOnLionOrBetter])
     174            {
     175                [fTableView insertRowsAtIndexes: [NSIndexSet indexSetWithIndex: row] withAnimation: NSTableViewAnimationSlideUp];
     176                [fTableView endUpdates];
     177            }
     178            else
     179                [fTableView reloadData];
     180           
    158181            [fTableView selectRowIndexes: [NSIndexSet indexSetWithIndex: row] byExtendingSelection: NO];
    159182            [fTableView scrollRowToVisible: row];
     
    165188        case REMOVE_TAG:
    166189            row = [fTableView selectedRow];
     190           
     191           
     192            if ([NSApp isOnLionOrBetter])
     193                [fTableView beginUpdates];
     194           
    167195            [[GroupsController groups] removeGroupWithRowIndex: row];           
    168                        
    169             [fTableView reloadData];
     196           
     197            if ([NSApp isOnLionOrBetter])
     198            {
     199                [fTableView removeRowsAtIndexes: [NSIndexSet indexSetWithIndex: row] withAnimation: NSTableViewAnimationSlideUp];
     200                [fTableView endUpdates];
     201            }
     202            else
     203                [fTableView reloadData];
    170204           
    171205            if ([fTableView numberOfRows] > 0)
    172206            {
    173207                if (row == [fTableView numberOfRows])
    174                 {
    175208                    --row;
    176                     [fTableView selectRowIndexes: [NSIndexSet indexSetWithIndex: row] byExtendingSelection: NO];
    177                 }
    178                
    179                 [fTableView scrollRowToVisible: row];
     209                [fTableView selectRowIndexes: [NSIndexSet indexSetWithIndex: row] byExtendingSelection: NO];
    180210            }
     211            [fTableView scrollRowToVisible: row];
    181212           
    182213            break;
Note: See TracChangeset for help on using the changeset viewer.