From: Chris C. <ca...@al...> - 2002-01-06 22:37:53
|
Guillaume Laurent wrote: > On Saturday 05 January 2002 22:56, I wrote: >>On Saturday 05 January 2002 20:18, Chris Cannam wrote: >>>[...] we need to change BasicCommand::finishExecute >>>so that it uses a signal to indicate the requirement to redraw >>> >>Doesn't sound too complicated. I'll do it right away. > > Done. No, your code misses the point, and breaks the case where there are multiple views and the view that originally invoked a command is no longer extant when it's undone or redone. (If that happens, the signal will never be caught even though arbitrarily many other views might be interested in it.) The signal should connect to a slot on every view; the point is not to replace the finishExecute method so much as the present ugly NotationView::redoLayout hack that calls redoLayoutAdvised on each view in a static list of extant ones. Instead the BasicCommand::finishExecute should cause some common, persistent class (somewhere around the document level) to fire a signal that is then caught by every view regardless of whether it created the command in the first place or not. Sorry, I should have jumped in and pointed this out earlier. I wasn't paying attention. There's some dreadful breakage of the redraw code going on somewhere, too -- my beamed groups aren't being properly re-rendered any more after something is inserted -- but I think that's probably caused by something else. Chris |