Bwidget Source Code
Check-in [d1ba441b7e]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Typos in comments from ticket [38813ebb]. Thanks, lindblad
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | bwidget
Files: files | file ages | folders
SHA3-256: d1ba441b7e46010226a7069eb48e0859016030087a8f3eb8c79e84eca5af351c
User & Date: oehhar 2025-06-23 11:09:58.507
Original Comment: Typos in comments from ticket [38813ebb]. Thanks, lindbad
References
2025-06-23
11:10 Ticket [38813ebbde] typos status still Open with 4 other changes artifact: 8d118956c0 user: oehhar
Context
2025-06-24
18:46
Ticket [c847b2c6]: Add "::SelectColor::use" to pckIndex.tcl check-in: a2ca981c04 user: oehhar tags: bwidget
18:13
[378209fe] Map the class to parent class. Closed-Leaf check-in: 1119d44d62 user: oehhar tags: 378209fe-map-to-parent-class
2025-06-23
11:09
Typos in comments from ticket [38813ebb]. Thanks, lindblad check-in: d1ba441b7e user: oehhar tags: bwidget
10:52
Manpage spelling correction from ticket [c1054975] (except catched->cached in DropSite.html) Thanks, lindblad check-in: 4de3775b56 user: oehhar tags: bwidget
Changes
Unified Diff Ignore Whitespace Patch
Changes to CHANGES.txt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
____________________________________________________________
BWidget 1.2.1 (07/09/1999)

CHANGES FROM 1.2 TO 1.2.1

  This version is the first patch of 1.2. It does not introduce
  incompatibilites.
  This patch include some new requested features, that I think
  can't wait for 1.3:
     - special menu handling (see MainFrame)
     - tabs bindings in NoteBook
     - label alignment of LabelFrame
     - -repeatdelay and -repeatinterval options on SpinBox







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
____________________________________________________________
BWidget 1.2.1 (07/09/1999)

CHANGES FROM 1.2 TO 1.2.1

  This version is the first patch of 1.2. It does not introduce
  incompatibilities.
  This patch include some new requested features, that I think
  can't wait for 1.3:
     - special menu handling (see MainFrame)
     - tabs bindings in NoteBook
     - label alignment of LabelFrame
     - -repeatdelay and -repeatinterval options on SpinBox

101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
      (INCOMPATIBILITY: option -variable renamed -progressvar)
    - -menu option modified to have tags on entries and menu id on cascad menu
      (INCOMPATIBILITY of option -menu)
    - new command: getmenu
    - new command: setmenustate

* DropSite
    - operations completly reworked
    - option -droptypes modified (INCOMPATIBILITY)
    - return code of -dropovercmd modified
      bit 'ok' and bit 'recall' reverted
      (INCOMPATIBILITY in -dropovercmd command)
    - new command: setoperation

* DragSite:







|







101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
      (INCOMPATIBILITY: option -variable renamed -progressvar)
    - -menu option modified to have tags on entries and menu id on cascad menu
      (INCOMPATIBILITY of option -menu)
    - new command: getmenu
    - new command: setmenustate

* DropSite
    - operations completely reworked
    - option -droptypes modified (INCOMPATIBILITY)
    - return code of -dropovercmd modified
      bit 'ok' and bit 'recall' reverted
      (INCOMPATIBILITY in -dropovercmd command)
    - new command: setoperation

* DragSite:
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
    - less full-redraw

* NoteBook:
    - relief reworked
    - added option -leavecmd on pages
    - option -image implemented
    - new command: move
    - delete command now accept an optionnal argument specifying 
      whether the frame of the page should be destroyed or not.
      If not, this frame is reused by insert command for the same page.

* Entry and LabelEntry:
    - direct access to entry command
    - bind command added on the entry subwidget

* ComboBox:
    - option -postcommand added
    - bind command added on the entry subwidget

* SpinBox:
    - bind command added on the entry subwidget
    - floating point fixed - work needed

* ProgressBar:
    - now can be incremental or not limited ('unknow-time' processing)

* Bitmap:
    - xpm image type added with use of xpm-to-image by Roger E. Critchlow Jr.

* Lots of focus problem solved

* ...and bugs corrected.


