Merge branch 'upstream'

Former-commit-id: e648918f9eda31ba6e0faf49aacea5b5e4593a39
This commit is contained in:
Xamarin Public Jenkins (auto-signing) 2019-05-13 09:03:18 +00:00
commit 350e4cb12e
61 changed files with 248 additions and 100 deletions

View File

@ -1 +1 @@
eb3138ef5368ba7b07b7d97465277f163d4af962
433d9e77ab5bf04a6f38d53acff85423e48145da

View File

@ -1 +1 @@
8d3ef08e7c6f0c31604edd6aa649716e04a08dab
f047b256c7e953557b6aecfbc03ad3e2b5fe839c

View File

@ -41,7 +41,7 @@ static partial class Consts
// Use these assembly version constants to make code more maintainable.
//
public const string MonoVersion = "6.0.0.235";
public const string MonoVersion = "6.0.0.241";
public const string MonoCompany = "Mono development team";
public const string MonoProduct = "Mono Common Language Infrastructure";
public const string MonoCopyright = "(c) Various Mono authors";

View File

@ -543,6 +543,7 @@ namespace System.Windows.Forms {
protected override void Dispose(bool disposing) {
base.Dispose(disposing);
active_control = null;
}
// LAMESPEC This used to be documented, but it's not in code

View File

@ -1 +1 @@
85d042e97b012302035f328d2e42cf2c38c8385d
d9fff17a8968e5c1dcabf968910a4d3cbfeeee71

View File

@ -59,13 +59,14 @@ namespace System.Windows.Forms {
public DataGridViewCheckBoxCell (bool threeState) : this()
{
this.threeState = threeState;
editingCellFormattedValue = CheckState.Unchecked;
if (threeState)
editingCellFormattedValue = CheckState.Unchecked;
}
public virtual object EditingCellFormattedValue {
get { return editingCellFormattedValue; }
set {
if (FormattedValueType == null || value == null || value.GetType() != FormattedValueType || !(value is Boolean) || !(value is CheckState)) {
if (FormattedValueType == null || value == null || !FormattedValueType.IsAssignableFrom(value.GetType())) {
throw new ArgumentException("Cannot set this property.");
}
editingCellFormattedValue = value;
@ -192,7 +193,11 @@ namespace System.Windows.Forms {
public virtual void PrepareEditingCellForEdit (bool selectAll)
{
editingCellFormattedValue = GetCurrentValue ();
CheckState cs = GetCurrentValue();
if (threeState)
editingCellFormattedValue = cs;
else
editingCellFormattedValue = cs == CheckState.Checked;
}
public override string ToString ()

View File

@ -51,9 +51,9 @@ namespace System.Windows.Forms {
private bool closed;
FormBorderStyle form_border_style;
private bool is_active;
private bool autoscale;
private bool autoscale;
private Size clientsize_set;
private Size autoscale_base_size;
private Size autoscale_base_size;
private bool allow_transparency;
private static Icon default_icon;
internal bool is_modal;
@ -90,11 +90,11 @@ namespace System.Windows.Forms {
internal int is_changing_visible_state;
internal bool has_been_visible;
private bool shown_raised;
private bool close_raised;
private bool close_raised;
private bool is_clientsize_set;
internal bool suppress_closing_events;
internal bool waiting_showwindow; // for XplatUIX11
private bool is_minimizing;
private bool is_minimizing;
private bool show_icon = true;
private MenuStrip main_menu_strip;
private bool right_to_left_layout;
@ -384,35 +384,27 @@ namespace System.Windows.Forms {
InternalClientSize = new Size (this.Width - (SystemInformation.FrameBorderSize.Width * 2), this.Height - (SystemInformation.FrameBorderSize.Height * 2) - SystemInformation.CaptionHeight);
restore_bounds = Bounds;
}
#endregion // Public Constructor & Destructor
#endregion // Public Constructor & Destructor
#region Public Static Properties
#region Public Static Properties (with helper functions)
public static Form ActiveForm {
get {
Control active;
Control ctrl = FromHandle (XplatUI.GetActive ());
active = FromHandle(XplatUI.GetActive());
if (active != null) {
if ( !(active is Form)) {
Control parent;
parent = active.Parent;
while (parent != null) {
if (parent is Form) {
return (Form)parent;
}
parent = parent.Parent;
}
} else {
return (Form)active;
}
while (!(ctrl == null || Form.IsVisibleAndNotClosedForm (ctrl))) {
ctrl = ctrl.Parent;
}
return null;
return (Form) ctrl; // null or Form
}
}
private static bool IsVisibleAndNotClosedForm (Control ctrl)
{
return (ctrl is Form form) && !form.closed && form.Visible;
}
#endregion // Public Static Properties
#region Public Instance Properties
@ -2547,6 +2539,7 @@ namespace System.Windows.Forms {
return; // prevent closing a disabled form.
Form act = Form.ActiveForm;
// Don't close this form if there's another modal form visible.
if (act != null && act != this && act.Modal == true) {
// Check if any of the parents up the tree is the modal form,
@ -2576,9 +2569,9 @@ namespace System.Windows.Forms {
if (is_modal) {
Hide ();
} else {
Dispose ();
Dispose ();
if (act != null && act != this)
act.SelectActiveControl ();
act.SelectActiveControl();
}
mdi_parent = null;
} else {

View File

@ -199,6 +199,36 @@ namespace MonoTests.System.Windows.Forms
Assert.AreEqual (null, c.EditedFormattedValue, "A1");
}
[Test]
public void EditingCellFormattedValue()
{
var boolCheckBoxCell = new DataGridViewCheckBoxCell();
Assert.AreEqual(false, boolCheckBoxCell.EditingCellFormattedValue, "A1");
boolCheckBoxCell.EditingCellFormattedValue = true;
Assert.AreEqual(true, boolCheckBoxCell.EditingCellFormattedValue, "A2");
var treeStateCheckBoxCell = new DataGridViewCheckBoxCell(true);
Assert.AreEqual(CheckState.Unchecked, treeStateCheckBoxCell.EditingCellFormattedValue, "A3");
treeStateCheckBoxCell.EditingCellFormattedValue = CheckState.Checked;
Assert.AreEqual(CheckState.Checked, treeStateCheckBoxCell.EditingCellFormattedValue, "A4");
}
[Test]
[ExpectedException(typeof(ArgumentException))]
public void BoolEditingCellFormattedValueCheckStateSet()
{
var boolCheckBoxCell = new DataGridViewCheckBoxCell();
boolCheckBoxCell.EditingCellFormattedValue = CheckState.Checked;
}
[Test]
[ExpectedException(typeof(ArgumentException))]
public void TreeStateEditingCellFormattedValueBoolSet()
{
var treeStateCheckBoxCell = new DataGridViewCheckBoxCell(true);
treeStateCheckBoxCell.EditingCellFormattedValue = false;
}
[Test]
public void FormattedValueType ()
{

View File

@ -6,15 +6,17 @@
//
using System;
using NUnit.Framework;
using System.Windows.Forms;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Threading;
using System.Threading.Tasks;
using Timer = System.Windows.Forms.Timer;
using System.Globalization;
using NUnit.Framework;
namespace MonoTests.System.Windows.Forms
{
[TestFixture]
@ -703,6 +705,120 @@ namespace MonoTests.System.Windows.Forms
}
}
[TestFixture]
public class OnClosedOverride
{
[Test]
public void OnClosedOverride_Test1 ()
{
const bool removeButtonOnClick = false;
using (var f = new ButtonedForm (removeButtonOnClick)) {
f.Show ();
Assert.Null (f.onClosedForm.CatchedException, "An exception has been detected in `WndProc`");
}
}
[Test]
public void OnClosedOverride_Test2 ()
{
const bool removeButtonOnClick = true;
var task = Task.Run (() => {
using (var f = new ButtonedForm (removeButtonOnClick)) {
f.Show ();
}
});
var ok = task.Wait (TimeSpan.FromSeconds (1));
Assert.True (ok, "Infinite loop has been detected in `WndProc`");
}
public partial class ButtonedForm : Form
{
// We need to controls on this form. One of them must be active (button).
public Button button = new Button ();
private Label label = new Label ();
private bool removeButtonOnClick;
public OnClosedForm onClosedForm;
public ButtonedForm (bool removeButtonOnClick)
{
this.removeButtonOnClick = removeButtonOnClick;
this.Controls.Add( button);
this.Controls.Add (label);
this.Text = "ButtonedForm";
button.Text = "Click to Close";
onClosedForm = new OnClosedForm (this);
onClosedForm.Show ();
button.Click += click_Button;
Shown += shown_ButtonedForm;
}
protected void click_Button (object sender, EventArgs e)
{
if (removeButtonOnClick) // This property switches test between to two different issues.
this.Controls.Remove (button);
onClosedForm.Close ();
}
public void shown_ButtonedForm (object sender, EventArgs e)
{
// TODO:
// It is necessary to add some sleep before click button. This phenomenon apparently
// is stemmed from the asynchronous nature of `XplatUI.SendMessage`: see method
// `Form.SetVisibleCore()` in `Froms.cs`.
Thread.Sleep (200);
EmulateButtonClick ();
}
public void EmulateButtonClick ()
{
// When one click a button, the parent form an then the button take focus.
// This is vital to reproduce the issue https://github.com/mono/mono/issues/13150.
button.Focus ();
click_Button (null, null);
}
}
public partial class OnClosedForm : Form
{
private ButtonedForm buttonedForm;
public Exception CatchedException;
public OnClosedForm (ButtonedForm buttonedForm)
{
this.buttonedForm = buttonedForm;
this.CatchedException = null;
this.Text = "OnClosedForm";
}
protected override void OnClosed (EventArgs e)
{
base.OnClosed (e);
buttonedForm.Close ();
}
protected override void WndProc (ref Message message)
{
try {
base.WndProc (ref message);
}
catch (Exception ex) {
CatchedException = ex;
}
}
}
}
[TestFixture,Ignore ("Test Breaks")]
public class InputLanguageChangedEvent
{

View File

@ -1,9 +0,0 @@
System.IO/DefaultWatcher.cs
System.IO/FAMWatcher.cs
System.IO/NullFileWatcher.cs
System.IO/FileAction.cs
System.IO/FileSystemWatcher.cs
System.IO/IFileWatcher.cs
System.IO/KeventWatcher.cs
System.IO/SearchPattern.cs
System.IO/CoreFXFileSystemWatcherProxy.cs

View File

@ -1,4 +1,2 @@
#include mono_fsw.sources
../../../external/corefx/src/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.UnknownUnix.cs
corefx/Unix/Interop.cs
corefx/Unix/Interop.Read.cs

View File

@ -4,13 +4,3 @@
Mono.AppleTls/MonoCertificatePal.Mobile.cs
Mono.AppleTls/SafeHandles.cs
../../../external/corefx/src/Common/src/Interop/OSX/Interop.Libraries.cs
../../../external/corefx/src/Common/src/Interop/OSX/Interop.EventStream.cs
../../../external/corefx/src/Common/src/Interop/OSX/Interop.RunLoop.cs
../../../external/corefx/src/Common/src/Interop/OSX/Interop.CoreFoundation.cs
../../../external/corefx/src/Common/src/Interop/Unix/System.Native/Interop.Sync.cs
../../../external/corefx/src/Common/src/Interop/Unix/System.Native/Interop.RealPath.cs
../../../external/corefx/src/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.OSX.cs
../../../external/corefx/src/Common/src/Microsoft/Win32/SafeHandles/SafeCreateHandle.OSX.cs
../../../external/corefx/src/Common/src/Microsoft/Win32/SafeHandles/SafeEventStreamHandle.OSX.cs

View File

@ -1 +0,0 @@
#include monotouch_System.dll.exclude.sources

View File

@ -1 +0,0 @@
#include monotouch_System.dll.exclude.sources

View File

@ -1,6 +1,5 @@
#include common.sources
#include common_networking.sources
#include mono_fsw.sources
Microsoft.CSharp/CSharpCodeGenerator.cs
Microsoft.VisualBasic/VBCodeGenerator.cs
@ -134,6 +133,17 @@ System.Diagnostics/PerformanceCounterType.cs
System.Diagnostics/TraceSourceInfo.cs
System.Diagnostics/Win32EventLog.cs
System.IO/DefaultWatcher.cs
System.IO/FAMWatcher.cs
System.IO/NullFileWatcher.cs
System.IO/FileAction.cs
System.IO/FileSystemWatcher.cs
System.IO/IFileWatcher.cs
System.IO/KeventWatcher.cs
System.IO/SearchPattern.cs
System.IO/CoreFXFileSystemWatcherProxy.cs
System.IO.Ports/Handshake.cs
System.IO.Ports/ISerialStream.cs
System.IO.Ports/Parity.cs

View File

@ -252,20 +252,18 @@ namespace System.Globalization
if (source.IsEmpty)
return;
var ti = CultureInfo.CurrentCulture.TextInfo;
fixed (char* pSource = &MemoryMarshal.GetReference (source))
fixed (char* pResult = &MemoryMarshal.GetReference (destination)) {
int length = 0;
char* a = pSource, b = pResult;
if (toUpper) {
while (length < source.Length) {
*b++ = ti.ToUpper (*a++);
*b++ = this.ToUpper (*a++);
length++;
}
} else {
while (length < source.Length) {
*b++ = ti.ToLower (*a++);
*b++ = this.ToLower (*a++);
length++;
}
}

View File

@ -776,5 +776,23 @@ namespace MonoTests.System.Globalization
Assert.IsTrue (f ().Wait (5 * 1000), "#1");
}
[Test]
public void SpanToUpperInvariantDoesntUseCurrentCulture ()
{
string testStr = "test";
var dst = new Span<char> (new char [testStr.Length]);
CultureInfo savedCulture = CultureInfo.CurrentCulture;
CultureInfo.CurrentCulture = new InterceptingLocale ();
testStr.AsSpan ().ToUpperInvariant (dst); // should not throw InvalidOperationException ("Shouldn't be called.")
CultureInfo.CurrentCulture = savedCulture;
Assert.AreEqual ("TEST", dst.ToString ());
}
private class InterceptingLocale : CultureInfo
{
public InterceptingLocale () : base (string.Empty) { }
public override TextInfo TextInfo => throw new InvalidOperationException ("Shouldn't be called.");
}
}
}

View File

@ -1 +1 @@
d93a25b1671769fbdaff15fe610b75b85da3210d
6ce6f98544a2fc12a6640ecc3f56614bd976886f

View File

@ -1 +1 @@
a584629b650df96b2fe92514292133c9a35ea2d6
8f198bd70428e4d67618234fc3ae265258aaa40f

View File

@ -1 +1 @@
5db4337124a233576d3048985731ebebb452e3de
da154945002d8cb693b0d433c8acac2f670023c9

View File

@ -1 +1 @@
e9ef29a7344c109405f4466a5dc931d0dd185740
4f0db980bb640b33fc34ed75ad8a6b93d4e17e6c

View File

@ -1 +1 @@
8c8a120f24516ee3b5a44a667780dc5b2efc82d4
8214d784e326bb6f2ee446b2a4b0321a173fd2e8

View File

@ -1 +1 @@
a44ad0483c91af1cdb98f439398e88f7221be352
b28eb3d07ee2f3e9f925a7b8530aeb364d8ea2d4

View File

@ -1 +1 @@
c9850db866290cb2bd673c7955d61f530059ecdb
a688e65ad9b3171bbaa64f982aba4bb6e289bd87

View File

@ -1 +1 @@
d93a25b1671769fbdaff15fe610b75b85da3210d
6ce6f98544a2fc12a6640ecc3f56614bd976886f

View File

@ -1 +1 @@
a584629b650df96b2fe92514292133c9a35ea2d6
8f198bd70428e4d67618234fc3ae265258aaa40f

View File

@ -1 +1 @@
5db4337124a233576d3048985731ebebb452e3de
da154945002d8cb693b0d433c8acac2f670023c9

View File

@ -1 +1 @@
e9ef29a7344c109405f4466a5dc931d0dd185740
4f0db980bb640b33fc34ed75ad8a6b93d4e17e6c

View File

@ -1 +1 @@
8c8a120f24516ee3b5a44a667780dc5b2efc82d4
8214d784e326bb6f2ee446b2a4b0321a173fd2e8

View File

@ -1 +1 @@
a44ad0483c91af1cdb98f439398e88f7221be352
b28eb3d07ee2f3e9f925a7b8530aeb364d8ea2d4

View File

@ -1 +1 @@
c9850db866290cb2bd673c7955d61f530059ecdb
a688e65ad9b3171bbaa64f982aba4bb6e289bd87

View File

@ -1 +1 @@
d93a25b1671769fbdaff15fe610b75b85da3210d
6ce6f98544a2fc12a6640ecc3f56614bd976886f

View File

@ -1 +1 @@
a584629b650df96b2fe92514292133c9a35ea2d6
8f198bd70428e4d67618234fc3ae265258aaa40f

View File

@ -1 +1 @@
5db4337124a233576d3048985731ebebb452e3de
da154945002d8cb693b0d433c8acac2f670023c9

View File

@ -1 +1 @@
e9ef29a7344c109405f4466a5dc931d0dd185740
4f0db980bb640b33fc34ed75ad8a6b93d4e17e6c

View File

@ -1 +1 @@
8c8a120f24516ee3b5a44a667780dc5b2efc82d4
8214d784e326bb6f2ee446b2a4b0321a173fd2e8

View File

@ -1 +1 @@
a44ad0483c91af1cdb98f439398e88f7221be352
b28eb3d07ee2f3e9f925a7b8530aeb364d8ea2d4

View File

@ -1 +1 @@
c9850db866290cb2bd673c7955d61f530059ecdb
a688e65ad9b3171bbaa64f982aba4bb6e289bd87

View File

@ -1 +1 @@
d93a25b1671769fbdaff15fe610b75b85da3210d
6ce6f98544a2fc12a6640ecc3f56614bd976886f

View File

@ -1 +1 @@
a584629b650df96b2fe92514292133c9a35ea2d6
8f198bd70428e4d67618234fc3ae265258aaa40f

View File

@ -1 +1 @@
0e6d027ed4bfaca726ba53d6331e0bcb2d4428a9
7209d9d6483b68ba04bb284628858be6c7b906cd

View File

@ -1 +1 @@
e9ef29a7344c109405f4466a5dc931d0dd185740
4f0db980bb640b33fc34ed75ad8a6b93d4e17e6c

View File

@ -1 +1 @@
8c8a120f24516ee3b5a44a667780dc5b2efc82d4
8214d784e326bb6f2ee446b2a4b0321a173fd2e8

View File

@ -1 +1 @@
a44ad0483c91af1cdb98f439398e88f7221be352
b28eb3d07ee2f3e9f925a7b8530aeb364d8ea2d4

View File

@ -1 +1 @@
f2cfaa9edcc02641d70c3773235423bec0adeba1
af952fb3c9ce7364c428678c4005db1bc6c3a970

View File

@ -1 +1 @@
#define FULL_VERSION "explicit/0942959"
#define FULL_VERSION "explicit/06c3f55"

View File

@ -1442,10 +1442,10 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
@CROSS_COMPILE_TRUE@test-local:
@HOST_WIN32_TRUE@test-local:
@CROSS_COMPILE_TRUE@clean-local:
@HOST_WIN32_TRUE@clean-local:
@CROSS_COMPILE_TRUE@test-local:
@HOST_WIN32_TRUE@test-local:
clean: clean-am
clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \

View File

@ -515,8 +515,8 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
@ENABLE_MSVC_FALSE@clean-local:
@ENABLE_MSVC_FALSE@install-exec-local:
@ENABLE_MSVC_FALSE@clean-local:
clean: clean-am
clean-am: clean-generic clean-libtool clean-local mostlyclean-am

Binary file not shown.

View File

@ -1 +1 @@
2e9a48d7829a943f8b6660869f6352870d37a3f9
77e2baae58e9d9702bb3fefa8b1c38d69f0d09b3

Binary file not shown.

View File

@ -1 +1 @@
9187c47d713359d101b6f28e8b6af1fecf9af374
398ffbf3c83c7ad4674d8ab2ddb3f174ccd0e890

Binary file not shown.

View File

@ -1 +1 @@
139c5cd6694ab2966b239a3edb1a159e6a9fa563
21406c741dc03f57c5aef119731e67250f66b533

View File

@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: mono 6.0.0.235\n"
"Project-Id-Version: mono 6.0.0.241\n"
"Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
"POT-Creation-Date: 2019-05-12 08:07+0000\n"
"POT-Creation-Date: 2019-05-13 08:07+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

Binary file not shown.

View File

@ -1 +1 @@
46cb6dbcf682c92f6c041cde761e2608d5ac6354
5af0c4dbade73190bea71737e9d716d8145ce9fc