git-gui: Allow the user to copy name of the file in the diff viewer.
There's a lot of reasons why the user might need to obtain the complete (or just part of) path of a file which they are currently viewing in the diff viewer pane. So now we allow selection on this widget by using a text widget instead of a label. We also offer a context menu which has actions for copying the selection or the entire value onto the clipboard. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
		
							
								
								
									
										30
									
								
								git-gui
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								git-gui
									
									
									
									
									
								
							| @ -511,7 +511,7 @@ proc show_diff {path {w {}} {lno {}}} { | |||||||
| 	set m [lindex $s 0] | 	set m [lindex $s 0] | ||||||
| 	set diff_3way 0 | 	set diff_3way 0 | ||||||
| 	set diff_active 1 | 	set diff_active 1 | ||||||
| 	set ui_fname_value [escape_path $path] | 	set ui_fname_value $path | ||||||
| 	set ui_fstatus_value [mapdesc $m $path] | 	set ui_fstatus_value [mapdesc $m $path] | ||||||
| 	set ui_status_value "Loading diff of [escape_path $path]..." | 	set ui_status_value "Loading diff of [escape_path $path]..." | ||||||
|  |  | ||||||
| @ -2284,11 +2284,33 @@ frame .vpane.lower.diff.header -background orange | |||||||
| label .vpane.lower.diff.header.l1 -text {File:} \ | label .vpane.lower.diff.header.l1 -text {File:} \ | ||||||
| 	-background orange \ | 	-background orange \ | ||||||
| 	-font font_ui | 	-font font_ui | ||||||
| label .vpane.lower.diff.header.l2 -textvariable ui_fname_value \ | set ui_fname .vpane.lower.diff.header.l2 | ||||||
|  | text $ui_fname \ | ||||||
| 	-background orange \ | 	-background orange \ | ||||||
| 	-anchor w \ | 	-height 1 \ | ||||||
| 	-justify left \ | 	-relief flat \ | ||||||
|  | 	-state disabled \ | ||||||
| 	-font font_ui | 	-font font_ui | ||||||
|  | menu $ui_fname.ctxm -tearoff 0 | ||||||
|  | $ui_fname.ctxm add command -label "Copy Only Selection" \ | ||||||
|  | 	-font font_ui \ | ||||||
|  | 	-command "tk_textCopy $ui_fname" | ||||||
|  | $ui_fname.ctxm add command -label "Copy Complete Name" \ | ||||||
|  | 	-font font_ui \ | ||||||
|  | 	-command " | ||||||
|  | 		$ui_fname tag add sel 0.0 {end -1c} | ||||||
|  | 		tk_textCopy $ui_fname | ||||||
|  | 		$ui_fname tag remove sel 0.0 end | ||||||
|  | 	" | ||||||
|  | bind_button3 $ui_fname "tk_popup $ui_fname.ctxm %X %Y" | ||||||
|  | trace add variable ui_fname_value write $ui_fname.update | ||||||
|  | proc $ui_fname.update {varname args} { | ||||||
|  | 	global ui_fname ui_fname_value | ||||||
|  | 	$ui_fname configure -state normal | ||||||
|  | 	$ui_fname delete 0.0 end | ||||||
|  | 	$ui_fname insert end [escape_path $ui_fname_value] | ||||||
|  | 	$ui_fname configure -state disabled | ||||||
|  | } | ||||||
| label .vpane.lower.diff.header.l3 -text {Status:} \ | label .vpane.lower.diff.header.l3 -text {Status:} \ | ||||||
| 	-background orange \ | 	-background orange \ | ||||||
| 	-font font_ui | 	-font font_ui | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Shawn O. Pearce
					Shawn O. Pearce