async void HandleTreeviewFilesDiffLineActivated(object sender, EventArgs e) { TreePath[] paths = treeviewFiles.Selection.GetSelectedRows(); if (paths.Length != 1) { return; } TreeIter iter; changedpathstore.GetIter(out iter, paths[0]); string fileName = (string)changedpathstore.GetValue(iter, colPath); int line = diffRenderer.GetSelectedLine(paths[0]); if (line == -1) { line = 1; } var proj = IdeApp.Workspace.GetProjectsContainingFile(fileName).FirstOrDefault(); var doc = await IdeApp.Workbench.OpenDocument(fileName, proj, line, 0, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer); doc?.GetContent <VersionControlDocumentController> ()?.ShowDiffView(SelectedRevision.GetPrevious(), SelectedRevision, line); }
void HandleTreeviewFilesDiffLineActivated(object sender, EventArgs e) { TreePath[] paths = treeviewFiles.Selection.GetSelectedRows(); if (paths.Length != 1) { return; } TreeIter iter; changedpathstore.GetIter(out iter, paths[0]); string fileName = (string)changedpathstore.GetValue(iter, colPath); int line = diffRenderer.GetSelectedLine(paths[0]); var doc = IdeApp.Workbench.OpenDocument(fileName, line, 0, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer); int i = 1; foreach (var content in doc.Window.SubViewContents) { DiffView diffView = content as DiffView; if (diffView != null) { doc.Window.SwitchView(i); diffView.ComparisonWidget.info.RunAfterUpdate(delegate { diffView.ComparisonWidget.SetRevision(diffView.ComparisonWidget.OriginalEditor, SelectedRevision.GetPrevious()); diffView.ComparisonWidget.SetRevision(diffView.ComparisonWidget.DiffEditor, SelectedRevision); diffView.ComparisonWidget.DiffEditor.Caret.Location = new Mono.TextEditor.DocumentLocation(line, 1); diffView.ComparisonWidget.DiffEditor.CenterToCaret(); }); break; } i++; } }