I worked on notifications and concluded that we don't really have enough information to use them to keep the table "incrementally" up to date. An example of this problem is that when an Item is deleted we don't know what location it was deleted from, which is required to tell the wxGrid which row to delete. I spend a bunch of time looking into how we could fix this and got bogged down in lots of Andi's repository code. I think it's going to require some help from him for me to succeed.
I made a pass through the recent recorded scripts bugs and the following appear to have been fixed by my recent changes:
bug#8448: Recorded scripts don't properly handle setting focus to sidebar
bug#8678: Recorded script assertion error on right click in sidebar
bug#8449: Recorded scripts don't properly record shifted non-alphabetic characters
bug#8601: Assert during script playback when switching collections
bug#8389: Script recording assert when clicking in location field
bug#8861: Script recording crashes Chandler when user attempts to add recurrence
I think there are only two outstanding script recording bugs in bugzilla.
I tracked down a difficult Windows performance bug which causes line scrolling in the table to redraw the entire table on each scroll. It appears that the Win32 ::ScrollWindow API invalidates the entire screen when the window is a child of one with the WS_EX_COMPOSITE flag (used for double buffering). This happens even when you tell :ScrollWindow to not invalidate anything. If I manually calculate the correct invalidation region the scrolling problem is fixed. I still need to do a bit more investigation to make sure that this "bug" isn't really a "feature" for some reason I don't understand.