Unnamed Fossil Project

Artifact [0a6169c869]
Login

Artifact [0a6169c869]

Artifact 0a6169c8696b28f458ee62cdebb4ff8619bd1b5f2a507a6b81fce74bec6d00ff:



[14 Jun 2004]: WidgetDestroyed -- check Tcl_InterpDeleted(corePtr->interp),
other Possibly Bad Things.

[12 Jun 2004] Argh.  WidgetSubcommandProcs take arguments in 
different order than Tcl_ObjCmdProcs (closure last vs. closure first).
Sigh.

[8 Jun 2004]: Possibly: treat "-state active" the same as "-state normal".

[8 Jun 2004]: TraceVariable -- Variable trace procedures should
return 'void' for now, since we're not doing anything with the
return value.

[May 2004]: leaving -width option default blank causes 
BWidget incompatibilities (breaks Label).  Setting a default
overrides theme defaults.  Decide which is more important.

[30 Apr 2004]: dkf_fontSel dialog problems: 
sample text frame sets -width and -height options,
which TFrame doesn't use.  (Rationale: height and width 
of a frame are normally controlled by geometry manager 
based on children.   This turns out to be wrong: 
[grid/pack propagate $f 0] can be used to make the
frame's -width/height take precedence. (only do this
in FrameConfigure though, otherwise layout blinks.) [fixed 11 May 2004]
dkf_fontSel also uses resource-queries on scratch widgets
(like BWidget does) for label -font resource; this breaks. [fixed 10 May 2004]

[23 Apr 2004]: TODO: Add  <<Invoke>> bindings for TLabel and TLabelframe
(set focus to next focusable sibling / first focusable child).

[5 Apr 2004, JH]: "change the padding of a tnotebook dynamically doesn't
force a resize of the children"

22 Apr 2004: Focus problems w/notebook widget: mnemonic activation
can leave focus on unmapped widget.

Consider: Pass 'state' to element geometry procs too?

Progressbars should not take focus.
 
[3 Apr 2004] Vertical progress bars should grow up, not down.

