Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Ward <matt.ward@xamarin.com>2017-07-26 23:45:59 +0300
committerMatt Ward <ward.matt@gmail.com>2017-07-27 15:43:55 +0300
commit161821d21f15680348d20a959b68f426aa0f3d9d (patch)
treea0d06841ed0ccebf84b73384785b583b5ba6765e /main/src/core/MonoDevelop.Ide
parentf9bc1c19f80f12b0ff5a81b02de2ab811e8e5e9f (diff)
[Ide] Support selecting multiple rows in Errors pad
Fixed bug #11946 - Need a way to export build errors and warnings https://bugzilla.xamarin.com/show_bug.cgi?id=11946 Allow multiple rows to be selected in the Errors pad. The Copy menu will be enabled if multiple rows are selected. The Go to and Show Error Reference menus will be disabled if multiple rows are selected. The Copy menu will copy all selected rows to the clipboard.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs57
1 files changed, 44 insertions, 13 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
index 0e5eead727..2cb207fbad 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
@@ -238,6 +238,7 @@ namespace MonoDevelop.Ide.Gui.Pads
sort.SetSortFunc (VisibleColumns.Category, CategoryIterSort);
view = new PadTreeView (sort);
+ view.Selection.Mode = SelectionMode.Multiple;
view.ShowExpanders = true;
view.RulesHint = true;
view.DoPopupMenu = (evnt) => IdeApp.CommandService.ShowContextMenu (view, evnt, CreateMenu ());
@@ -499,6 +500,13 @@ namespace MonoDevelop.Ide.Gui.Pads
columnDescription.Active ||
columnFile.Active ||
columnPath.Active);
+
+ // Disable Help and Go To if multiple rows selected.
+ if (help.Sensitive && view.Selection.CountSelectedRows () > 1) {
+ help.Sensitive = false;
+ jump.Sensitive = false;
+ }
+
string dummyString;
help.Sensitive &= GetSelectedErrorReference (out dummyString);
};
@@ -508,14 +516,26 @@ namespace MonoDevelop.Ide.Gui.Pads
TaskListEntry SelectedTask {
get {
- TreeModel model;
TreeIter iter;
- if (view.Selection.GetSelected (out model, out iter))
- return model.GetValue (iter, DataColumns.Task) as TaskListEntry;
+ var rows = view.Selection.GetSelectedRows ();
+ if (rows.Any () && view.Model.GetIter (out iter, rows[0]))
+ return view.Model.GetValue (iter, DataColumns.Task) as TaskListEntry;
return null; // no one selected
}
}
+ IEnumerable<TaskListEntry> GetSelectedTasks ()
+ {
+ TreeIter iter;
+ foreach (var row in view.Selection.GetSelectedRows ()) {
+ if (view.Model.GetIter (out iter, row)) {
+ var task = view.Model.GetValue (iter, DataColumns.Task) as TaskListEntry;
+ if (task != null)
+ yield return task;
+ }
+ }
+ }
+
[CommandHandler (EditCommands.Copy)]
protected void OnCopy ()
{
@@ -524,9 +544,17 @@ namespace MonoDevelop.Ide.Gui.Pads
void OnTaskCopied (object o, EventArgs args)
{
- TaskListEntry task = SelectedTask;
- if (task != null) {
- StringBuilder text = new StringBuilder ();
+ var selectedTasks = GetSelectedTasks ().ToArray ();
+ if (!selectedTasks.Any ())
+ return;
+
+ var text = new StringBuilder ();
+
+ for (int i = 0; i < selectedTasks.Length; i++) {
+ if (i > 0)
+ text.Append (Environment.NewLine);
+
+ TaskListEntry task = selectedTasks [i];
if (!string.IsNullOrEmpty (task.FileName)) {
text.Append (task.FileName);
if (task.Line >= 1) {
@@ -549,12 +577,12 @@ namespace MonoDevelop.Ide.Gui.Pads
if (!string.IsNullOrEmpty (task.Category)) {
text.Append (" ").Append (task.Category);
}
-
- clipboard = Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false));
- clipboard.Text = text.ToString ();
- clipboard = Clipboard.Get (Gdk.Atom.Intern ("PRIMARY", false));
- clipboard.Text = text.ToString ();
}
+
+ clipboard = Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false));
+ clipboard.Text = text.ToString ();
+ clipboard = Clipboard.Get (Gdk.Atom.Intern ("PRIMARY", false));
+ clipboard.Text = text.ToString ();
}
void OnShowReference (object o, EventArgs args)
@@ -586,9 +614,12 @@ namespace MonoDevelop.Ide.Gui.Pads
void OnTaskJumpto (object o, EventArgs args)
{
+ var rows = view.Selection.GetSelectedRows ();
+ if (!rows.Any ())
+ return;
+
TreeIter iter, sortedIter;
- TreeModel model;
- if (view.Selection.GetSelected (out model, out sortedIter)) {
+ if (view.Model.GetIter (out sortedIter, rows [0])) {
iter = filter.ConvertIterToChildIter (sort.ConvertIterToChildIter (sortedIter));
store.SetValue (iter, DataColumns.Read, true);
TaskListEntry task = store.GetValue (iter, DataColumns.Task) as TaskListEntry;