XUL:Improvements
From MozillaWiki
A list of enhancements to XUL that could be made, organized by complexity of implementation. Items
Contents
Larger Projects
These are very large tasks, that will mostly take months to complete.
- rework widgets and clean up based on XBL2
- move box object positioning apis onto XUL element class
- remove box objects by implementing frame, scroll, list and tree apis as XUL element subclasses, or using helper native objects bug 350264
- events firing on script change, or during constructor, versus user change bug 533457
- remove as many hardcoded tag checks as possible, switch to interfaces
- remove special classes for images on menus, buttons, statusbars, etc.
- rework flexible box model
- animation apis for XUL elements
- clipboard using DataTransfer, this task is already is progress bug 407983
- allow multicolumns for grids (column hiding, rearranging, resizing, sorting)
- multiple cell selection for grids?
- support for rowspan/colspan type capabilities for grids
- scroll apis bug 364612
- clean up scrollbar mediator
- better command updating mechanism
- better editor mechanism (editortype/controllers/etc)
- base theme so custom themes are minimal bug 305746
- parsing from DOMParser and others should be able to xul documents bug 352052
- better interworking with xul in generic xml documents, mostly issues around whitespace handling
- improved panel behaviours
- dockable and undockable panels
- printing bug 188836
- accessibility events should just be direct function calls
- OS taskbar/dock/titlebar icons/menus Windows part is bug 325353
- ensure baseline alignment works
- make autocomplete more general so it can be used from arbitrary text and non-UI use
- support arbitrary content in trees
- scoped script evaluation: <script src="..." scope="id" share="none|document|application"/>
- application level scripts
- better editor capability for textboxes (tags/keyword editing for example)
- investigate changing default browser type to type="content"
More Challenging Medium Projects
These are size projects with significant scope.
- remove need to import global stylesheet bug 306475
- panning over area and between 'panes'
- allowevents / mousethrough consolidation bug 533533
- control over click raises window versus raise and fire mouseclick behaviour [bug 392188]
- use ref instead of id attributes in generated template content bug 533345
- improved recursion support for templates
- clean up odd frame construction usage for listbox
- popupshowing event should have a popupScreenRect property to flush layout and get the eventual screen rectangle of the popup
- have the titlebar display a native appearance, in normal and thin sizes bug 533346
- ability to retrieve mouse and key state
- add support for custom editors for particular cells or columns in a tree
- multiple cell selection for trees
- toggle button groups (type="button") bug 533523
- multiple thumbs for setting ranges on a scale
- tick marks for scale bug 349545
- native theming work needed for other button display styles (XBL2)
- window icons
Simpler Medium Projects
These are average size tasks.
- generic spellchecking apis bug 533712
- custom drag images using popups bug 533460
- move PerformAccessKey into script bug 533710
- reimplement a better colorpicker, ideally, allowing a native colorpicker to be used bug 242840
- fix up the way margins on menupopups are handled to better work when flipped
- support menus with mixed content (not just menuitems)
- sharing menu button menus, context menus and top level menus
- scrolling menus positioning bug 342619
- improvements to panel positioning so that the position can be maintained relative to anchor (like dependent popups)
- allow panels that don't do flipping when at the edge of the screen
- three state checkboxes bug 533716
- optional label and buttons (close, dock, minimize) on the titlebar
- element attribute on titlebar to indictate what element gets moved, much as resizer does
- list drag and drop and clipboard operations (onitemadded, onitemremoved, onitemmoved events; onitemadded called when item is created but before it is inserted. Cancelling the event will prevent the item from being added)
- means to know if an image applies to an element
- filepicker, with browse button bug 533725
- rubberband selector
- resizer handles
- fontpicker
- remove view usage from deck
- cross theme and platform stock icons bug 533540
- handling of autocomplete results from a preset list (non-component usage)
- better splitter handling for trees (no class needed for example)
- tooltips in browser content supported by default, but overridable; tooltip type="content" with FillInHTMLTooltip implementation
- modify default tooltip
- custom popup events, with popupNode and the node the popup/content/tooltip attribute is on bug 383930
- fix up or add button types: menu, menu-button, checkbox (toggle buttons) (XBL2)
- cleanup button frame and binding code (XBL2)
- better editable menulist appearance, needs theme work
- image buttons / buttons that fit to text/image bug 533343
- alternate preference storage
- update statustext for menus and other elements
- setting width or height shouldn't affect layout of a popup when not open bug 533714
- ensure all window features work, some may be more useful on window itself
Smaller Projects
These projects are fairly small and don't tend to have any dependencies on other components.
- in the preferences dialog, switch to using tabs rather than radiogroup bug 456260
- improved sorting flags for templates bug 379745
- support appearance of <resizer> in all directions. Currently, only bottomright (and bottomleft on Mac at least) are supported.
- consolidate RegUnregAccessKey implementations bug 533708
- allow minimum and maximum values for datepickers and timepickers
- allow the selection of ranges for datepickers and timepickers
- allow certain values such as the year to be left blank in a datepicker
- allow null values in datepickers and timepickers bug 376705
- better localization handling for datepicker and timepicker (a larger task is just improving toLocaleFormat)
- link bug 353345
- expand/collapser
- add edit with a menulist cells for editing in trees
- allow toolbars on other sides of the window, mostly theme work
- allow tabs along other sides
- better way to adjust toolbar defaultset
Simple Projects
These projects can be done in very short time and don't have any dependencies on other components.
- events when starting and stopping tree editing bug 533344
- add natural width and height properties bug 533541
- text style elements
- mediacontrols, for video and audio. Implementation is already present, so just hook it up and possibly add some theme support
- scrollbar visible attributes