OSDN Git Service

git-gui: Flip commit message buffer and diff area.
authorShawn O. Pearce <spearce@spearce.org>
Wed, 8 Nov 2006 01:27:46 +0000 (20:27 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Wed, 8 Nov 2006 04:48:21 +0000 (23:48 -0500)
Since Tk will only supply new space gained from growing the top level to
the bottom/right most widget within a panedwindow and most users will be
growing a git-gui main window for the purposes of seeing more of the
currently shown diff, flipping the order around makes Tk do what the
user wants by default.

Of course because we also removed the paned window from the commit buffer
area it is now impossible to increase the visible space for the commit
message.  But I don't see this as a huge concern right now as its actually
very awkward to try and balance three paned window dividers within the
same top level window.  We could always add it back if users really want
to expand the commit buffer and see more.

I also corrected a number of bugs that I accidentally introduced in the
last commit.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui

diff --git a/git-gui b/git-gui
index 1833fa8..83f7135 100755 (executable)
--- a/git-gui
+++ b/git-gui
@@ -70,7 +70,7 @@ proc repository_state {hdvar ctvar} {
 proc update_status {{final Ready.}} {
        global HEAD PARENT commit_type
        global ui_index ui_other ui_status_value ui_comm
-       global status_active file_states status_start
+       global status_active file_states
 
        if {$status_active || ![lock_index read]} return
 
@@ -84,7 +84,6 @@ proc update_status {{final Ready.}} {
                set commit_type $new_type
        }
 
-       set status_start [clock seconds]
        array unset file_states
        foreach w [list $ui_index $ui_other] {
                $w conf -state normal
@@ -231,7 +230,7 @@ proc read_ls_others {fd final} {
 }
 
 proc status_eof {fd buf final} {
-       global status_active status_start $buf
+       global status_active $buf
        global ui_fname_value ui_status_value file_states
 
        if {[eof $fd]} {
@@ -241,11 +240,7 @@ proc status_eof {fd buf final} {
                if {[incr status_active -1] == 0} {
                        unlock_index
 
-                       set e1 [clock seconds]
                        display_all_files
-                       set e2 [clock seconds]
-puts "TIME [expr $e1 - $status_start] + [expr $e2 - $e1] = [expr $e2 - $status_start]"
-
                        set ui_status_value $final
 
                        if {$ui_fname_value != {} && [array names file_states \
@@ -758,10 +753,10 @@ proc display_file {path state} {
        if {$status_active} return
 
        set s $file_states($path)
-       set old_w [mapcol $old_m $path]
-       set new_w [mapcol $new_m $path]
        set new_m [lindex $s 0]
-       set new_ico [mapicon $new_m $path]
+       set new_w [mapcol $new_m $path] 
+       set old_w [mapcol $old_m $path]
+       set new_icon [mapicon $new_m $path]
 
        if {$new_w != $old_w} {
                set lno [bsearch $old_w $path]
@@ -1498,101 +1493,56 @@ pack $ui_other -side left -fill both -expand 1
 $ui_index tag conf in_diff -font [concat $mainfont bold]
 $ui_other tag conf in_diff -font [concat $mainfont bold]
 
-# -- Diff Header
-set ui_fname_value {}
-set ui_fstatus_value {}
-frame .vpane.diff -height 200 -width 400
-frame .vpane.diff.header
-label .vpane.diff.header.l1 -text {File:} -font $mainfont
-label .vpane.diff.header.l2 -textvariable ui_fname_value \
-       -anchor w \
-       -justify left \
-       -font $mainfont
-label .vpane.diff.header.l3 -text {Status:} -font $mainfont
-label .vpane.diff.header.l4 -textvariable ui_fstatus_value \
-       -width $max_status_desc \
-       -anchor w \
-       -justify left \
-       -font $mainfont
-pack .vpane.diff.header.l1 -side left
-pack .vpane.diff.header.l2 -side left -fill x
-pack .vpane.diff.header.l4 -side right
-pack .vpane.diff.header.l3 -side right
-
-# -- Diff Body
-frame .vpane.diff.body
-set ui_diff .vpane.diff.body.t
-text $ui_diff -background white -borderwidth 0 \
-       -width 80 -height 15 -wrap none \
-       -font $difffont \
-       -xscrollcommand {.vpane.diff.body.sbx set} \
-       -yscrollcommand {.vpane.diff.body.sby set} \
-       -cursor $maincursor \
-       -state disabled
-scrollbar .vpane.diff.body.sbx -orient horizontal \
-       -command [list $ui_diff xview]
-scrollbar .vpane.diff.body.sby -orient vertical \
-       -command [list $ui_diff yview]
-pack .vpane.diff.body.sbx -side bottom -fill x
-pack .vpane.diff.body.sby -side right -fill y
-pack $ui_diff -side left -fill both -expand 1
-pack .vpane.diff.header -side top -fill x
-pack .vpane.diff.body -side bottom -fill both -expand 1
-.vpane add .vpane.diff -stick nsew
-
-$ui_diff tag conf dm -foreground red
-$ui_diff tag conf dp -foreground blue
-$ui_diff tag conf da -font [concat $difffont bold]
-$ui_diff tag conf di -foreground "#00a000"
-$ui_diff tag conf dni -foreground "#a000a0"
-$ui_diff tag conf bold -font [concat $difffont bold]
-
-# -- Commit Area
-frame .vpane.commarea -height 170
-.vpane add .vpane.commarea -stick nsew
+# -- Diff and Commit Area
+frame .vpane.lower -height 400 -width 400
+frame .vpane.lower.commarea
+frame .vpane.lower.diff -relief sunken -borderwidth 1
+pack .vpane.lower.commarea -side top -fill x
+pack .vpane.lower.diff -side bottom -fill both -expand 1
+.vpane add .vpane.lower -stick nsew
 
 # -- Commit Area Buttons
-frame .vpane.commarea.buttons
-label .vpane.commarea.buttons.l -text {} \
+frame .vpane.lower.commarea.buttons
+label .vpane.lower.commarea.buttons.l -text {} \
        -anchor w \
        -justify left \
        -font $mainfont
-pack .vpane.commarea.buttons.l -side top -fill x
-pack .vpane.commarea.buttons -side left -fill y
+pack .vpane.lower.commarea.buttons.l -side top -fill x
+pack .vpane.lower.commarea.buttons -side left -fill y
 
-button .vpane.commarea.buttons.rescan -text {Rescan} \
+button .vpane.lower.commarea.buttons.rescan -text {Rescan} \
        -command do_rescan \
        -font $mainfont
-pack .vpane.commarea.buttons.rescan -side top -fill x
-lappend disable_on_lock {.vpane.commarea.buttons.rescan conf -state}
+pack .vpane.lower.commarea.buttons.rescan -side top -fill x
+lappend disable_on_lock {.vpane.lower.commarea.buttons.rescan conf -state}
 
-button .vpane.commarea.buttons.amend -text {Amend Last} \
+button .vpane.lower.commarea.buttons.amend -text {Amend Last} \
        -command do_amend_last \
        -font $mainfont
-pack .vpane.commarea.buttons.amend -side top -fill x
-lappend disable_on_lock {.vpane.commarea.buttons.amend conf -state}
+pack .vpane.lower.commarea.buttons.amend -side top -fill x
+lappend disable_on_lock {.vpane.lower.commarea.buttons.amend conf -state}
 
-button .vpane.commarea.buttons.ciall -text {Check-in All} \
+button .vpane.lower.commarea.buttons.ciall -text {Check-in All} \
        -command do_checkin_all \
        -font $mainfont
-pack .vpane.commarea.buttons.ciall -side top -fill x
-lappend disable_on_lock {.vpane.commarea.buttons.ciall conf -state}
+pack .vpane.lower.commarea.buttons.ciall -side top -fill x
+lappend disable_on_lock {.vpane.lower.commarea.buttons.ciall conf -state}
 
-button .vpane.commarea.buttons.signoff -text {Sign Off} \
+button .vpane.lower.commarea.buttons.signoff -text {Sign Off} \
        -command do_signoff \
        -font $mainfont
-pack .vpane.commarea.buttons.signoff -side top -fill x
+pack .vpane.lower.commarea.buttons.signoff -side top -fill x
 
-button .vpane.commarea.buttons.commit -text {Commit} \
+button .vpane.lower.commarea.buttons.commit -text {Commit} \
        -command do_commit \
        -font $mainfont
-pack .vpane.commarea.buttons.commit -side top -fill x
-lappend disable_on_lock {.vpane.commarea.buttons.commit conf -state}
+pack .vpane.lower.commarea.buttons.commit -side top -fill x
+lappend disable_on_lock {.vpane.lower.commarea.buttons.commit conf -state}
 
 # -- Commit Message Buffer
-frame .vpane.commarea.buffer
-set ui_comm .vpane.commarea.buffer.t
-set ui_coml .vpane.commarea.buffer.l
+frame .vpane.lower.commarea.buffer
+set ui_comm .vpane.lower.commarea.buffer.t
+set ui_coml .vpane.lower.commarea.buffer.l
 label $ui_coml -text {Commit Message:} \
        -anchor w \
        -justify left \
@@ -1606,15 +1556,68 @@ trace add variable commit_type write {uplevel #0 {
 }}
 text $ui_comm -background white -borderwidth 1 \
        -relief sunken \
-       -width 75 -height 10 -wrap none \
+       -width 75 -height 9 -wrap none \
        -font $difffont \
-       -yscrollcommand {.vpane.commarea.buffer.sby set} \
+       -yscrollcommand {.vpane.lower.commarea.buffer.sby set} \
        -cursor $maincursor
-scrollbar .vpane.commarea.buffer.sby -command [list $ui_comm yview]
+scrollbar .vpane.lower.commarea.buffer.sby -command [list $ui_comm yview]
 pack $ui_coml -side top -fill x
-pack .vpane.commarea.buffer.sby -side right -fill y
+pack .vpane.lower.commarea.buffer.sby -side right -fill y
 pack $ui_comm -side left -fill y
-pack .vpane.commarea.buffer -side left -fill y
+pack .vpane.lower.commarea.buffer -side left -fill y
+
+# -- Diff Header
+set ui_fname_value {}
+set ui_fstatus_value {}
+frame .vpane.lower.diff.header -background orange
+label .vpane.lower.diff.header.l1 -text {File:} \
+       -background orange \
+       -font $mainfont
+label .vpane.lower.diff.header.l2 -textvariable ui_fname_value \
+       -background orange \
+       -anchor w \
+       -justify left \
+       -font $mainfont
+label .vpane.lower.diff.header.l3 -text {Status:} \
+       -background orange \
+       -font $mainfont
+label .vpane.lower.diff.header.l4 -textvariable ui_fstatus_value \
+       -background orange \
+       -width $max_status_desc \
+       -anchor w \
+       -justify left \
+       -font $mainfont
+pack .vpane.lower.diff.header.l1 -side left
+pack .vpane.lower.diff.header.l2 -side left -fill x
+pack .vpane.lower.diff.header.l4 -side right
+pack .vpane.lower.diff.header.l3 -side right
+
+# -- Diff Body
+frame .vpane.lower.diff.body
+set ui_diff .vpane.lower.diff.body.t
+text $ui_diff -background white -borderwidth 0 \
+       -width 80 -height 15 -wrap none \
+       -font $difffont \
+       -xscrollcommand {.vpane.lower.diff.body.sbx set} \
+       -yscrollcommand {.vpane.lower.diff.body.sby set} \
+       -cursor $maincursor \
+       -state disabled
+scrollbar .vpane.lower.diff.body.sbx -orient horizontal \
+       -command [list $ui_diff xview]
+scrollbar .vpane.lower.diff.body.sby -orient vertical \
+       -command [list $ui_diff yview]
+pack .vpane.lower.diff.body.sbx -side bottom -fill x
+pack .vpane.lower.diff.body.sby -side right -fill y
+pack $ui_diff -side left -fill both -expand 1
+pack .vpane.lower.diff.header -side top -fill x
+pack .vpane.lower.diff.body -side bottom -fill both -expand 1
+
+$ui_diff tag conf dm -foreground red
+$ui_diff tag conf dp -foreground blue
+$ui_diff tag conf da -font [concat $difffont bold]
+$ui_diff tag conf di -foreground "#00a000"
+$ui_diff tag conf dni -foreground "#a000a0"
+$ui_diff tag conf bold -font [concat $difffont bold]
 
 # -- Status Bar
 set ui_status_value {Initializing...}