This week I mainly did two things:
- Made a few minor changes to the patch to handle using popups as drag feedback, to simplify the code.
- Posted patches to store and read XBL bindings to the startup cache. This is a work in progress, but I spent this week getting the patches to the point where they don’t cause any test failures. There is still some work to be done: various warnings occur when reading the bindings, error handling needs to be improved, there may be a minor memory leak to investigate and, for whatever reason, the cache is only read the second time rather than the first time it is available. The latter is some remnant of the switch to using a startup cache, which stores the cached data in a zip file, rather than the specialized format fastload file.
This week I mostly finished off a patch to handle panels as drag feedback images. Currently, when dragging, a feedback image is created from the element being dragged, or a script may change the feedback image with the setDragImage function. However, the image is always a static image. With this patch, if you pass a <panel> element to the setDragImage function, the panel will be used directly as the drag feedback, allowing the feedback image to be changed while dragging.
This will allow you to not only change the content and appearance of the drag feedback image while the drag is occurring, but also the position and size. This should allow for some interesting drag effects.
The only other step besides using the setDragImage function, is to ensure that you set type=”drag” on the <panel> element. This ensures that the popup behaves as a drag feedback image. Otherwise, drag events will get fired on the panel itself, and you will likely want them to be ignored and instead fired on what you are dragging over underneath the panel.
See bug 533460 for more details. Some builds are also available with these feature.
Some other things I have done recently:
- Put up a some updated patches for clipboard event handling.
- Fixed some elements such as the datepicker and tree such that they cancel mouse scroll events and key events properly
- An issue where dropping on plugins was not allowed.
- Some cleanup of xul headers.
- Changed xml-datasource template generation so that the ids from the source document are used. This allows persistence to work properly.