@@@ DESPERATELY NEED: introspection/debugging features
(what elements make up a layout, what resources get set, &c).
@@@ [style configure] -- make sure changes get propagated to ElementImpl's.
[style configure] -- validate statemaps
@@@ change TTK_LAYOUT_AROUND to TTK_LAYOUT_BORDER; update WidgetGeometry()
to use TTK_LAYOUT_BORDER-tagged element to set internal padding.
@@@ Layout engine BUG: TTK_LAYOUT_INSIDE, TTK_LAYOUT_BORDER nodes
must be the sole children of their parent node, otherwise
reqsize calculation is wrong. (probable cause of problem:
INSIDE/BORDER flags lack a packing specification).
@@@ TTK_LayoutFindNode, [$sb identify], &c -- need a way to identify
nodes by name instead of class.
~~ Layout engine:
+ Reimplement; the current design is subtly but fatally flawed.
+ Change ElementSpec draw procedure to take a TTK_Box * instead
of separate x, y, width, height arguments.
~~ General:
+ Need per-engine cleanup procedures. [done, PT]
+ Rethink resource allocation (AllocateResource,DeallocateResources)
+ [style configure] should schedule a WorldChanged call
+ WorldChanged handler should reload all elements
+ Need: windows-native theme (use native (non-XP-theme) widgets)
+ Need: MacOSX-native theme (ditto).
+ Need to support both "native/default" L&F and highly-customized L&F
(Ex: http://www.iit.demokritos.gr/~petasis/Tcl/PeculiarButtons.gif)
~~ Buttons, checkbuttons, radiobuttons:
+ rename 'compound' element to 'label', 'label' => 'text'
+ add -width resource to text element; negative -width => minimum.
+ [$checkbutton configure -variable foo] does not set state [fixed]
+ [$label configure -textvariable foo] does not update -text [fixed]
+ alt theme: focus ring should go around text (in check/radio buttons)
(maybe we can get away with not doing this...)
+ alt theme: buttons: move focus ring back into BorderElement;
this shouldn't shift in/out on press/release.
~~ Scrollbars:
+ classic theme: scrollbar arrows don't look quite right.
+ alt theme: scrollbar arrows don't look quite right.
+ scrollbar elements don't activate/prelight on hover. [fixed]
~~ Notebook:
+ add [$nb index current]
+ Generate <<NotebookTabChanged>> on raise.
+ [$nb index $labelName] -- interpret $labelName as pattern.
+ a way to reorder tabs, and insert tabs at places other than the end
+ Ctrl-Tab / Ctrl-Shift-Tab to switch panes.
+ [$nb insert $idx $child options...]; if $child is already in,
this moves it?
+ Possibly: [$nb select] instead of [$nb raise]
+ Possibly: a way to pack widgets inside tabs (gtk+), and/or in
the area to the right of the tabs (Mozilla).
~~ Windows:
~ Eventually:
+ Make 'alt' theme the default (or something even simpler),
move Motif L&F to "classic" theme.
~ Suggested changes to Tk:
+ Need TK_OPTION_IMAGE resource type
+ Named fonts should always have a refcount >= 1,
instead of freeing and reallocating them when the go
in and out of use.
+ Expose some of Tk's internals (esp. Windows-specific stuff):
++ TkWinGetDrawableDC
++ TkGetOptionSpec
+ Some way to invoke WorldChanged class proc of all widgets.