A lot of picky work yesterday.
- I fixed another hard crasher. The simplest way to trigger it was to
do a search that matched in a headline, then click in the body pane,
then hit F3 to repeat the search. The problem was that the gui was,
yet again, reporting a non-existent edit widget.
There might be a better way than the general scheme that I have been
using. But unless there are further problems I'm going to leave the
code as it is. The new fix is more general than the old, and should
work.
- Completed installing calls to optimized methods in the core. Mostly
straightforward, but some of the selection code required tricky
tweaks.
- Fixed the tree scrolling problem. leoQtTree.redraw_after_expand now
passes scroll=False to full_redraw. In the process, I removed most
scrolling args from the core: scrolling is a private matter for the
gui.
This fix means that no specialized redraw code is needed, which will
eliminate some bugs before they appear.
- Futzed with unit tests. All tests pass with Qt. The infamous
'Typing' tests fail intermittently with Tk. This is likely an issue
with the tests themselves, not with the code being tested. I would
certainly like to get these tests working solidly, but that has never
been easy: timing issues have always much more severe with Tk than
with Qt.
Summary
I plan to merge the api-for-redraw branch with the trunk in a day or
so. There are no major items on the list, but it is essential for the
code to be absolutely solid. So besides the actual to-do items, I
want to eat my own dog food for awhile...
A bzr log message says that I have abandoned the attempt to eliminate
c.outerUpdate. Indeed, the *tree* redraw code is the only code that
now happens immediately. The code that recolors the body pane and
sets focus is still deferred to c.outerUpdate time. This solves a lot
of problems and will likely never change.
The most important simplification of the core code is a seemingly
minor detail: c.redraw now takes an optional 'p' argument. Instead of
doing:
c.selectPosition(p)
c.redraw()
The code now does:
c.redraw(p)
This allows c.redraw to enforce some invariants that were present only
implicitly previously.
Edward
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/leo-editor?hl=en
-~----------~----~----~----~------~----~------~--~---