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

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

Overview
Comment:scrollframe.tcl: use Tk8.7 TIP 518 virtual event <<NoManagedChild>> to resize client frame to 1x1 when last child is unmapped.
Timelines: family | ancestors | descendants | both | bwidget
Files: files | file ages | folders
SHA3-256:f121c862800483fba6bc9234c5cba21588b2283ea22e19ce5cadbed1250e9369
User & Date: oehhar 2018-12-11 09:19:04
Context
2018-12-11
09:38
Remove executable file lag from script and text files Leaf check-in: aaa5ff20ff user: oehhar tags: bwidget
09:19
scrollframe.tcl: use Tk8.7 TIP 518 virtual event <<NoManagedChild>> to resize client frame to 1x1 when last child is unmapped. check-in: f121c86280 user: oehhar tags: bwidget
2018-12-06
10:42
Tag BWidget 1.8.13 check-in: 51aca47e31 user: oehhar tags: bwidget, bwidget-1-9-13
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to ChangeLog.






1
2
3
4
5
6
7





2018-12-06 Harald Oehlmann <oehhar@users.sourceforge.net>

	**** BWidget 1.9.13 tagged ****

2018-11-26 Harald Oehlmann <oehhar@users.sourceforge.net>
	dialog.c: For Unix, also Bind KP_Enter for default dialog
	button invokation. Ticket [3e31f04367].
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
2018-12-11 Harald Oehlmann <oehhar@users.sourceforge.net>
	scrollframe.tcl: use Tk8.7 TIP 518 virtual event
	<<NoManagedChild>> to resize client frame to 1x1 when
	last child is unmapped.

2018-12-06 Harald Oehlmann <oehhar@users.sourceforge.net>

	**** BWidget 1.9.13 tagged ****

2018-11-26 Harald Oehlmann <oehhar@users.sourceforge.net>
	dialog.c: For Unix, also Bind KP_Enter for default dialog
	button invokation. Ticket [3e31f04367].

Changes to scrollframe.tcl.

94
95
96
97
98
99
100





101
102
103
104
105
106
107
...
250
251
252
253
254
255
256











        [list ScrollableFrame::_frameConfigure $canvas]
    # add <unmap> binding: <configure> is not called when frame
    # becomes so small that it suddenly falls outside of currently visible area.
    # but now we need to add a <map> binding too
    bind $frame <Map> \
        [list ScrollableFrame::_frameConfigure $canvas]






    bindtags $path [list $path BwScrollableFrame [winfo toplevel $path] all]

    return [Widget::create ScrollableFrame $path]
}


# ----------------------------------------------------------------------------
................................................................................
    # use [winfo] to get height & width of frame
    if {![winfo ismapped $canvas.frame]} { return }
    set height [_max [winfo height $canvas.frame] [winfo height $canvas]]
    set width  [_max [winfo width  $canvas.frame] [winfo width  $canvas]]

    $canvas:cmd configure -scrollregion [list 0 0 $width $height]
}


















>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
...
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
        [list ScrollableFrame::_frameConfigure $canvas]
    # add <unmap> binding: <configure> is not called when frame
    # becomes so small that it suddenly falls outside of currently visible area.
    # but now we need to add a <map> binding too
    bind $frame <Map> \
        [list ScrollableFrame::_frameConfigure $canvas]

    # Tk 8.7/TIP518 allows to get an event when the last child is removed.
    # In this case, we should resize to 1x1 pixel.
    bind $frame <<NoManagedChild>>\
            [list ScrollableFrame::_frameNoManagedChild $frame]
    
    bindtags $path [list $path BwScrollableFrame [winfo toplevel $path] all]

    return [Widget::create ScrollableFrame $path]
}


# ----------------------------------------------------------------------------
................................................................................
    # use [winfo] to get height & width of frame
    if {![winfo ismapped $canvas.frame]} { return }
    set height [_max [winfo height $canvas.frame] [winfo height $canvas]]
    set width  [_max [winfo width  $canvas.frame] [winfo width  $canvas]]

    $canvas:cmd configure -scrollregion [list 0 0 $width $height]
}


# ----------------------------------------------------------------------------
#  Command ScrollableFrame::_frameNoManagedChild
# ----------------------------------------------------------------------------
proc ScrollableFrame::_frameNoManagedChild {frame} {
    # There are no childs mapped any more, so resize frame to 1x1
    $frame configure -width 1 -height 1
    # Do not fix size, so set values to 0
    $frame configure -width 0 -height 0
}