@@ -134,6 +134,8 @@ private void OnChangeContextRequested(object sender, ContextRequestedEventArgs e
134134 if ( DataContext is ViewModels . StashesPage { SelectedChanges : { Count : > 0 } selected } vm &&
135135 sender is ChangeCollectionView view )
136136 {
137+ var menu = new ContextMenu ( ) ;
138+
137139 if ( selected . Count == 1 )
138140 {
139141 var change = selected [ 0 ] ;
@@ -159,91 +161,79 @@ private void OnChangeContextRequested(object sender, ContextRequestedEventArgs e
159161 ev . Handled = true ;
160162 } ;
161163
162- var resetToThisRevision = new MenuItem ( ) ;
163- resetToThisRevision . Header = App . Text ( "ChangeCM.CheckoutThisRevision" ) ;
164- resetToThisRevision . Icon = App . CreateMenuIcon ( "Icons.File.Checkout" ) ;
165- resetToThisRevision . Click += async ( _ , ev ) =>
166- {
167- await vm . CheckoutSingleFileAsync ( change ) ;
168- ev . Handled = true ;
169- } ;
170-
171- var copyPath = new MenuItem ( ) ;
172- copyPath . Header = App . Text ( "CopyPath" ) ;
173- copyPath . Icon = App . CreateMenuIcon ( "Icons.Copy" ) ;
174- copyPath . Tag = OperatingSystem . IsMacOS ( ) ? "⌘+C" : "Ctrl+C" ;
175- copyPath . Click += async ( _ , ev ) =>
176- {
177- await App . CopyTextAsync ( change . Path ) ;
178- ev . Handled = true ;
179- } ;
180-
181- var copyFullPath = new MenuItem ( ) ;
182- copyFullPath . Header = App . Text ( "CopyFullPath" ) ;
183- copyFullPath . Icon = App . CreateMenuIcon ( "Icons.Copy" ) ;
184- copyFullPath . Tag = OperatingSystem . IsMacOS ( ) ? "⌘+⇧+C" : "Ctrl+Shift+C" ;
185- copyFullPath . Click += async ( _ , ev ) =>
186- {
187- await App . CopyTextAsync ( fullPath ) ;
188- ev . Handled = true ;
189- } ;
190-
191- var menu = new ContextMenu ( ) ;
192164 menu . Items . Add ( openWithMerger ) ;
193165 menu . Items . Add ( explore ) ;
194166 menu . Items . Add ( new MenuItem { Header = "-" } ) ;
195- menu . Items . Add ( resetToThisRevision ) ;
196- menu . Items . Add ( new MenuItem { Header = "-" } ) ;
197- menu . Items . Add ( copyPath ) ;
198- menu . Items . Add ( copyFullPath ) ;
199- menu . Open ( view ) ;
200167 }
201- else
168+
169+ var applyChanges = new MenuItem ( ) ;
170+ applyChanges . Header = App . Text ( "StashCM.ApplyFileChanges" ) ;
171+ applyChanges . Icon = App . CreateMenuIcon ( "Icons.Diff" ) ;
172+ applyChanges . Click += async ( _ , ev ) =>
202173 {
203- var resetToThisRevision = new MenuItem ( ) ;
204- resetToThisRevision . Header = App . Text ( "ChangeCM.CheckoutThisRevision" ) ;
205- resetToThisRevision . Icon = App . CreateMenuIcon ( "Icons.File.Checkout" ) ;
206- resetToThisRevision . Click += async ( _ , ev ) =>
207- {
208- await vm . CheckoutMultipleFileAsync ( selected ) ;
209- ev . Handled = true ;
210- } ;
174+ await vm . ApplySelectedChanges ( selected ) ;
175+ ev . Handled = true ;
176+ } ;
211177
212- var copyPath = new MenuItem ( ) ;
213- copyPath . Header = App . Text ( "CopyPath" ) ;
214- copyPath . Icon = App . CreateMenuIcon ( "Icons.Copy" ) ;
215- copyPath . Tag = OperatingSystem . IsMacOS ( ) ? "⌘+C" : "Ctrl+C" ;
216- copyPath . Click += async ( _ , ev ) =>
178+ var checkoutFiles = new MenuItem ( ) ;
179+ checkoutFiles . Header = App . Text ( "ChangeCM.CheckoutThisRevision" ) ;
180+ checkoutFiles . Icon = App . CreateMenuIcon ( "Icons.File.Checkout" ) ;
181+ checkoutFiles . Click += async ( _ , ev ) =>
182+ {
183+ await vm . CheckoutFilesAsync ( selected ) ;
184+ ev . Handled = true ;
185+ } ;
186+
187+ var copyPath = new MenuItem ( ) ;
188+ copyPath . Header = App . Text ( "CopyPath" ) ;
189+ copyPath . Icon = App . CreateMenuIcon ( "Icons.Copy" ) ;
190+ copyPath . Tag = OperatingSystem . IsMacOS ( ) ? "⌘+C" : "Ctrl+C" ;
191+ copyPath . Click += async ( _ , ev ) =>
192+ {
193+ if ( selected . Count == 1 )
194+ {
195+ await App . CopyTextAsync ( selected [ 0 ] . Path ) ;
196+ }
197+ else
217198 {
218199 var builder = new StringBuilder ( ) ;
219200 foreach ( var c in selected )
220201 builder . AppendLine ( c . Path ) ;
221202
222203 await App . CopyTextAsync ( builder . ToString ( ) ) ;
223- ev . Handled = true ;
224- } ;
204+ }
205+
206+ ev . Handled = true ;
207+ } ;
225208
226- var copyFullPath = new MenuItem ( ) ;
227- copyFullPath . Header = App . Text ( "CopyFullPath" ) ;
228- copyFullPath . Icon = App . CreateMenuIcon ( "Icons.Copy" ) ;
229- copyFullPath . Tag = OperatingSystem . IsMacOS ( ) ? "⌘+⇧+C" : "Ctrl+Shift+C" ;
230- copyFullPath . Click += async ( _ , ev ) =>
209+ var copyFullPath = new MenuItem ( ) ;
210+ copyFullPath . Header = App . Text ( "CopyFullPath" ) ;
211+ copyFullPath . Icon = App . CreateMenuIcon ( "Icons.Copy" ) ;
212+ copyFullPath . Tag = OperatingSystem . IsMacOS ( ) ? "⌘+⇧+C" : "Ctrl+Shift+C" ;
213+ copyFullPath . Click += async ( _ , ev ) =>
214+ {
215+ if ( selected . Count == 1 )
216+ {
217+ await App . CopyTextAsync ( vm . GetAbsPath ( selected [ 0 ] . Path ) ) ;
218+ }
219+ else
231220 {
232221 var builder = new StringBuilder ( ) ;
233222 foreach ( var c in selected )
234223 builder . AppendLine ( vm . GetAbsPath ( c . Path ) ) ;
235224
236225 await App . CopyTextAsync ( builder . ToString ( ) ) ;
237- ev . Handled = true ;
238- } ;
226+ }
239227
240- var menu = new ContextMenu ( ) ;
241- menu . Items . Add ( resetToThisRevision ) ;
242- menu . Items . Add ( new MenuItem { Header = "-" } ) ;
243- menu . Items . Add ( copyPath ) ;
244- menu . Items . Add ( copyFullPath ) ;
245- menu . Open ( view ) ;
246- }
228+ ev . Handled = true ;
229+ } ;
230+
231+ menu . Items . Add ( applyChanges ) ;
232+ menu . Items . Add ( checkoutFiles ) ;
233+ menu . Items . Add ( new MenuItem { Header = "-" } ) ;
234+ menu . Items . Add ( copyPath ) ;
235+ menu . Items . Add ( copyFullPath ) ;
236+ menu . Open ( view ) ;
247237 }
248238
249239 e . Handled = true ;
0 commit comments