add `wm transient .dialog .` to all toplevel dialogs to prevent focus robbery on cinnamon/mate desktops when some other app is always-on-top

This commit is contained in:
stefan schippers 2023-10-26 19:13:49 +02:00
parent bfc60add06
commit c68866c994
1 changed files with 36 additions and 12 deletions

View File

@ -27,6 +27,7 @@ proc inutile_line {txtlabel} {
set X [expr [winfo pointerx .inutile_line] - 60] set X [expr [winfo pointerx .inutile_line] - 60]
set Y [expr [winfo pointery .inutile_line] - 35] set Y [expr [winfo pointery .inutile_line] - 35]
wm geometry .inutile_line "+$X+$Y" wm geometry .inutile_line "+$X+$Y"
wm transient .inutile_line .
label .inutile_line.l1 -text $txtlabel label .inutile_line.l1 -text $txtlabel
entry .inutile_line.e1 -width 60 entry .inutile_line.e1 -width 60
.inutile_line.e1 delete 0 end .inutile_line.e1 delete 0 end
@ -82,9 +83,10 @@ proc inutile_get_time {} {
proc inutile_alias_window {w filename} { proc inutile_alias_window {w filename} {
catch {destroy $w} catch {destroy $w}
toplevel $w toplevel $w -class Dialog
wm title $w "(IN)UTILE ALIAS FILE: $filename" wm title $w "(IN)UTILE ALIAS FILE: $filename"
wm iconname $w "ALIAS" wm iconname $w "ALIAS"
wm transient $w .
set fileid [open $filename "RDONLY CREAT"] set fileid [open $filename "RDONLY CREAT"]
set testo [read $fileid] set testo [read $fileid]
@ -106,9 +108,10 @@ proc inutile_alias_window {w filename} {
proc inutile_help_window {w filename} { proc inutile_help_window {w filename} {
catch {destroy $w} catch {destroy $w}
toplevel $w toplevel $w -class Dialog
wm title $w "(IN)UTILE ALIAS FILE" wm title $w "(IN)UTILE ALIAS FILE"
wm iconname $w "ALIAS" wm iconname $w "ALIAS"
wm transient $w .
frame $w.buttons frame $w.buttons
pack $w.buttons -side bottom -fill x -pady 2m pack $w.buttons -side bottom -fill x -pady 2m
@ -142,9 +145,10 @@ proc inutile { {filename {}}} {
tk_messageBox -type ok -message "Please give a file name as argument" tk_messageBox -type ok -message "Please give a file name as argument"
return return
} }
toplevel .inutile toplevel .inutile -class Dialog
wm title .inutile "(IN)UTILE (Stefan Schippers, sschippe)" wm title .inutile "(IN)UTILE (Stefan Schippers, sschippe)"
wm iconname .inutile "(IN)UTILE" wm iconname .inutile "(IN)UTILE"
wm transient .inutile .
set utile_path $XSCHEM_SHAREDIR/utile set utile_path $XSCHEM_SHAREDIR/utile
set retval {} set retval {}
frame .inutile.buttons frame .inutile.buttons
@ -446,7 +450,8 @@ proc view_process_status {lb} {
proc list_running_cmds {} { proc list_running_cmds {} {
set top .processlist set top .processlist
if {[winfo exists $top]} {return} if {[winfo exists $top]} {return}
toplevel $top toplevel $top -class Dialog
wm transient $top .
set frame1 $top.f1 set frame1 $top.f1
set frame2 $top.f2 set frame2 $top.f2
set frame3 $top.f3 set frame3 $top.f3
@ -1306,9 +1311,10 @@ proc simconf {} {
} }
xschem set semaphore [expr {[xschem get semaphore] +1}] xschem set semaphore [expr {[xschem get semaphore] +1}]
set_sim_defaults set_sim_defaults
toplevel .sim -class dialog toplevel .sim -class Dialog
wm title .sim {Simulation Configuration} wm title .sim {Simulation Configuration}
wm geometry .sim 700x340 wm geometry .sim 700x340
wm transient .sim .
frame .sim.topf frame .sim.topf
set scrollframe [sframe .sim.topf] set scrollframe [sframe .sim.topf]
frame ${scrollframe}.top frame ${scrollframe}.top
@ -1892,7 +1898,8 @@ proc graph_edit_wave {n n_wave} {
set graph_sel_color [lindex $col $graph_sel_wave] set graph_sel_color [lindex $col $graph_sel_wave]
xschem setprop rect 2 $graph_selected color $col fast xschem setprop rect 2 $graph_selected color $col fast
xschem draw_graph $graph_selected xschem draw_graph $graph_selected
toplevel .graphdialog toplevel .graphdialog -class Dialog
wm transient .graphdialog .
frame .graphdialog.f frame .graphdialog.f
button .graphdialog.ok -text OK -command {destroy .graphdialog} button .graphdialog.ok -text OK -command {destroy .graphdialog}
button .graphdialog.cancel -text Cancel -command {destroy .graphdialog} button .graphdialog.cancel -text Cancel -command {destroy .graphdialog}
@ -2208,8 +2215,9 @@ proc graph_edit_properties {n} {
set geom [winfo geometry .graphdialog] set geom [winfo geometry .graphdialog]
} }
catch {destroy .graphdialog} catch {destroy .graphdialog}
toplevel .graphdialog ;# -width 1 -height 1 toplevel .graphdialog -class Dialog ;# -width 1 -height 1
wm withdraw .graphdialog wm withdraw .graphdialog
wm transient .graphdialog .
update idletasks update idletasks
set graph_selected $n set graph_selected $n
@ -3138,8 +3146,9 @@ proc load_file_dialog {{msg {}} {ext {}} {global_initdir {INITIALINSTDIR}}
set myload_retval {} set myload_retval {}
upvar #0 $global_initdir initdir upvar #0 $global_initdir initdir
if { $loadfile != 2} {xschem set semaphore [expr {[xschem get semaphore] +1}]} if { $loadfile != 2} {xschem set semaphore [expr {[xschem get semaphore] +1}]}
toplevel .load -class dialog toplevel .load -class Dialog
wm title .load $msg wm title .load $msg
wm transient .load .
set_ne myload_index1 0 set_ne myload_index1 0
if { ![info exists myload_files1]} { if { ![info exists myload_files1]} {
set myload_files1 $pathlist set myload_files1 $pathlist
@ -3709,6 +3718,7 @@ proc enter_text {textlabel {preserve_disabled disabled}} {
set rcode {} set rcode {}
toplevel .dialog -class Dialog toplevel .dialog -class Dialog
wm title .dialog {Enter text} wm title .dialog {Enter text}
wm transient .dialog .
set X [expr {[winfo pointerx .dialog] - 30}] set X [expr {[winfo pointerx .dialog] - 30}]
set Y [expr {[winfo pointery .dialog] - 25}] set Y [expr {[winfo pointery .dialog] - 25}]
@ -3861,7 +3871,8 @@ proc tclcmd {} {
if {[winfo exists .tclcmd]} { if {[winfo exists .tclcmd]} {
destroy .tclcmd destroy .tclcmd
} }
toplevel .tclcmd -class dialog toplevel .tclcmd -class Dialog
wm transient .tclcmd .
label .tclcmd.txtlab -text {Enter TCL expression. Shift-Return will evaluate} label .tclcmd.txtlab -text {Enter TCL expression. Shift-Return will evaluate}
panedwindow .tclcmd.p -orient vert panedwindow .tclcmd.p -orient vert
text .tclcmd.t -width 100 -height 3 text .tclcmd.t -width 100 -height 3
@ -3895,7 +3906,8 @@ proc tclcmd {} {
proc select_layers {} { proc select_layers {} {
global dark_colorscheme colors enable_layer global dark_colorscheme colors enable_layer
xschem set semaphore [expr {[xschem get semaphore] +1}] xschem set semaphore [expr {[xschem get semaphore] +1}]
toplevel .sl -class dialog toplevel .sl -class Dialog
wm transient .sl .
if { $dark_colorscheme == 1 } { if { $dark_colorscheme == 1 } {
set txt_color black set txt_color black
} else { } else {
@ -3962,8 +3974,9 @@ proc select_layers {} {
proc color_dim {} { proc color_dim {} {
global dim_bg dim_value enable_dim_bg global dim_bg dim_value enable_dim_bg
xschem set semaphore [expr {[xschem get semaphore] +1}] xschem set semaphore [expr {[xschem get semaphore] +1}]
toplevel .dim -class dialog toplevel .dim -class Dialog
wm title .dim {Dim colors} wm title .dim {Dim colors}
wm transient .dim .
checkbutton .dim.bg -text {Dim background} -variable enable_dim_bg checkbutton .dim.bg -text {Dim background} -variable enable_dim_bg
# xschem color_dim <scale value> sets also dim_value variable # xschem color_dim <scale value> sets also dim_value variable
scale .dim.scale -digits 2 -label {Dim factor} -length 256 \ scale .dim.scale -digits 2 -label {Dim factor} -length 256 \
@ -3985,8 +3998,9 @@ proc about {} {
bind .about.link2 <Button-1> {} bind .about.link2 <Button-1> {}
destroy .about destroy .about
} }
toplevel .about -class dialog toplevel .about -class Dialog
wm title .about {About XSCHEM} wm title .about {About XSCHEM}
wm transient .about .
label .about.xschem -text "XSCHEM V[xschem get version]" -font {Sans 24 bold} label .about.xschem -text "XSCHEM V[xschem get version]" -font {Sans 24 bold}
label .about.descr -text "Schematic editor / netlister for VHDL, Verilog, SPICE, tEDAx" label .about.descr -text "Schematic editor / netlister for VHDL, Verilog, SPICE, tEDAx"
button .about.link -text {http://repo.hu/projects/xschem} -font Underline-Font -fg blue -relief flat button .about.link -text {http://repo.hu/projects/xschem} -font Underline-Font -fg blue -relief flat
@ -4023,6 +4037,7 @@ proc property_search {} {
xschem set semaphore [expr {[xschem get semaphore] +1}] xschem set semaphore [expr {[xschem get semaphore] +1}]
toplevel .dialog -class Dialog toplevel .dialog -class Dialog
wm title .dialog {Search} wm title .dialog {Search}
wm transient .dialog .
if { ![info exists X] } { if { ![info exists X] } {
set X [expr {[winfo pointerx .dialog] - 60}] set X [expr {[winfo pointerx .dialog] - 60}]
set Y [expr {[winfo pointery .dialog] - 35}] set Y [expr {[winfo pointery .dialog] - 35}]
@ -4151,6 +4166,7 @@ proc attach_labels_to_inst {} {
xschem set semaphore [expr {[xschem get semaphore] +1}] xschem set semaphore [expr {[xschem get semaphore] +1}]
toplevel .dialog -class Dialog toplevel .dialog -class Dialog
wm title .dialog {Add labels to instances} wm title .dialog {Add labels to instances}
wm transient .dialog .
# 20100408 # 20100408
set X [expr {[winfo pointerx .dialog] - 60}] set X [expr {[winfo pointerx .dialog] - 60}]
@ -4215,6 +4231,7 @@ proc ask_save { {ask {save file?}} {cancel 1}} {
xschem set semaphore [expr {[xschem get semaphore] +1}] xschem set semaphore [expr {[xschem get semaphore] +1}]
toplevel .dialog -class Dialog toplevel .dialog -class Dialog
wm title .dialog {Ask Save} wm title .dialog {Ask Save}
wm transient .dialog .
set X [expr {[winfo pointerx .dialog] - 60}] set X [expr {[winfo pointerx .dialog] - 60}]
set Y [expr {[winfo pointery .dialog] - 35}] set Y [expr {[winfo pointery .dialog] - 35}]
@ -4394,6 +4411,7 @@ proc edit_prop {txtlabel} {
xschem set semaphore [expr {[xschem get semaphore] +1}] xschem set semaphore [expr {[xschem get semaphore] +1}]
toplevel .dialog -class Dialog toplevel .dialog -class Dialog
wm title .dialog {Edit Properties} wm title .dialog {Edit Properties}
wm transient .dialog .
set X [expr {[winfo pointerx .dialog] - 60}] set X [expr {[winfo pointerx .dialog] - 60}]
set Y [expr {[winfo pointery .dialog] - 35}] set Y [expr {[winfo pointery .dialog] - 35}]
@ -4619,6 +4637,7 @@ proc text_line {txtlabel clear {preserve_disabled disabled} } {
if { [winfo exists .dialog] } return if { [winfo exists .dialog] } return
toplevel .dialog -class Dialog toplevel .dialog -class Dialog
wm title .dialog {Text input} wm title .dialog {Text input}
wm transient .dialog .
set X [expr {[winfo pointerx .dialog] - 60}] set X [expr {[winfo pointerx .dialog] - 60}]
set Y [expr {[winfo pointery .dialog] - 35}] set Y [expr {[winfo pointery .dialog] - 35}]
@ -4770,6 +4789,7 @@ proc alert_ {txtlabel {position +200+300} {nowait {0}} {yesno 0}} {
if {![info exists has_x] } {return} if {![info exists has_x] } {return}
toplevel .alert -class Dialog toplevel .alert -class Dialog
wm title .alert {Alert} wm title .alert {Alert}
wm transient .alert .
set X [expr {[winfo pointerx .alert] - 60}] set X [expr {[winfo pointerx .alert] - 60}]
set Y [expr {[winfo pointery .alert] - 60}] set Y [expr {[winfo pointery .alert] - 60}]
if { [string compare $position ""] != 0 } { if { [string compare $position ""] != 0 } {
@ -4848,6 +4868,7 @@ proc infowindow {} {
if ![winfo exists $z] { if ![winfo exists $z] {
toplevel $z toplevel $z
wm title $z {Info window} wm title $z {Info window}
wm transient $z .
wm geometry $z 90x24+0+400 wm geometry $z 90x24+0+400
wm iconname $z {Info window} wm iconname $z {Info window}
wm withdraw $z wm withdraw $z
@ -4894,6 +4915,7 @@ proc textwindow {filename {ro {}}} {
toplevel $textwindow_w toplevel $textwindow_w
wm title $textwindow_w $filename wm title $textwindow_w $filename
wm iconname $textwindow_w $filename wm iconname $textwindow_w $filename
wm transient $textwindow_w .
frame $textwindow_w.buttons frame $textwindow_w.buttons
pack $textwindow_w.buttons -side bottom -fill x -pady 2m pack $textwindow_w.buttons -side bottom -fill x -pady 2m
button $textwindow_w.buttons.dismiss -text Dismiss -command "destroy $textwindow_w" button $textwindow_w.buttons.dismiss -text Dismiss -command "destroy $textwindow_w"
@ -4939,6 +4961,7 @@ proc viewdata {data {ro {}} {win .view}} {
set rcode {} set rcode {}
toplevel $viewdata_w toplevel $viewdata_w
wm title $viewdata_w {View data} wm title $viewdata_w {View data}
wm transient $viewdata_w .
frame $viewdata_w.buttons frame $viewdata_w.buttons
pack $viewdata_w.buttons -side bottom -fill x -pady 2m pack $viewdata_w.buttons -side bottom -fill x -pady 2m
@ -5294,6 +5317,7 @@ proc input_line {txt {cmd {}} {preset {}} {w 12}} {
xschem set semaphore [expr {[xschem get semaphore] +1}] xschem set semaphore [expr {[xschem get semaphore] +1}]
toplevel .dialog -class Dialog toplevel .dialog -class Dialog
wm title .dialog {Input number} wm title .dialog {Input number}
wm transient .dialog .
set X [expr {[winfo pointerx .dialog] - 60}] set X [expr {[winfo pointerx .dialog] - 60}]
set Y [expr {[winfo pointery .dialog] - 35}] set Y [expr {[winfo pointery .dialog] - 35}]
# 20100203 # 20100203