Bwidget Source Code
Check-in [0371bea522]
Not logged in

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

Overview
Comment:Place the bubblehelp correctly within the virtual screen [b64e03e548].
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | bwidget
Files: files | file ages | folders
SHA1: 0371bea522cf0b39a9976849a2387a3807417157
User & Date: oehhar 2015-11-04 09:51:24.886
References
2015-11-04
09:57 Closed ticket [b64e03e548]: Multi monitors issue on Windows plus 9 other changes artifact: 23d4a7878f user: oehhar
Context
2015-12-08
18:18
8.4 compatibility was broken due to the use of min/max math functions. Ticket [0aef856302] check-in: b765b56d04 user: oehhar tags: bwidget
2015-11-04
09:51
Place the bubblehelp correctly within the virtual screen [b64e03e548]. check-in: 0371bea522 user: oehhar tags: bwidget
2015-10-18
17:57
BWidget 1.9.9 release check-in: 346e8c2d46 user: oehhar tags: bwidget, bwidget-1-9-9
Changes
Unified Diff Ignore Whitespace Patch
Changes to ChangeLog.






1
2
3
4
5
6
7






2015-10-18 Harald Oehlmann <[email protected]>

	**** BWidget 1.9.9 tagged ****

2015-03-18 Harald Oehlmann <[email protected]>

	widget.tcl: Widget::define got new parameter -namespace,
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
2015-11-04 Harald Oehlmann <[email protected]>
	dynhelp.tcl: Drop the asumption that all windows
	screen are the same size (of fix dated 2009-06-26)
	and use the virtual screen information to place the bubble
	help. Ticket [b64e03e548].

2015-10-18 Harald Oehlmann <[email protected]>

	**** BWidget 1.9.9 tagged ****

2015-03-18 Harald Oehlmann <[email protected]>

	widget.tcl: Widget::define got new parameter -namespace,
Changes to dynhelp.tcl.
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#  Command DynamicHelp::sethelp
# ----------------------------------------------------------------------------
proc DynamicHelp::sethelp { path subpath {force 0}} {
    foreach {ctype ctext cvar} [Widget::hasChangedX $path \
	    -helptype -helptext -helpvar] break
    if { $force || $ctype || $ctext || $cvar } {
	set htype [Widget::cget $path -helptype]
        switch $htype {
            balloon {
                return [register $subpath balloon \
			[Widget::cget $path -helptext]]
            }
            variable {
                return [register $subpath variable \
			[Widget::cget $path -helpvar] \







|







109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#  Command DynamicHelp::sethelp
# ----------------------------------------------------------------------------
proc DynamicHelp::sethelp { path subpath {force 0}} {
    foreach {ctype ctext cvar} [Widget::hasChangedX $path \
	    -helptype -helptext -helpvar] break
    if { $force || $ctype || $ctext || $cvar } {
	set htype [Widget::cget $path -helptype]
        switch -- $htype {
            balloon {
                return [register $subpath balloon \
			[Widget::cget $path -helptext]]
            }
            variable {
                return [register $subpath variable \
			[Widget::cget $path -helpvar] \
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711

712
713
714
715
716

717
718
719
720
721
722
723
724
	if {![winfo exists $_top]} {return}

        set  scrwidth  [winfo vrootwidth  .]
        set  scrheight [winfo vrootheight .]
        set  width     [winfo reqwidth  $_top]
        set  height    [winfo reqheight $_top]

        # On windows multi screen configurations, coordinates may get outside
        # the main screen. We suppose that all screens have the same size
        # because it is not possible to query the size of the other screens.
        
        set screenx [expr {$x % $scrwidth} ]
        set screeny [expr {$y % $scrheight} ]
        
        # Increment the required size by the deplacement from the passed point
        incr width 8
        incr height 12
        

        if { $screenx+$width > $scrwidth } {
            set x [expr {$x + ($scrwidth - $screenx) - ($width - 8)}]
        } else {
            incr x 8
        }

        if { $screeny+$height > $scrheight } {
            set y [expr {$y - $height}]
        } else {
            incr y 12
        }

        wm geometry  $_top "+$x+$y"
        update idletasks







|
<
<
|
|
|





>
|
|



>
|







694
695
696
697
698
699
700
701


702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
	if {![winfo exists $_top]} {return}

        set  scrwidth  [winfo vrootwidth  .]
        set  scrheight [winfo vrootheight .]
        set  width     [winfo reqwidth  $_top]
        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 {
            incr x 8
        }
        # Put above widget if below is no space
        if { $y+$height > $scrrooty+$scrheight } {
            set y [expr {$y - $height}]
        } else {
            incr y 12
        }

        wm geometry  $_top "+$x+$y"
        update idletasks