[19 Mar 2004]: Documentation: consistentize terminology:
	+ the "-command" option is a _script_ which is _evaluated_.
	+ Widgets have "options" (not "resources", that's an Xt thing...)
	+ Decide one way or the other "tfoobutton" or "foobutton".

(TMML keywords index: idea: specify a list of common prefixes
to strip when sorting, so eg "TTK_Box" is sorted under "B",
not under "T" with all the rest of the "TTK_" stuff.
Also: Remove duplicates in column 2.)

[Configure] -- any way to specify a minimum Tk dependency in configure script?

[20 Feb 2004]: generic/layout.c(BuildLayout): Don't Panic.

[14 Mar 2004]: menubuttons -- popdown -- should stay in {pressed active} state
until the menu is dismissed.
Oddity: On XP: click menubutton (tile or standard) to post menu;
move mouse away; other widgets still get <Enter> and <Leave> events 
until the mouse enters the menu; then others stop hot-tracking.

[14 Mar 2004] TODO: double-check menubutton state transitions on X11.
[Checked; they were wrong.  Still are, actually, but it's
difficult to get this right without cooperation from the [menu]
widget implementation.]

[14 Mar 2004]: pixmapTheme.c -- need to do error-checks re: missing
images earlier.

[14 Mar 2004]: Consider using Tcl_BackgroundError() where appropriate.
(Note: it's probably not appropriate during <Expose> processing,
unless the error condition can be fixed or disabled.)

[22 Feb 2004]: Don't use SystemButtonFace as default background
in classic or other non-Windows themes (unless you also use
SystemWindowText as default foreground) -- some high-contrast
color schemes use white-on-black.

[21 Feb 2004]: TODO: work out sensible fallback algorithm for
layouts and styles, so users can define custom styles without
having to worry about every possible theme.

[21 Feb 2004]: Display/layout glitch: demo program, XP theme:
"Close button" in "Widget states" dialog is the wrong size when
first created.  Reselecting the theme fixes.  
Suspicion: perhaps GetThemePartSize() doesn't work when the window 
is not realized, so initial geometry wrong?  But why just this widget?
Another bug in [grid]? [Probably fixed, 16 Mar 2004] [Fix confirmed]

@@@ [10 Feb 2004] Revisit label/compound element: this is starting
    to really bother me.

@@@ [10 Feb 2004] New bug: label/compound element: 
    -anchor and -width do not mix.  [fixed]

@@@ TODO: SOON: Plug all memory leaks.  Lots of known ones,
    possibly a few unknown ones too.

@@@ BUG: <<ThemeChanged>> messages not processed if widget is not realized.
    (See also: bug #835997) [fixed, 16 Mar 2004].

@@@ Issue: Don't even think about using the Tile widgets on a PseudoColor 
    visual.  All hell breaks loose.  (This is another instance of the
    resource management problem affecting fonts and images).
    [Should be fixed now, 12 Feb 2004]

Issue: May need state-based dynamic widget settings too
(most useful: -image and -cursor).

AllocateResource: Tk_GetFont() calls are extremely expensive
unless the font is already in use.  Using named fonts doesn't help.
Same is probably true for colors and borders, and is definitely
true for images. [Should be fixed now, 12 Feb 2004]

@@@ Investigate performance issues.  TWS is getting to be 
    as slow as GTK+. [see above] [much better now]

Problem: [style map TNotebook -borderwidth { focus 2  {} 1 }]
doesn't do the right thing: will normally use the default 1
when computing geometry, which will not allocate enough space
for when the widget has focus.  Possible solutions:
    + special-case: add -maxborderwidth option
    + add 'geometry' state bit, user can specify { geometry 2 focus 2 {} 1}

Possibly: Issue <<WorldChanged>>, <<ThemeChanged>> virtual events
    [Q: Can we register a C-language event handler for these?] 
    [A: Yes.]
    [done; but see BUG, above] [above BUG fixed now]

@@@ NEED: introspection/debugging features 
    (what elements make up a layout, what resources get set, &c).

@@@ [style default/map] -- make sure changes get propagated to ElementImpl's.
    [style map] -- validate statemaps [done]

@@@ change TTK_LAYOUT_AROUND to TTK_LAYOUT_BORDER; update WidgetGeometry()
   to use TTK_LAYOUT_BORDER-tagged element to set internal padding.
   [On second thought, don't.  May not be necessary]

@@@ 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).
	[ Fixed now, 28 Jan 2004 ]


@@@ TTK_LayoutFindNode, [$sb identify], &c -- need a way to identify
    nodes by name instead of class. [??? Probably not needed anymore ???] 

~~ Layout engine:
    + Reimplement; the current design is subtly but fatally flawed.
      [ done, 28 Jan 2004 ]

    + Change ElementSpec draw procedure to take a TTK_Box instead
      of separate x, y, width, height arguments. [done, 9 Mar 2004]

~~ General:
    + Use TK_OPTION_STRING instead of TK_OPTION_END for TTK_OPTION_ANY [done]
    + 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 [done]
    + Need: windows-native theme (use native (non-XP-theme) widgets) [started]
    + 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)
    + Consider: distinguish "engines" from "themes" a la Gnome --
      "engines" provide specific element implementations, themes
      bind them to individual elements.  Rationale: a theme
      may want to pick up e.g., borders from altTheme, 
      other elements drawn using pixmap element from pixmapTheme,
      frame borders from classic theme.
      (Maybe not; an "engine" is just a package that defines elements
      or element factories, no need to make this a first-class entity).

~~ Frames, labelframes:
    + Need -width, -height options.  These don't have any effect
      if you use [pack] or [grid], but may be useful for [place]

~~ Buttons, checkbuttons, radiobuttons:
    + Label widgets should take -relief option, possibly -borderwidth 
    + rename 'compound' element to 'label', 'label' => 'text' [done]
    + add -width resource to text element; negative -width => minimum. [done]
    + [$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...)
      [fixed, but this broke -anchor option]
    + check/radiobutton -anchor option does not work in alt theme.
      (Can either get focus ring in the right place or a working -anchor,
      but not both.)
    + alt theme: buttons: move focus ring back into BorderElement;
      this shouldn't shift in/out on press/release. 
      (OR: move shift in/out logic from PressableBorderElement 
      into PaddingElement -- better solution) [done, 5Apr2004]
    + Schedule redraw/resize when image changes.

~~ Scrollbars:
    + classic theme: scrollbar arrows don't look quite right.
    + alt theme: scrollbar arrows don't look quite right. [should be fixed]
    + scrollbar elements don't activate/prelight on hover. [fixed]

~~ Notebook: (suggestions from dkf)
    + Track active state for tabs [done]
    + add [$nb index current] [done]
    + Generate <<NotebookTabChanged>> on raise. [done]
    + Possibly: [$nb index $labelName] -- interpret $labelName as pattern.
      (Not done: conflicts with [$nb index current], [$nb index end];
      not very useful in the context of L10N)
    + a way to reorder tabs, and insert tabs at places other than the end
      [$nb insert $idx $child options...]; if $child is already in,
    	this moves it?
    + Ctrl-Tab / Ctrl-Shift-Tab to switch panes
    [this is turning out to be rather tricky to do ...]
    [Resolution: Won't do. Ctrl-Tab is the only way to tab out of a Text
    widget, don't want to override this.]
    [Changed mind: DKF convinced me that this is really desirable.
     Still don't know how to do it.]
    [22 Apr 2004: Done, finally]
    + On raise -- set focus to first child of raised pane. [no, don't]
    + Possibly: allow focus on tabs?  (<Key-Left>, <Key-Right> switches tabs)
      Better: Focus on notebook widget, current tab implicitly has focus. [done]
    + Possibly: [$nb select] instead of [$nb raise] [done]
    + Possibly: a way to pack widgets inside tabs (gtk+), and/or in 
      the area to the right of the tabs (Mozilla).
    + -sticky option for panes -- determine how to place child
      widget in client parcel [done]
    + Possibly (but probably not): allow non-child widgets to 
      be added as panes (not supporting this simplifies things
      a LOT though).
    + Possibly: -raisecommand, -leavecommand for tabs?
    + Handle case where widget is not wide enough to display all tabs
      (display left, right tabscroll arrows at right end of tab row)
      [Resolution: best approach is to squeeze all tabs.
      Scrolling tab row and stacked tabs are horrible usability-wise;
      not going to add all that complexity for the benefit
      of bad UIs.]

    + BUG: doesn't display properly if borderwidth > 1
    + Possibly: add -side {top|bottom|left|right} option;
    + Possibly: add -side option with same values as labelframe -labelanchor
    + Possibly: add per-tab -side option

~~ Windows native theme:
    + Scrollbar trough not always drawn w/right color (stippled?)
    + Pushbuttons don't show default indicator or focus ring [fixed]
    + Focus ring drawn in the wrong color
    + Check/radiobutton indicators: if you select one of the "large"
      display settings, these look wrong.
    + FrameControlElements automatically adapt to system color changes,
      elements that use a -background resource do not (maybe this
      should be fixed in Tk instead (TIP 156?))
      [fixed, 22 Feb 2004].

~ Eventually:
    + Make 'alt' theme the default (or something even simpler), 
      move Motif L&F to "classic" theme.

~ Possible refactorings:
    + Reattach Layouts to Styles?
    + Merge ElementInstances into LayoutNodes?
    + Split up tkTheme.c; it's huge.  
    + Use a tree of LayoutOps to specify layouts internally
      instead of an array of LayoutInstructions.
    + Add "-padding" (and "-ipadding"?) options to LayoutOps
    + Possibly: remove "Padding" element (or not: needed
      to make widget -padding option work.)


~ Miscellaneous:
    + See http://www.kroc.tk/tcl/tk_look
      (Update 5 Mar 2004: http://www.kroc.tk/tclkit/tile_demo.kit ;
       imported into tile.)
    + http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&threadm=3FBD203B.20303%@activestate.com&rnum=47&prev=/groups%3Fq%3Dtktable%26start%3D40%26hl%3Den%26lr%3D%26ie%3DUTF-8%26scoring%3Dd%26selm%3D3FBD203B.20303%@activestate.com%26rnum%3D47

    + From Satoshi Imai:  "An old style has the same mark of a radiobutton
      and a checkbutton.  The radiobutton of a menu thinks that the round
      mark is better based on a Windows style."  If I'm translating
      correctly, this means: "radiobuttons and checkbuttons 
      in menus should have different indicators." (Out of scope
      for Tile at the moment, as we don't have a [tmenu] widget,
      but should be considered).


~ 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.