The <Glazblog/> takes some well deserved vacation and will be silent a few weeks.

Composer++ partly landed in Mozilla trunk

The Mozilla trunk version of Composer now has four new cool features:

  • support for Absolute Positioning: a pushpin button in the format toolbar of Composer allows you to extract the selection from the normal flow of the document and create a new absolutely positioned block with it. That new element is movable on the viewport using a grabber displayed above the block. The block can also be freely resized using eight resizing handles. The same pushpin button allows you to reinsert such a positioned block in the normal flow of the document. This feature is not in HTML email.
  • two other new buttons, send-to-back and bring-to-front, are enabled when the selection is contained in an absolutely positioned block. They are pretty self-explanatory I presume... They decrease or increase the z-index of the block. This feature is not in HTML email.
  • there is a new menu entry under Format called 'Positioning grid'. It's still questionable if it's the best place for this menu entry, but we can move that later if needed. That menu entry opens a small new dialog allowing to enable/disable the SnapToGrid feature and define the size of the grid in pixels. A size of 0 pixels disables the feature. When the feature is enabled and the size is greater than 0, moving a positioned object in the document makes his x and y coordinates always be a multiple of the grid size. This feature is not in HTML email.
  • when the selection is contained in a table cell, special "inline UI" buttons appear on the left and top borders of the cell. These buttons allow, in one click only, to insert or remove a line or column in the table. This feature is enabled in HTML email too since we're only in 1.5a timeframe. If the feature is not well accepted by HTML email users, a single line of code will be enough to disable it.
  • all the above was implemented with embeddability in mind. It means that all features can be enabled/disabled from both c++ and JS. It also means that it is possible to register listeners that will be notified when the user starts or stops resizing an object. Listeners notified when the user starts or stops moving an object have yet to be implemented.

Furthermore, I have improved a lot Image, Table and block resizing. Embedders should take a look at interfaces nsIHTMLAbsPosEditor.idl, nsIHTMLObjectResizer.idl, nsIHTMLObjectResizeListener.idl and nsIHTMLInlineTableEditor.idl in mozilla/editor/idl.

Hey Karl, hope you did not wait too long :-)