INCOMPATIBILITIES

  Incompatibilities are very localized, so we hope that it will
  not be painfull to upgrade to 1.2.

* MainFrame related imcompatibilities
    - Upgrade MainFrame -menu option and change -variable option
      by -progressvar.

* Drag and drop related imcompatibilities
    - Upgrade -dragevent option, and command associated to -draginitcmd







|
















|












|







140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
    - less full-redraw

* NoteBook:
    - relief reworked
    - added option -leavecmd on pages
    - option -image implemented
    - new command: move
    - delete command now accept an optional argument specifying 
      whether the frame of the page should be destroyed or not.
      If not, this frame is reused by insert command for the same page.

* Entry and LabelEntry:
    - direct access to entry command
    - bind command added on the entry subwidget

* ComboBox:
    - option -postcommand added
    - bind command added on the entry subwidget

* SpinBox:
    - bind command added on the entry subwidget
    - floating point fixed - work needed

* ProgressBar:
    - now can be incremental or not limited ('unknown-time' processing)

* Bitmap:
    - xpm image type added with use of xpm-to-image by Roger E. Critchlow Jr.

* Lots of focus problem solved

* ...and bugs corrected.


INCOMPATIBILITIES

  Incompatibilities are very localized, so we hope that it will
  not be painful to upgrade to 1.2.

* MainFrame related imcompatibilities
    - Upgrade MainFrame -menu option and change -variable option
      by -progressvar.

* Drag and drop related imcompatibilities
    - Upgrade -dragevent option, and command associated to -draginitcmd
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238

Following widget have been reworked:

* ListBox:
    - ListBox items have now a -indent option.
    - insert command modified to look more as a tk
      listbox insert command (see  INCOMPATIBILITIES)
    - item command added to retreive one or more items

* Tree:
    - insert command modified to look more as a
      listbox insert command (see  INCOMPATIBILITIES)

* LabelEntry:
    - -value and -variable options renamed to -text and -textvariable
      (see  INCOMPATIBILITIES)

* SpinBox and ComboBox:
    - -value and -variable options renamed to -text and -textvariable
      (see  INCOMPATIBILITIES)
    - New command getvalue and setvalue added to manipulate
      current value by index.

* NoteBook:
    - Pages have now an identifier.
    - insert command modififed (see  INCOMPATIBILITIES)
    - page command added to retreive one or more pages
    - getframe command added


INCOMPATIBILITIES (sorry for this)

* LabelEntry, SpinBox and ComboBox:
    - -value and -variable options renamed to -text and -textvariable







|


















|







205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238

Following widget have been reworked:

* ListBox:
    - ListBox items have now a -indent option.
    - insert command modified to look more as a tk
      listbox insert command (see  INCOMPATIBILITIES)
    - item command added to retrieve one or more items

* Tree:
    - insert command modified to look more as a
      listbox insert command (see  INCOMPATIBILITIES)

* LabelEntry:
    - -value and -variable options renamed to -text and -textvariable
      (see  INCOMPATIBILITIES)

* SpinBox and ComboBox:
    - -value and -variable options renamed to -text and -textvariable
      (see  INCOMPATIBILITIES)
    - New command getvalue and setvalue added to manipulate
      current value by index.

* NoteBook:
    - Pages have now an identifier.
    - insert command modififed (see  INCOMPATIBILITIES)
    - page command added to retrieve one or more pages
    - getframe command added


INCOMPATIBILITIES (sorry for this)

* LabelEntry, SpinBox and ComboBox:
    - -value and -variable options renamed to -text and -textvariable
Changes to ChangeLog.
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
	[Patch 2807160] Text by Koen Danckaert
	Removed (read only) remark of option -scrollbar.
	
	* scrollframe.tcl (ScrollableFrame::create) changed bindings
	[Patch 2807227] by Koen Danckaert (comment)
	
	* scrollw.tcl (ScrolledWindow::_set_hscroll, ScrolledWindow::_set_vscroll)
	Bug corrected: enless loop when both scrollbars where automatically
	mapped and the window size was changed by this action (on linux).
	Scrollbar unmapping and mapping secured by a locked update [Bug 2783019]

	* widget.tcl (Widget::tkinclude) : option data base entry name keeps the
	original name and not the renamed name.
	The only resulting modification is to rename the option key for
	"MessageDlg -text" from "*MessageDlg.frame.msg.message" to







