Browse Source

gitk: Make gitk dialog windows transient

Transient windows are always kept above their parent, and don't occupy
any space in the taskbar, which is useful for dialogs.  Also, when
transient is used, it is important to bind windows to the correct
parent.

This commit adds transient annotations to all dialogs, ensures usage
of the correct parent for error and confirmation popups, and, as a
side job, makes gitk preserve the create tag dialog window in case of
errors.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
maint
Alexander Gavrilov 17 years ago committed by Paul Mackerras
parent
commit
84a76f18f0
  1. 46
      gitk

46
gitk

@ -1751,19 +1751,19 @@ proc show_error {w top msg} { @@ -1751,19 +1751,19 @@ proc show_error {w top msg} {
tkwait window $top
}

proc error_popup msg {
proc error_popup {msg {owner .}} {
set w .error
toplevel $w
wm transient $w .
wm transient $w $owner
show_error $w $w $msg
}

proc confirm_popup msg {
proc confirm_popup {msg {owner .}} {
global confirm_ok
set confirm_ok 0
set w .confirm
toplevel $w
wm transient $w .
wm transient $w $owner
message $w.m -text $msg -justify center -aspect 400
pack $w.m -side top -fill x -padx 20 -pady 20
button $w.ok -text [mc OK] -command "set confirm_ok 1; destroy $w"
@ -2546,6 +2546,7 @@ proc about {} { @@ -2546,6 +2546,7 @@ proc about {} {
}
toplevel $w
wm title $w [mc "About gitk"]
wm transient $w .
message $w.m -text [mc "
Gitk - a commit viewer for git

@ -2574,6 +2575,7 @@ proc keys {} { @@ -2574,6 +2575,7 @@ proc keys {} {
}
toplevel $w
wm title $w [mc "Gitk key bindings"]
wm transient $w .
message $w.m -text "
[mc "Gitk key bindings:"]

@ -3503,6 +3505,7 @@ proc vieweditor {top n title} { @@ -3503,6 +3505,7 @@ proc vieweditor {top n title} {

toplevel $top
wm title $top $title
wm transient $top .
label $top.nl -text [mc "Name"]
entry $top.name -width 20 -textvariable newviewname($n)
grid $top.nl $top.name -sticky w -pady 5
@ -3572,9 +3575,7 @@ proc newviewok {top n} { @@ -3572,9 +3575,7 @@ proc newviewok {top n} {
if {[catch {
set newargs [shellsplit $newviewargs($n)]
} err]} {
error_popup "[mc "Error in commit selection arguments:"] $err"
wm raise $top
focus $top
error_popup "[mc "Error in commit selection arguments:"] $err" $top
return
}
set files {}
@ -7770,6 +7771,7 @@ proc mkpatch {} { @@ -7770,6 +7771,7 @@ proc mkpatch {} {
set patchtop $top
catch {destroy $top}
toplevel $top
wm transient $top .
label $top.title -text [mc "Generate patch"]
grid $top.title - -pady 10
label $top.from -text [mc "From:"]
@ -7836,7 +7838,7 @@ proc mkpatchgo {} { @@ -7836,7 +7838,7 @@ proc mkpatchgo {} {
set cmd [lrange $cmd 1 end]
lappend cmd >$fname &
if {[catch {eval exec $cmd} err]} {
error_popup "[mc "Error creating patch:"] $err"
error_popup "[mc "Error creating patch:"] $err" $patchtop
}
catch {destroy $patchtop}
unset patchtop
@ -7856,6 +7858,7 @@ proc mktag {} { @@ -7856,6 +7858,7 @@ proc mktag {} {
set mktagtop $top
catch {destroy $top}
toplevel $top
wm transient $top .
label $top.title -text [mc "Create tag"]
grid $top.title - -pady 10
label $top.id -text [mc "ID:"]
@ -7888,18 +7891,18 @@ proc domktag {} { @@ -7888,18 +7891,18 @@ proc domktag {} {
set id [$mktagtop.sha1 get]
set tag [$mktagtop.tag get]
if {$tag == {}} {
error_popup [mc "No tag name specified"]
return
error_popup [mc "No tag name specified"] $mktagtop
return 0
}
if {[info exists tagids($tag)]} {
error_popup [mc "Tag \"%s\" already exists" $tag]
return
error_popup [mc "Tag \"%s\" already exists" $tag] $mktagtop
return 0
}
if {[catch {
exec git tag $tag $id
} err]} {
error_popup "[mc "Error creating tag:"] $err"
return
error_popup "[mc "Error creating tag:"] $err" $mktagtop
return 0
}

set tagids($tag) $id
@ -7908,6 +7911,7 @@ proc domktag {} { @@ -7908,6 +7911,7 @@ proc domktag {} {
addedtag $id
dispneartags 0
run refill_reflist
return 1
}

proc redrawtags {id} {
@ -7946,7 +7950,7 @@ proc mktagcan {} { @@ -7946,7 +7950,7 @@ proc mktagcan {} {
}

proc mktaggo {} {
domktag
if {![domktag]} return
mktagcan
}

@ -7957,6 +7961,7 @@ proc writecommit {} { @@ -7957,6 +7961,7 @@ proc writecommit {} {
set wrcomtop $top
catch {destroy $top}
toplevel $top
wm transient $top .
label $top.title -text [mc "Write commit to file"]
grid $top.title - -pady 10
label $top.id -text [mc "ID:"]
@ -7994,7 +7999,7 @@ proc wrcomgo {} { @@ -7994,7 +7999,7 @@ proc wrcomgo {} {
set cmd "echo $id | [$wrcomtop.cmd get]"
set fname [$wrcomtop.fname get]
if {[catch {exec sh -c $cmd >$fname &} err]} {
error_popup "[mc "Error writing commit:"] $err"
error_popup "[mc "Error writing commit:"] $err" $wrcomtop
}
catch {destroy $wrcomtop}
unset wrcomtop
@ -8013,6 +8018,7 @@ proc mkbranch {} { @@ -8013,6 +8018,7 @@ proc mkbranch {} {
set top .makebranch
catch {destroy $top}
toplevel $top
wm transient $top .
label $top.title -text [mc "Create new branch"]
grid $top.title - -pady 10
label $top.id -text [mc "ID:"]
@ -8044,12 +8050,12 @@ proc mkbrgo {top} { @@ -8044,12 +8050,12 @@ proc mkbrgo {top} {
set cmdargs {}
set old_id {}
if {$name eq {}} {
error_popup [mc "Please specify a name for the new branch"]
error_popup [mc "Please specify a name for the new branch"] $top
return
}
if {[info exists headids($name)]} {
if {![confirm_popup [mc \
"Branch '%s' already exists. Overwrite?" $name]]} {
"Branch '%s' already exists. Overwrite?" $name] $top]} {
return
}
set old_id $headids($name)
@ -8310,6 +8316,7 @@ proc showrefs {} { @@ -8310,6 +8316,7 @@ proc showrefs {} {
}
toplevel $top
wm title $top [mc "Tags and heads: %s" [file tail [pwd]]]
wm transient $top .
text $top.list -background $bgcolor -foreground $fgcolor \
-selectbackground $selectbgcolor -font mainfont \
-xscrollcommand "$top.xsb set" -yscrollcommand "$top.ysb set" \
@ -9637,6 +9644,7 @@ proc mkfontdisp {font top which} { @@ -9637,6 +9644,7 @@ proc mkfontdisp {font top which} {

proc choosefont {font which} {
global fontparam fontlist fonttop fontattr
global prefstop

set fontparam(which) $which
set fontparam(font) $font
@ -9650,6 +9658,7 @@ proc choosefont {font which} { @@ -9650,6 +9658,7 @@ proc choosefont {font which} {
font create sample
eval font config sample [font actual $font]
toplevel $top
wm transient $top $prefstop
wm title $top [mc "Gitk font chooser"]
label $top.l -textvariable fontparam(which)
pack $top.l -side top
@ -9766,6 +9775,7 @@ proc doprefs {} { @@ -9766,6 +9775,7 @@ proc doprefs {} {
}
toplevel $top
wm title $top [mc "Gitk preferences"]
wm transient $top .
label $top.ldisp -text [mc "Commit list display options"]
grid $top.ldisp - -sticky w -pady 10
label $top.spacer -text " "

Loading…
Cancel
Save