@@ -216,13 +216,16 @@ private void OnCommitListSelectionChanged(object _, SelectionChangedEventArgs e)
216216
217217 private void OnCommitListContextRequested ( object sender , ContextRequestedEventArgs e )
218218 {
219- if ( sender is DataGrid { SelectedItems : { } selected } dataGrid &&
220- e . Source is Control { DataContext : Models . Commit } )
219+ if ( e . Source is Control { DataContext : Models . Commit } )
221220 {
222221 var repoView = this . FindAncestorOfType < Repository > ( ) ;
223222 if ( repoView is not { DataContext : ViewModels . Repository repo } )
224223 return ;
225224
225+ var selected = CommitListContainer . SelectedItems ;
226+ if ( selected is not { Count : > 0 } )
227+ return ;
228+
226229 var commits = new List < Models . Commit > ( ) ;
227230 for ( var i = selected . Count - 1 ; i >= 0 ; i -- )
228231 {
@@ -233,14 +236,54 @@ private void OnCommitListContextRequested(object sender, ContextRequestedEventAr
233236 if ( selected . Count > 1 )
234237 {
235238 var menu = CreateContextMenuForMultipleCommits ( repo , commits ) ;
236- menu . Open ( dataGrid ) ;
239+ menu . Open ( CommitListContainer ) ;
237240 }
238241 else if ( selected . Count == 1 )
239242 {
240243 var menu = CreateContextMenuForSingleCommit ( repo , commits [ 0 ] ) ;
241- menu . Open ( dataGrid ) ;
244+ menu . Open ( CommitListContainer ) ;
242245 }
243246 }
247+ else if ( e . Source is Control elem )
248+ {
249+ var headersPresenter = CommitListContainer . FindDescendantOfType < DataGridColumnHeadersPresenter > ( ) ;
250+ if ( ! headersPresenter . IsVisualAncestorOf ( elem ) )
251+ return ;
252+
253+ if ( DataContext is not ViewModels . Histories vm )
254+ return ;
255+
256+ var columnsHeader = new MenuItem ( ) ;
257+ columnsHeader . Header = App . Text ( "Histories.ShowColumns" ) ;
258+ columnsHeader . IsEnabled = false ;
259+
260+ var authorColumn = new MenuItem ( ) ;
261+ authorColumn . Header = App . Text ( "Histories.Header.Author" ) ;
262+ if ( vm . IsAuthorColumnVisible )
263+ authorColumn . Icon = App . CreateMenuIcon ( "Icons.Check" ) ;
264+ authorColumn . Click += ( _ , ev ) =>
265+ {
266+ vm . IsAuthorColumnVisible = ! vm . IsAuthorColumnVisible ;
267+ ev . Handled = true ;
268+ } ;
269+
270+ var shaColumn = new MenuItem ( ) ;
271+ shaColumn . Header = App . Text ( "Histories.Header.SHA" ) ;
272+ if ( vm . IsSHAColumnVisible )
273+ shaColumn . Icon = App . CreateMenuIcon ( "Icons.Check" ) ;
274+ shaColumn . Click += ( _ , ev ) =>
275+ {
276+ vm . IsSHAColumnVisible = ! vm . IsSHAColumnVisible ;
277+ ev . Handled = true ;
278+ } ;
279+
280+ var menu = new ContextMenu ( ) ;
281+ menu . Items . Add ( columnsHeader ) ;
282+ menu . Items . Add ( new MenuItem ( ) { Header = "-" } ) ;
283+ menu . Items . Add ( authorColumn ) ;
284+ menu . Items . Add ( shaColumn ) ;
285+ menu . Open ( CommitListContainer ) ;
286+ }
244287
245288 e . Handled = true ;
246289 }
0 commit comments