|







694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
	[Patch 2807160] Text by Koen Danckaert
	Removed (read only) remark of option -scrollbar.
	
	* scrollframe.tcl (ScrollableFrame::create) changed bindings
	[Patch 2807227] by Koen Danckaert (comment)
	
	* scrollw.tcl (ScrolledWindow::_set_hscroll, ScrolledWindow::_set_vscroll)
	Bug corrected: enldess loop when both scrollbars where automatically
	mapped and the window size was changed by this action (on linux).
	Scrollbar unmapping and mapping secured by a locked update [Bug 2783019]

	* widget.tcl (Widget::tkinclude) : option data base entry name keeps the
	original name and not the renamed name.
	The only resulting modification is to rename the option key for
	"MessageDlg -text" from "*MessageDlg.frame.msg.message" to
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
	* listbox.tcl (ListBox::create et al) new feature: listbox option
	-listbox now read/write [Bug 1501874] reported by Stephen Huntley
	
	* dynhelp.tcl (DynamicHelp::_show_help) fixed issue (as far as possible):
	Dynamic help baloon was on the main screen, if it touched the border on
	a windows multi screen configuration.
	The fix assumes, that all screens have same dimensions and no gaps in-
	between. This is necessary, because multi-screen configuration paramters
	may not be interrogated by tk (despite of coordinates out of the screen)
	[Bug 1499135] reported by Gregor

	* notebook.tcl (NoteBook::delete) Deleted also state variables
	[Bug 1445219] reported by Eric Kemp-Benedict

2009-06-25 Harald Oehlmann  <[email protected]>

	* combobox.tcl (ComboBox::getvalue et al) fixed bug: getvalue returned
	first apearence of current data instead of clicked index, which may not
	be the same if values is not unique. Additional variable _index(path)
	added to hold click index [Bug 1610965] reported by Martin Lemburg

2009-06-24 Harald Oehlmann  <[email protected]>

	* scrollframe.tcl (ScrollableFrame::create, ScrollableFrame::_resize,
	ScrollableFrame::_frameConfigure) fixed two issues:
	- Scrollbar activated even if not necessary
	  Fix: update scrolling reagion on configure event of the frame
	- Disfunction if the frame got to small to be on the current view
	  Fix: update scrolling reagion on map or unmap events
	[Patch 2807227] by Koen Danckaert
	
	* buttonbox.tcl (ButtonBox::_redraw) Bug: homogeneous button width
	not honored if button size changes after creation.
	-uniform gridding option is used if tcl version >= 8.3.
	[Patch 2807147] by Koen Danckaert
	
2009-06-16 Harald Oehlmann  <[email protected]>

	* combobox.tcl (ComboBox::_create_popup) In dropdown list,
	a vertical scrollbar was always shown if horizantal is used.
	ScrolledWindow is now called with "-managed 1".
	[Patch 2807160] by Koen Danckaert

2009-06-11 Harald Oehlmann  <[email protected]>

	* combobox.tcl removed \ before empty line (potential
	trap) [Bug 2804961] Andreas Kupries







|


















|
|
|










|







716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
	* listbox.tcl (ListBox::create et al) new feature: listbox option
	-listbox now read/write [Bug 1501874] reported by Stephen Huntley
	
	* dynhelp.tcl (DynamicHelp::_show_help) fixed issue (as far as possible):
	Dynamic help baloon was on the main screen, if it touched the border on
	a windows multi screen configuration.
	The fix assumes, that all screens have same dimensions and no gaps in-
	between. This is necessary, because multi-screen configuration parameters
	may not be interrogated by tk (despite of coordinates out of the screen)
	[Bug 1499135] reported by Gregor

	* notebook.tcl (NoteBook::delete) Deleted also state variables
	[Bug 1445219] reported by Eric Kemp-Benedict

2009-06-25 Harald Oehlmann  <[email protected]>

	* combobox.tcl (ComboBox::getvalue et al) fixed bug: getvalue returned
	first apearence of current data instead of clicked index, which may not
	be the same if values is not unique. Additional variable _index(path)
	added to hold click index [Bug 1610965] reported by Martin Lemburg

