From: Maxwell, A. R <ada...@pn...> - 2005-06-30 15:16:00
|
On Jun 30, 2005, at 07:33, Christiaan Hofman wrote: > > On Jun 30, 2005, at 17:18, Adam R. Maxwell wrote: > > >> >> On Jun 30, 2005, at 00:46, Christiaan Hofman wrote: >> >> >>> >>> On Jun 30, 2005, at 2:16, Maxwell, Adam R wrote: >>> >>> >>> >>>> >>>> On Jun 29, 2005, at 12:25, Christiaan Hofman wrote: >>>> >>>> >>>> >>>>>> >>>>>> >>>>> This is the order in which things occur when saving using the >>>>> autosort pref: >>>>> - data is build, including the sort for crossrefs >>>>> - changeCount is cleared >>>>> - changeCount is set to NSChangeDone >>>>> >>>>> So it seems that the updateChangeCount by the undoManager is >>>>> delayed till _after_ the Save action has ended. Some queued >>>>> notification maybe? I am a bit at a loss how to avoid this. >>>>> >>>>> >>>> >>>> What about overriding saveDocument: and saveDocumentAs: to call >>>> the sort method there? That's sort of a hack, but I think it >>>> would ensure that the sort occurs before the rest of the save >>>> machinery gets used. I think bibTeXDataWithEncoding: is called >>>> pretty late. >>>> >>>> Adam >>>> >>>> >>>> >>> That doesn't help. The problem is not that the sort occurs before >>> clearing the changeCount, but rather that the undomanager's >>> setting of the dirty flag is delayed till after the whole save >>> machinery is finished, so this will still be too late. Moreover, >>> we also want it for export. >>> >> >> Yes, I realize the problem...and I added it for export as well. >> When I tested my solution, it seemed to work just fine, but your >> solution looks good (no beachball on saving, right?). >> >> Adam >> >> > I tested your solution, and I did get the dirty flag set. I believe you. I was seeing some strange behavior with the dirty flag actually, where it was set a few seconds after a manual autosort (but only with one file); maybe I just didn't wait long enough to see it. > As I now use only 1 loop to sort i.o. 2, it should actually be a > bit faster. Also it doe nothing when nothing should be done (unlike > in the old version, which moves parents eveen if they are at the > end already). The only thing is that there is no undo for the > autosort, and in fact nothing for the user to see. Maybe we should > write a message to the status bar when parents are moved? Great! Yeah, I think a status message might be appropriate, since it's a little mysterious. I found myself wondering if the sort had actually happened or not. Adam |