2001-06-21 eric melski * tree.tcl: Corrected keyboard navigation so that open/close commands are invoked when right/left arrows are used to open/close nodes, patch from [Bug #435097]. Also corrected keyboard navigation on right arrow press; previously only opened closed nodes that had children, but should always open nodes, regardless of whether it has children. 2001-06-11 Jeff Hobbs * pkgIndex.tcl: bumped version to 1.3.1 and added Tk 8.1.1 package require as Tcl 8.1.1 is needed in certain core areas for the new string methods. * mainframe.tcl: corrected state interpretation. It doesn't do exact argument matching, but it is consistent with the rest of BWidget. [Bug #224476] * demo/demo.tcl: fixed demo script to run when called from another directory * messagedlg.tcl: corrected winfo exists call * listbox.tcl: fixed string compare call * combobox.tcl: added package require Tk 8.3. * passwddlg.tcl: * xpm2image.tcl: * mainframe.tcl: * panedw.tcl: * utils.tcl: * entry.tcl: * dynhelp.tcl: * dragsite.tcl: * color.tcl: added braces to expr where appropriate 2000-10-31 Dan Kuchler * combobox.tcl: Added the '-exact' option to the 'lsearch' commands in the combobox code so that the correct index of items will be returned even when there are glob/regexp characters. 2000-10-10 Dan Kuchler * dynhelp.tcl: Added the '-screen' option to the toplevel that is created to display the help text to fix a bug reported by Tupone Alfredo. 2000-10-01 Eric Melski * notebook.tcl: Fixed typo in _draw_page that incorrectly placed images on tabs. 2000-09-17 Eric Melski * widget.tcl (_test_boolean): Altered to return strictly 0 or 1 (for false and true, respectively), rather than allowing the string booleans (false, true, off, on, etc). 2000-09-07 Sven Delmas * mainframe.tcl: Fixed the typo of Alt (Atl) as reported in bug # 6079. 2000-09-05 Eric Melski * label.tcl: Corrected bindtags for BWidgets Label components: primary component widget now includes the megawidget pathname in its bindtags list, so that bindings on the megawidget pathname are applied properly. 2000-08-10 Eric Melski * widget.tcl: Corrected a problem caused by the destruction of the special .#BWidget* widgets, which are used by BWidgets for some option value validations; formerly, if these were destroyed, it could confuse the BWidgets system's internal state, and creating BWidgets after destroying these helper widgets would throw an error. 2000-06-14 Dan Kuchler * dialog.tcl * dropsite.tcl * dynhelp.tcl * scrollview.tcl: Replaced several catch {unset varname} calls with if {[info exists varname]} {unset varname}. This avoids using the catch, and also prevents the ::errorInfo corruption that was happening in BWidgets. 2000-05-14 Dan Kuchler * tree.tcl: Fixed a typing error in the Tree::find procedure. The procedure wouldn't work because there was a 'llengh' where there should have been a 'llength'. 2000-05-08 Dan Kuchler * titleframe.tcl: Added a '-state' flag that is associated to the state of the label. Now that labels can be disabled (in 8.3 and beyond) this allows for the titleframe to have a disabled appearence. 2000-05-02 Eric Melski * tree.tcl: Did some fancy focus footwork [Bug: 4491]. Now you can do this: "Tree .t ; bind .t foo", and it will do the right thing. This will enable the use of proper focus-on-mouse-click bindings for trees, which in turn will fix the focus problem described in 4491. In addition, I added a binding to the canvas widget in the tree that redirects focus when it leaves the canvas and goes to the frame, just in case. * dialog.tcl: Added a -geometry option, to allow the specification of geometry for the dialog. No particular care is taken to validate the geometry string, so if it is bogus, you lose. [RFE: 5188]. 2000-04-27 Eric Melski * entry.tcl: Added smarts to handle Copy for non-editable entries (it should be allowed, but was not previously) [Bug: 3755]. * notebook.tcl: Small tweaks for placement of images on tabs. * combobox.tcl: Added code to ensure that non-editable (but enabled) comboboxes could still be tabbed in to. 2000-04-26 Dan Kuchler * button.tcl: Fixed the bindings that get setup on buttons with an underline specified to be case insensitive (i.e if 'A' or 'a' was the underline character, Alt-A and Alt-a would both be bound to the button. 2000-03-29 Sven Delmas * tree.tcl: Added protection for the left arrow key click in case we are already at the root node. This used to throw a Tcl error (fixes bug # 4619). 2000-03-20 Eric Melski * progressbar.tcl: (configure) Added test for change to -maximum value, so that bar is redrawn if maximum changes. [Bug: 4399]. * BWman/SpinBox.html: Removed references to -label* options. * demo/select.tcl: Removed use of -label* options on ComboBox and SpinBox. [Bug: 4394]. 2000-03-14 Eric Melski * button.tcl: (configure) replaced several hasChanged calls with one hasChangedX call. * dynhelp.tcl: (sethelp) replaced several hasChanged calls with one hasChangedX call. * entry.tcl: Replaced stack of hasChanged calls with one hasChangedX (in configure); replaced a couple cget's with getMegawidgetOption's. * spinbox.tcl: Updated _test_options to use setMegawidgetOption, and to only do that if it has to, instead of always doing it. * tree.tcl: Worked on itemcget; instead of upvar'ing the one-time-use variable, just refer to it directly. * widget.tcl: One problem with [set ${class}::${path}:opt($option)] -- if path contains "foo(foo)", the command will choke. Removed that particular micro-optimization. Added setMegawidgetOption to compliment getMegawidgetOption; extended hasChangedX to accept multiple options to check. This allows us to compress stacks of hasChanged calls into a single call (so there's a single function call, and a single upvar...). 2000-03-13 Eric Melski * combobox.tcl: Tweaked bg/background options so that button didn't pick up entry background. * widget.tcl: Removed dead code; micro-optimizations to initFromODB. * tree.tcl: Added option for default -fill of tree nodes on windows. * notebook.tcl: Removed commented code. * button.tcl: * tree.tcl: * spinbox.tcl: * entry.tcl: * dropsite.tcl: * dragsite.tcl: * arrow.tcl: Replaced selected cget/getoption calls with getMegawidgetOption calls. * combobox.tcl: Removed LabelFrame from ComboBox (30% faster). * widget.tcl: Added getMegawidgetOption function, which allows direct access to megawidget-specific options (those that do not map to a component widget option). This is dangerous, because it bypasses some checks, and it will only work with options that are specific to the megawidget. However, it is much faster, and enables some functions (like visiblenodes) to be much faster. * tree.tcl: Reworked visiblenodes function to do a tree walk to find visible nodes. This is faster and more correct than the previous implementation, which queried all the nodes in the tree for their open bit. 2000-03-10 Eric Melski * widget.tcl: Replaced an upvar with a direct reference to the variable in initFromODB. * dynhelp.tcl: Changed sethelp function to use new hasChangedX function instead of hasChanged, which avoids an unneeded upvar, for a little better speed. * button.tcl: Changed to parseArgs/initFromODB format for a small (25%) speedup in creation time. 2000-03-10 Sven Delmas * tree.tcl: Changed the allnodes procedure to visiblenodes, and also the mechanism of retrieving those nodes. This took care of the previously required update. 2000-03-09 Eric Melski * entry.tcl: Added code to re-sync the -text option with the contents of the entry widget before doing configuration; this fixes [Bug: 4304]. 2000-03-09 Sven Delmas * tree.tcl: Disabled the update before the find withtag in the allnodes procedure. The nodes are apparently created delayed, so before this procedure is called, the program has to do an update. I don't do this in the procedure anymore, because it caused multiple updates, making the app slower. 2000-03-08 Sven Delmas * tree.tcl: The new allnodes procedure was not handling the "current" tag correctly. This is now stripped of. 2000-03-07 Eric Melski * button.tcl: Added check for -state flag, to initialize it properly. * entry.tcl: Changed to parseArgs/initFromODB format; added check for -text flag to initialize it properly. * labelentry.tcl: Changed to use parseArgs/initFromODB format. 2000-03-03 Eric Melski * spinbox.tcl: Added a call in setvalue to scan the current value into a float to trim out any 0 padding on the number (otherwise the zero's make it look like octal to tcl, which chokes on numbers > 8) 2000-03-07 Sven Delmas * passwddlg.tcl: Reenabled the binding to activate the ok button. * dragsite.tcl: I added an extra protection into the _begin_drag procedure to guard against a motion event that (sometimes) arrives before the press event. This fixes bug # 4324. 2000-03-03 Eric Melski * spinbox.tcl: Removed LabelFrame from SpinBox (BACKWARDS INCOMPATIBLE) to speed creation; updated configure proc to use hasChangedX instead of hasChanged, as it didn't really need the values of the options it was checking. 2000-03-01 Eric Melski * spinbox.tcl: Changed bindings to be on class SpinBox instead of BwSpinBox, and added class SpinBoxEntry to the bindtags of the SpinBox entry component. * configure.in: * pkgIndex.tcl: Bumped version to 1.3.0. * tree.tcl: Changed focus redirect to use {after idle} to avoid focus loops. * label.tcl: Added -bd 0 -highlight... etc to wrapper frame; moved class bindings to the frame instead of the component label. * utils.tcl: Added helper function BWidget::refocus, to handle focus redirection calls. * spinbox.tcl: Changed focus redirect to use {after idle} to avoid focus loops. * combobox.tcl: Changed init to parseArgs/initFromODB style; changed focus redirect to use {after idle} to avoid focus loops. 2000-02-29 Eric Melski * widget.tcl: Added bits to handle $path#subclass_that_inherits_from_other_bw_class megawidget names. * passwddlg.tcl: * progressdlg.tcl: * progressbar.tcl: Changed init to parseArgs/initFromODB style. * pkgIndex.tcl: Changed Label -> BWLabel * messagedlg.tcl: Changed initialization to parseArgs/initFromODB style. Changed to use tk_messageBox on UNIX. * labelframe.tcl: Updated to use BWLabel instead of Label. * labelentry.tcl: Added -class LabelEntry to widget. * label.tcl: Changed class name to BWLabel (to avoid option db clashes with tk labels), changed initialization to parseArgs/initFromODB style. * init.tcl: dropped obsolete Tree option from init. * dialog.tcl: changed initialization to parseArgs/initFromODB style. * notebook.tcl: Added -bd 0 -highlightthickness 0 -relief flat to the notebook container frame so geometries are correct. * entry.tcl: Fixed a conflict with configuring the Entry -text and textvariables. * dialog.tcl: added a -class option to the dialog, to allow the class of the dialog to be set (this enables proper optiondb use for things like the PasswdDlg). 2000-02-28 Eric Melski * widget.tcl: Added Widget::varForOption function, which returns a variable name that can be used to trace changes to an option for a particular megawidget (such as the -values option of a combobox). * entry.tcl: Made cget -text a little more efficient by shortcircuiting in that case. * combobox.tcl: Fixed bug #4248 by making the listbox use a -listvariable instead of trying to micromanage the listbox contents. * tests/entry.test: tests for the Entry widget. * widget.tcl: minor code cleanup. * tree.tcl: Was not getting proper default bg color on Windows, and keyboard navigation was goofy because of internal structure changes. * entry.tcl: Fixed an issue with initial foreground color not being picked up correctly. 2000-02-28 Sven Delmas * tree.tcl: Added a procedure called "allnodes" to retrieve the names of all currently defined treenodes. Apparently the internal widget structure of tree was changed recently. I adjusted the "allnodes" procedure to that. 2000-02-25 Eric Melski * combobox.tcl: Fixed a problem with non-editable comboboxes and selecting values. * arrow.tcl: Fixed a problem with the invoke method (doing one too many winfo parents in some cases) * button.tcl: * buttonbox.tcl: * combobox.tcl: * dialog.tcl: * dynhelp.tcl: * entry.tcl: (also fixed validation) * label.tcl: * labelframe.tcl: * listbox.tcl: * mainframe.tcl: * notebook.tcl: * pagesmgr.tcl: * panedw.tcl: * progressbar.tcl: * scrollview.tcl: * scrollw.tcl: * separator.tcl: * spinbox.tcl: * titleframe.tcl: * tree.tcl: Updated to new megawidget architecture. * widget.tcl: Changed internal architecture. When possible, megawidget options are stored in component widgets instead of in an intermediary array. Also, made use of option database to make megawidget creation more efficient. 2000-02-24 Eric Melski * LICENSE.txt: Removed LGPL license; added Tcl-license terms. 2000-02-23 Eric Melski * widget.tcl: Replaced _test_boolean function with a more efficient implementation. 2000-02-18 Eric Melski * images/target.xbm: Placeholder for actual icon. * color.tcl: Change env(BWIDGET_LIBRARY) to ::BWIDGET::LIBRARY; changed proc "dialogue" to "dialog" * pkgIndex.tcl: Updated function spec for color.tcl. * widget.tcl: Various minor speed tweaks; added a reverse mapping from component widget options -> mega-widget options so that subcget can be faster. * entry.tcl: * dropsite.tcl: * dragsite.tcl: * arrow.tcl: Tcl list'd the specs for Widget::declare calls. * combobox.tcl: Removed extraneous ListBox::use call. 2000-02-17 Eric Melski * notebook.tcl: Added an extra check to move the leftmost tab a touch to the right when it is not selected (again, to make the tabs more Windows-like). Also replaced redundant [string equal] checks with a stored pre-check (ie, set foo [string equal ...]). 2000-02-16 Eric Melski * notebook.tcl: Changed appearance of tabs; leftmost tab is now flush with the left of the notebook, and the tabs look more Windows-like. 2000-02-16 Sven Delmas * dialog.tcl: Added a new parameter to the draw procedure that allows me to pass in the desired geometry for the window. This was needed to support tracking of dialog window geometries. * tree.tcl: Changed the binding to use "+", so it will not overwrite existing bindings (if there are any). Also added some extra protection in the keynav procedure against the user typing on a root node (this used to cause a stack trace). 2000-02-11 Eric Melski * tree.tcl: Integrated changes from Eric Boudaillier: [itemconfigure -open ...] optimized to only call redraw_idle 3 if node has subnodes. _cross_event: itemconfigure -open called before -opencmd/closecmd; no more call to _redraw_idle (handled by other procedures) _over_cmd: allow position {root 0} when tree is empty new [find] command: [find @x,y ?confine?] if confine is "confine" returns the node at window coordinate x,y (x,y must be inside the bbox of the node) else returns the node found on the line (in pixel) pixel y [find line] returns the node on the line $line (in -deltay coords) new [line] command: [line node] returns the line where node is drawn -selectfill option added: if true, selection is draw on full width of tree (instead of just highlighting the bbox of the selected nodes) * combobox.tcl: Integrated changes from Eric Boudaillier: internal widget restructuring. * tree.tcl: Added "range" subcommand to selection. Given two nodes, node1 and node2, it will set the selection to the visible nodes between (and including) node1 and node2. If node1 or node2 is not visible, it will find the first visible ancestor of the node and use that as the start/end point instead. * listbox.tcl: Integrated changes from Eric Boudaillier: _over_cmd: allow position 0 when listbox is empty find command, similar to tree find command. * spinbox.tcl: Integrated changes from Eric Boudaillier: cosmetic changes. * color.tcl: Integrated changes from Eric Boudaillier: split widget into two commands: SelectColor::menu and SelectColor::dialog. * progressbar.tcl: Integrated changes from Eric Boudaillier: added -idle option to prevent call to update in case where task is done in idle (ie, fileevents) * scrollview.tcl: Integrated changes from Eric Boudaillier: bindings changed. * scrollw.tcl: Integrated changes from Eric Boudaillier: -managed option: if true, scrollbar are managed during creation, so their size are included in the requested size of the ScrolledWindow. If false, they are not. -sides option: specifies the side of the scrollbar. -size option: specifies size of scrollbar. -ipad option: specifies pad between scrollbar and scrolled widget. * mainframe.tcl: Integrated changes from Eric Boudaillier: support for function keys in accelerators, support for no modifier in accelerators. * notebook.tcl: Integrated changes from Eric Boudaillier: -internalborderwidth (-ibd) option specifies pad around pages; -foreground, -background, -activeforeground, -activebackground, -disabledforeground options for each tab. Code cleanup. 1999-12-23 Sven Delmas * scrollw.tcl: Added "update idletask" to scrollbar update to prevent loss of update events. 1999-12-14 Sven Delmas * combobox.tcl: When the selected item is changed, the selection is now set to the entire string. 1999-12-13 Eric Melski * buttonbox.tcl: Added a getbuttonstate function, which retrieves the value of a tag used on a button in the buttonbox. 1999-12-08 Eric Melski * combobox.tcl: Removed code that cleared entry selection on focus out events, as this crippled exportselection. 1999-10-29 Eric Melski * buttonbox.tcl: Added a gettags function, which allows the user to query the tags that are used on buttons in the buttonbox. 1999-10-29 Eric Melski * font.tcl: Added one new flag: -querysystem. This lets the user control whether the font selector queries the system (via font families) for the list of fonts, or if it uses a preset list of fonts (which is much faster and less likely to crash some systems). 1999-10-25 Eric Melski * font.tcl: Added support for two new flags: -families and -styles; -families allows you to specify one of all, fixed, or variable, to limit the choice of fonts to those fonts; -styles allows you to specify a list of styles that can be set with the widget (ie, bold, italic, etc). 1999-10-22 Eric Melski * tree.tcl: Fixed some problems with keyboard traversal. Added support for left/right arrows a la MS Explorer. Added support for keyboard-based scrolling. 1999-10-21 Sven Delmas * combobox.tcl: Added support for keyboard traversal. The widget will now tab in even when it is not editable. Also the entry widget content will be selected when the user tabs in. The key bindings now allow a traversal of the list ( brings up the list). The arrow button no longer switches to an up button, but instead changes relief. The button is now more Windows NT like (for Windows NT). Changed keyboard bindings: down/up now display/hide the listbox; control-{up|down|prev|next} move through the options without displaying the listbox. 1999-10-21 Eric Melski * tree.tcl: Added a -selectable option to tree nodes, which controls whether or not a given node is selectable (duh). This works with the new -selectcommand option for the tree, and with keyboard traversal (also new). Now, whenever the tree gets a "selection set", it calls the given -selectcommand with the name of the tree and the list of selected nodes, which makes it easier to just drop in place and use. 1999-10-15 Eric Melski * panedw.tcl: Added a -class PanedWindow option to the main frame (the megawidget) of the paned window. 1999-10-15 Eric Melski * dialog.tcl: Added an overrideredirect option to Dialog::draw, which allows the user to control the overrideredirect state of the dialog. 1999-09-19 Eric Melski * mainframe.tcl: Fixed _destroy to unset ALL state variables, so that when a new MainFrame of the same name as an old one is created, it doesn't pick up residual state from the old one. 1999-09-17 Eric Melski * notebook.tcl: Added some (non-functional) code for doing tab-notebooks with the tabs on the bottom.