2009-06-24 Harald Oehlmann  <[email protected]>

	* scrollframe.tcl (ScrollableFrame::create, ScrollableFrame::_resize,
	ScrollableFrame::_frameConfigure) fixed two issues:
	- Scrollbar activated even if not necessary
	  Fix: update scrolling region on configure event of the frame
	- Dysfunction if the frame got to small to be on the current view
	  Fix: update scrolling region on map or unmap events
	[Patch 2807227] by Koen Danckaert
	
	* buttonbox.tcl (ButtonBox::_redraw) Bug: homogeneous button width
	not honored if button size changes after creation.
	-uniform gridding option is used if tcl version >= 8.3.
	[Patch 2807147] by Koen Danckaert
	
2009-06-16 Harald Oehlmann  <[email protected]>

	* combobox.tcl (ComboBox::_create_popup) In dropdown list,
	a vertical scrollbar was always shown if horizontal is used.
	ScrolledWindow is now called with "-managed 1".
	[Patch 2807160] by Koen Danckaert

2009-06-11 Harald Oehlmann  <[email protected]>

	* combobox.tcl removed \ before empty line (potential
	trap) [Bug 2804961] Andreas Kupries
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
2004-09-02  Jeff Hobbs  <[email protected]>

	* buttonbox.tcl, combobox.tcl: code safety fixes

	* dialog.tcl: default button width to -11 on Win8.4, 8 otherwise

	* color.tcl, font.tcl, messagedlg.tcl:
	* passwddlg.tcl, progressdlg.tcl: change dialogs to anchor buttons e

	* statusbar.tcl: better -bg handling (configure too), and tighten
	up spacing on resize control to place it flush bottom right

2004-09-01  Jeff Hobbs  <[email protected]>

	* statusbar.tcl: add -showseparator optional horizontal separator.







|







1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
2004-09-02  Jeff Hobbs  <[email protected]>

	* buttonbox.tcl, combobox.tcl: code safety fixes

	* dialog.tcl: default button width to -11 on Win8.4, 8 otherwise

	* color.tcl, font.tcl, messagedlg.tcl:
	* passwddlg.tcl, progressdlg.tcl: change dialogues to anchor buttons e

	* statusbar.tcl: better -bg handling (configure too), and tighten
	up spacing on resize control to place it flush bottom right

