Paul Mackerras <paulus@xxxxxxxxx> wrote: > Junio C Hamano writes: > > An obvious solution is to show the scrollbar on-demand (i.e. when the > > lines are overlong), but I do not talk Tcl/Tk and do not know if you can > > do that easily. > > I don't know of any extremely easy way to do it; it's certainly > possible, but I think I would have to calculate the length of each > line as it is put in, so as to get the maximum, and then have a > handler for when the pane is resized, and pack and unpack the > scrollbar as necessary. > > I think it's reasonable to have the scroll bar there always. I think > that pane could look better using the grid geometry manager (instead > of pack), but that can be a separate patch. git-gui does this scrollbar on-demand thing in its revision list meta-widget, which is lib/choose_rev.tcl. The procedure in question is this, and it gets installed as: listbox $w_list \ -font font_diff \ -width 50 \ -height 10 \ -selectmode browse \ -exportselection false \ -xscrollcommand [cb _sb_set $w.list.sbx h] \ -yscrollcommand [cb _sb_set $w.list.sby v] method _sb_set {sb orient first last} { set old_focus [focus -lastfor $w] if {$first == 0 && $last == 1} { if {[winfo exists $sb]} { destroy $sb if {$old_focus ne {}} { update focus $old_focus } } return } if {![winfo exists $sb]} { if {$orient eq {h}} { scrollbar $sb -orient h -command [list $w_list xview] pack $sb -fill x -side bottom -before $w_list } else { scrollbar $sb -orient v -command [list $w_list yview] pack $sb -fill y -side right -before $w_list } if {$old_focus ne {}} { update focus $old_focus } } catch {$sb set $first $last} } -- Shawn. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html