XUL:Improvements

From MozillaWiki
Jump to: navigation, search

A list of enhancements to XUL that could be made, organized by complexity of implementation. Items

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