2004-09-01  Jeff Hobbs  <[email protected]>

	* statusbar.tcl: add -showseparator optional horizontal separator.
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586

	* scrollw.tcl: complete rewrite of ScrolledWindow widget to
	address infinite loop scrollbar problems.  This one is much
	simpler and does not suffer the infinite loop.  There still seems
	to be an issue with shrinking smaller than one scrollbar width /
	height in size, but that's not common (nor fatal).  Addresses
	[Patch #671821, #520903] [Bug #472718, #564691]
	This may introduce new incompatabilities, but it does work as
	expected for noted bugs and in the demos.

	* widget.tcl: code cleanup
	* scrollframe.tcl: code cleanup

2003-02-24  Jeff Hobbs  <[email protected]>








|







1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586

	* scrollw.tcl: complete rewrite of ScrolledWindow widget to
	address infinite loop scrollbar problems.  This one is much
	simpler and does not suffer the infinite loop.  There still seems
	to be an issue with shrinking smaller than one scrollbar width /
	height in size, but that's not common (nor fatal).  Addresses
	[Patch #671821, #520903] [Bug #472718, #564691]
	This may introduce new incompatibilities, but it does work as
	expected for noted bugs and in the demos.

	* widget.tcl: code cleanup
	* scrollframe.tcl: code cleanup

2003-02-24  Jeff Hobbs  <[email protected]>

1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
	The procedure wouldn't work because there was a 'llengh' where there
	should have been a 'llength'.

2000-05-08  Dan Kuchler  <[email protected]>

	* 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  <[email protected]>

	* tree.tcl: Did some fancy focus footwork [Bug: 4491].  Now you
	can do this: "Tree .t ; bind .t <Button-1> 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







|







1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
	The procedure wouldn't work because there was a 'llengh' where there
	should have been a 'llength'.

2000-05-08  Dan Kuchler  <[email protected]>

	* 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 appearance.

2000-05-02  Eric Melski  <[email protected]>

	* tree.tcl: Did some fancy focus footwork [Bug: 4491].  Now you
	can do this: "Tree .t ; bind .t <Button-1> 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
Changes to dynhelp.tcl.
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
        set  height    [winfo reqheight $_top]

        # On windows multi screen configurations, the virtual screen may start
        # at negative positions.
        set scrrootx [winfo vrootx .]
        set scrrooty [winfo vrooty .]
        
        # Increment the required size by the deplacement from the passed point
        incr width 8
        incr height 12
        
        # Put at the right border if going over it
        if { $x+$width > $scrrootx+$scrwidth } {
            set x [expr {$scrwidth + $scrrootx - $width + 8}]
        } else {







|







701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
        set  height    [winfo reqheight $_top]

        # On windows multi screen configurations, the virtual screen may start
        # at negative positions.
        set scrrootx [winfo vrootx .]
        set scrrooty [winfo vrooty .]
        
        # Increment the required size by the displacement from the passed point
        incr width 8
        incr height 12
        
        # Put at the right border if going over it
        if { $x+$width > $scrrootx+$scrwidth } {
            set x [expr {$scrwidth + $scrrootx - $width + 8}]
        } else {
Changes to entry.tcl.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# ------------------------------------------------------------------------------

namespace eval Entry {
    Widget::define Entry entry DragSite DropSite DynamicHelp

    # Note:  -textvariable is pulled off of the tk entry and put onto the
    # BW Entry so that we avoid the TkResource test for it, which screws up
    # the existance/non-existance bits of the -textvariable.
    if {[Widget::theme]} {
	Widget::tkinclude Entry ttk::entry :cmd \
	    remove { -state -textvariable }
    } else {
	Widget::tkinclude Entry entry :cmd \
	    remove { -state -background -foreground -textvariable
		     -disabledforeground -disabledbackground }







|







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# ------------------------------------------------------------------------------

namespace eval Entry {
    Widget::define Entry entry DragSite DropSite DynamicHelp

    # Note:  -textvariable is pulled off of the tk entry and put onto the
    # BW Entry so that we avoid the TkResource test for it, which screws up
    # the existence/non-existence bits of the -textvariable.
    if {[Widget::theme]} {
	Widget::tkinclude Entry ttk::entry :cmd \
	    remove { -state -textvariable }
    } else {
	Widget::tkinclude Entry entry :cmd \
	    remove { -state -background -foreground -textvariable
		     -disabledforeground -disabledbackground }
Changes to listbox.tcl.
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
    variable $path
    upvar 0  $path data

    frame $path -class ListBox -bd 0 -highlightthickness 0 -relief flat \
	-takefocus 0
    # For 8.4+ we don't want to inherit the padding
    catch {$path configure -padx 0 -pady 0}
    # widget informations
    set data(nrows) -1

    # items informations
    set data(items)    {}
    set data(seeitem)  {}
    set data(selitems) {}

    # update informations
    set data(upd,level)   0
    set data(upd,afterid) ""
    set data(upd,level)   0
    set data(upd,delete)  {}

    # drag and drop informations
    set data(dnd,scroll)   ""
    set data(dnd,afterid)  ""
    set data(dnd,item)     ""

    eval [list canvas $path.c] [Widget::subcget $path .c] \
	[list -xscrollincrement 8]
    pack $path.c -expand yes -fill both







|


|




|





|







122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
    variable $path
    upvar 0  $path data

    frame $path -class ListBox -bd 0 -highlightthickness 0 -relief flat \
	-takefocus 0
    # For 8.4+ we don't want to inherit the padding
    catch {$path configure -padx 0 -pady 0}
    # widget information
    set data(nrows) -1

    # items information
    set data(items)    {}
    set data(seeitem)  {}
    set data(selitems) {}

    # update information
    set data(upd,level)   0
    set data(upd,afterid) ""
    set data(upd,level)   0
    set data(upd,delete)  {}

    # drag and drop information
    set data(dnd,scroll)   ""
    set data(dnd,afterid)  ""
    set data(dnd,item)     ""

    eval [list canvas $path.c] [Widget::subcget $path .c] \
	[list -xscrollincrement 8]
    pack $path.c -expand yes -fill both
Changes to notebook.tcl.
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
    if { ![info exists data(textid)] } {
        set data(textid) [$path.c create text 0 -100 -font $font -anchor nw]
    }
    set id $data(textid)
    $path.c itemconfigure $id -font $font
    foreach page $data(pages) {
        $path.c itemconfigure $id -text [Widget::cget $path.f$page -text]
	# Get the bbox for this text to determine its width, then substract
	# 6 from the width to account for canvas bbox oddness w.r.t. widths of
	# simple text.
	foreach {x1 y1 x2 y2} [$path.c bbox $id] break
	set x2 [expr {$x2 - 6}]
        set wtext [expr {$x2 - $x1 + 20}]
        if { [set img [Widget::cget $path.f$page -image]] != "" } {
            set wtext [expr {$wtext + [image width $img] + 4}]







|







542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
    if { ![info exists data(textid)] } {
        set data(textid) [$path.c create text 0 -100 -font $font -anchor nw]
    }
    set id $data(textid)
    $path.c itemconfigure $id -font $font
    foreach page $data(pages) {
        $path.c itemconfigure $id -text [Widget::cget $path.f$page -text]
	# Get the bbox for this text to determine its width, then subtract
	# 6 from the width to account for canvas bbox oddness w.r.t. widths of
	# simple text.
	foreach {x1 y1 x2 y2} [$path.c bbox $id] break
	set x2 [expr {$x2 - 6}]
        set wtext [expr {$x2 - $x1 + 20}]
        if { [set img [Widget::cget $path.f$page -image]] != "" } {
            set wtext [expr {$wtext + [image width $img] + 4}]
Changes to utils.tcl.
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
    }
    return
}

## These mirror tk::(Set|Restore)FocusGrab

# BWidget::SetFocusGrab --
#   swap out current focus and grab temporarily (for dialogs)
# Arguments:
#   grab	new window to grab
#   focus	window to give focus to
# Results:
#   Returns nothing
#
proc BWidget::SetFocusGrab {grab {focus {}}} {







|







517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
    }
    return
}

## These mirror tk::(Set|Restore)FocusGrab

# BWidget::SetFocusGrab --
#   swap out current focus and grab temporarily (for dialogues)
# Arguments:
#   grab	new window to grab
#   focus	window to give focus to
# Results:
#   Returns nothing
#
proc BWidget::SetFocusGrab {grab {focus {}}} {
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
    catch {::grab $grab}
    if {[winfo exists $focus]} {
	::focus $focus
    }
}

# BWidget::RestoreFocusGrab --
#   restore old focus and grab (for dialogs)
# Arguments:
#   grab	window that had taken grab
#   focus	window that had taken focus
#   destroy	destroy|withdraw - how to handle the old grabbed window
# Results:
#   Returns nothing
#







|







543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
    catch {::grab $grab}
    if {[winfo exists $focus]} {
	::focus $focus
    }
}

# BWidget::RestoreFocusGrab --
#   restore old focus and grab (for dialogues)
# Arguments:
#   grab	window that had taken grab
#   focus	window that had taken focus
#   destroy	destroy|withdraw - how to handle the old grabbed window
# Results:
#   Returns nothing
#
Changes to widget.tcl.
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
	set pathinit($option) $pathopt($option)
    }
}

# Bastien Chevreux ([email protected])
#
# copyinit performs basically the same job as init, but it uses a
#  existing template to initialize its values. So, first a perferct copy
#  from the template is made just to be altered by any existing options
#  afterwards.
# But this still saves time as the first initialization parsing block is
#  skipped.
# As additional bonus, items that differ in just a few options can be
#  initialized faster by leaving out the options that are equal.








|







601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
	set pathinit($option) $pathopt($option)
    }
}

# Bastien Chevreux ([email protected])
#
# copyinit performs basically the same job as init, but it uses a
#  existing template to initialize its values. So, first a perfect copy
#  from the template is made just to be altered by any existing options
#  afterwards.
# But this still saves time as the first initialization parsing block is
#  skipped.
# As additional bonus, items that differ in just a few options can be
#  initialized faster by leaving out the options that are equal.