Определение коррректного положения встроенного окна

This commit is contained in:
svkalinin 2022-11-01 11:23:54 +03:00
parent c9d827a5d8
commit 2f5af66c5c
2 changed files with 22 additions and 10 deletions

View File

@ -394,10 +394,11 @@ namespace eval Editor {
wm transient $win . wm transient $win .
wm overrideredirect $win 1 wm overrideredirect $win 1
listbox $win.lBox -width 30 -border 2 -yscrollcommand "$win.yscroll set" -border 1 # listbox $win.lBox -width 30 -border 2 -yscrollcommand "$win.yscroll set" -border 1
ttk::scrollbar $win.yscroll -orient vertical -command "$win.lBox yview" # ttk::scrollbar $win.yscroll -orient vertical -command "$win.lBox yview"
listbox $win.lBox -width 30 -border 2 -border 1
pack $win.lBox -expand true -fill y -side left pack $win.lBox -expand true -fill y -side left
pack $win.yscroll -side left -expand false -fill y # pack $win.yscroll -side left -expand false -fill y
foreach { word } $findedVars { foreach { word } $findedVars {
$win.lBox insert end $word $win.lBox insert end $word
@ -471,16 +472,27 @@ namespace eval Editor {
# .varhelper.lBox activate $index # .varhelper.lBox activate $index
# } # }
# # bind $win.lBox <Any-Key> {Editor::ListBoxSearch %W %A} # # bind $win.lBox <Any-Key> {Editor::ListBoxSearch %W %A}
# Определям расстояние до края экрана (основного окна) и если # Определям расстояние до края экрана (основного окна) и если
# оно меньше размера окна со списком то сдвигаем его вверх # оно меньше размера окна со списком то сдвигаем его вверх
set winGeom [winfo reqheight $win] set winGeomY [winfo reqheight $win]
set winGeomX [winfo reqwidth $win]
set topHeight [winfo height .] set topHeight [winfo height .]
# puts "$x, $y, $winGeom, $topHeight" set topWidth [winfo width .]
if [expr [expr $topHeight - $y] < $winGeom] { set topLeftUpperX [winfo x .]
set y [expr $topHeight - $winGeom] set topLeftUpperY [winfo y .]
} set topRightLowerX [expr $topLeftUpperX + $topWidth]
wm geom $win +$x+$y set topRightLowerY [expr $topLeftUpperY + $topHeight]
if {[expr [expr $x + $winGeomX] > $topRightLowerX]} {
set x [expr $x - $winGeomX]
}
if {[expr [expr $y + $winGeomY] > $topRightLowerY]} {
set y [expr $y - $winGeomY]
}
wm geom $win +$x+$y
} }
proc ReleaseKey {k txt} { proc ReleaseKey {k txt} {

View File

@ -10,7 +10,7 @@ exec wish "$0" -- "$@"
###################################################### ######################################################
# Version: 2.0.0 # Version: 2.0.0
# Release: alpha # Release: alpha
# Build: 28102022165035 # Build: 01112022112028
###################################################### ######################################################
# определим текущую версию, релиз и т.д. # определим текущую версию, релиз и т.д.