I took your test, and turned it into a console application, and did what you suggested. It seems it just hangs Mono. I tried the same, but making it a WinForms app this time, and added a message box in the event handler. The message box shows up on .NET (4 times) but not on Mono.
Attaching the WinForms app here. http://mono.1490590.n4.nabble.com/file/n4649703/DgwTest.zip DgwTest.zip Steven Boswell II wrote > > Re: patch 1, I have an idea. Take the unit-test code and run it as an > application, and put a call to "Console.WriteLine > (Environment.StackTrace)" in the event-handler. If the > EditingControlShowing event isn't being called from my patched code, I'd > like to know where it's being called from. > > And I'll go ahead and write unit tests for patches 2, 4, 5, and 7, if I > can figure out some. > > Steven Boswell > > > > ________________________________ > From: Stifu <stifu@> > To: [email protected] > Sent: Sunday, June 3, 2012 11:03 PM > Subject: Re: [Mono-dev] Patches for mono-winforms > > "Also, as far as I can tell, patches 2, 4, and 5 are really small, and > defy > the creation of unit tests anyway -- it should be enough for someone > knowledgeable about WinForms to decide if these changes are correct." > > No matter how small these patches are, and no matter if they're obviously > correct. If something can be tested, it should be tested. :) I've > committed > several one-line patches, each of them coming with their unit test, so > I've > spent more time writing tests than fixes. > > This also ensures that no one breaks the tests / feature later on, by > working on the code, trying to fix another bug, moving code around, > refactoring... I guess you could easily come up with various stats showing > that fixes without tests are XX% more likely to get broken again later. > Tests also ensure we're on the same level across all OSes or machine type > (for example, we could imagine patch number X does not fix the bug on Mac > for some reason, and so this problem would be detected thanks to the > test). > To sum things up, tests are what makes a framework mature and reliable. > Without them, you're just applying temporary patches. > > I'll check all of this out when I have more time. And I don't mind coming > up > with the tests myself, if I can figure out something. As for patch 1, I'll > just check if I can reproduce the bug on Linux. > > > Steven Boswell II wrote >> >> Yes, the unit test fails for me without my patch -- I made darn sure of >> that after wasting your time. ;-) The additions to my unit test ensure >> that the EditingControlShowing event is getting called. Without my >> patch, >> Mono never calls that event. So if it's succeeding for you...I'm totally >> lost. >> >> Let me know if you need any more info, or any other changes, so that you >> can commit patch 3. >> >> Also, as far as I can tell, patches 2, 4, and 5 are really small, and >> defy >> the creation of unit tests anyway -- it should be enough for someone >> knowledgeable about WinForms to decide if these changes are correct. I >> know that it brings Mono's behavior in line with .NET. Please let me >> know >> if I should do anything else with these patches. >> >> For the time being, I seem to be out of bugs, and am working on >> annoyances...that's a good sign. :-) Enclosed is my latest change; >> there's no unit test because it requires user interaction to even see the >> problem. Before, getting a data-grid-view combo-box to drop down its >> menu >> took three mouse-clicks. Now, it only takes one. This brings the >> behavior in line with .NET. Let me know what you think of this change. >> >> Steven Boswell >> >> >> ________________________________ >> From: Stifu <stifu@> >> To: [email protected] >> Sent: Sunday, June 3, 2012 3:20 PM >> Subject: Re: [Mono-dev] Patches for mono-winforms >> >> Nope, I still can't get the tests to fail. :\ >> Does it fail for you (when unpatched)? It's possible the bug doesn't >> affect >> Mono on Windows, but I'd like to make sure of it. >> >> Can't see anything wrong with patch 3 at first sight. >> >> >> Steven Boswell II wrote >>> >>> Sorry about that. I've added code to make sure the event-handler gets >>> called. Enclosed is another attempt. >>> Also, do you have any further comments about patch 3? For your >>> convenience, I've enclosed another copy. >>> >>> >>> ________________________________ >>> From: Stifu <stifu@> >>> To: [email protected] >>> Sent: Sunday, June 3, 2012 8:58 AM >>> Subject: Re: [Mono-dev] Patches for mono-winforms >>> >>> I checked out your unit tests for patch 1. >>> On Mono on Windows, they already pass even without your patch. I cannot >>> check Linux right now. >>> >>> Have you double checked that your tests fail without your patch? >>> Thanks for clearing that up. >>> >>> >>> Steven Boswell II wrote >>>> >>>> Crap, I didn't notice that InitializeEditingControl() was public. >>>> >>>> My whole motivation for splitting up that method was to make sure that >>>> the >>>> style modified by the EditingControlShowing event-handler would be >>>> applied >>>> to the cell. But that's done a few lines later, by the call to >>>> "dgvEditingControl.ApplyCellStyleToEditingControl (style)". Argh. >>>> >>>> In any case, enclosed is a much simpler patch that doesn't change the >>>> public API. Hopefully I didn't do anything else stupid -- I'm truly >>>> not >>>> trying to waste your time. ;-) >>>> >>>> Steven Boswell >>>> >>>> >>>> ________________________________ >>>> From: Stifu <stifu@> >>>> To: [email protected] >>>> Sent: Sunday, June 3, 2012 1:33 AM >>>> Subject: Re: [Mono-dev] Patches for mono-winforms >>>> >>>> This patch does not look good to me, because you're changing the public >>>> API. >>>> >>>> In DataGridViewCell, the InitializeEditingControl method expects 2 >>>> parameters rather than 3 after your patch, which means we're breaking >>>> the >>>> API and are no longer compatible with .NET. >>>> >>>> >>>> Steven Boswell II wrote >>>>> >>>>> Argh...one more dumb oversight in my change. >>>>> Enclosed is ANOTHER version of the patch. >>>>> I wish I had the luxury of working on my hobbies when I was awake and >>>>> energetic. ;-) >>>>> >>>>> Steven Boswell >>>>> >>>>> >>>>> ________________________________ >>>>> From: Steven Boswell II <ulatekh@> >>>>> To: "[email protected]" <[email protected]> >>>>> Sent: Saturday, June 2, 2012 7:58 PM >>>>> Subject: Re: [Mono-dev] Patches for mono-winforms >>>>> >>>>> >>>>> Rob, you're my hero. Very few tests in DataGridViewTest.cs create a >>>>> Form, >>>>> but most of the ones that do involve data binding. >>>>> I added a Form to my test, and it succeeded immediately. Apparently, >>>>> Application.Run() isn't necessary, but that was a good idea. >>>>> Enclosed is a revised patch, for review by the Powers That Be. >>>>> >>>>> Steven Boswell >>>>> >>>>> >>>>> ________________________________ >>>>> From: Rob Wilkens <robwilkens@> >>>>> To: [email protected] >>>>> Sent: Saturday, June 2, 2012 6:46 PM >>>>> Subject: Re: [Mono-dev] Patches for mono-winforms >>>>> >>>>> >>>>> On 06/02/2012 09:38 PM, Rob Wilkens wrote: >>>>> On 06/02/2012 08:55 PM, Steven Boswell II wrote: >>>>>>The EditingControlShowing event has to be called, and it has to be >> called >>>> after the control's contents have been initialized properly...that's >>>> not >>>> really two separate issues. >>>>>>> >>>>>>> >>>>>>>The enclosed patch is an updated version; in addition to having a unit >>>> test, it fixes one additional bug revealed by my testing. Before, >>>> DataGridViewComboBoxCell.InitializeEditingControl() was setting the >>>> initial >>>> value from the FormattedValue property, instead of >>>> the initialFormattedValue >>>> parameter. >>>>>>> >>>>>>> >>>>>>>I tried to write an additional unit test that worked with bound data, >>> but >>>> for the life of me I can't figure out why it doesn't work. I've done >>>> data-binding with DataGridView before...it wasn't this mysterious. In >>>> my >>>> unit test, after I set the DataGridView's DataSource property, the >>>> data-grid >>>> doesn't initialize properly; instead of four rows, it ends up with one >>>> row, >>>> and all its cell values are null. After beating my head against the >>>> wall >>>> for several hours, I'm perfectly happy to be told what a moron I am, if >>>> someone will just tell me why the EditingControlShowingTest_Bound test >>>> doesn't work. :-) >>>>>>> >>>>>>> >>>>>>>Steven Boswell >>>>>>> >>>>>>Not writing to call you a moron, I'm a newbie myself and i could >>>>> be wrong... But i copied and pasted your test code for >>>>> EditingControlShowingTest_Bound into Visual Studio 2010, but >>>>> rather than creating the DataGridVIew in code i placed it on the >>>>> form and modified your code to use the one on the form... And i >>>>> disabled the asserts... And from what i can tell it runs fine in >>>>> both .net and mono (that is, the data grid view populates). >>>>>> >>>>>>One thing that I noticed about your code, though, is it depends on >>>>> a 'showing' event.. >>>>>> >>>>>>And i wonder if that means your datagridview needs to be placed on >>>>> a form which is displayed, so that it is actually shown... >>>>>> >>>>>>i.e. change your code something like this: >>>>>> >>>>>>using (Form Form1=new Form()){ >>>>>> Form1.Controls.Add(_dataGridView);//optionaly set sizeand >>>>> location of both gridview and form >>>>>> Form1.Show(); >>>>>> >>>>>> ... insert the rest of your code here .... >>>>>>} >>>>>> >>>>> Oh, and if i'm right, you might need the equivalent of an >>>>> Application.Run(Form1) to process the events since you're listening >>>>> for >>>>> events, just don't forget to close Form1 or the Run loop might never >>>>> end >>>>> and your test can hang up with a displayed window... >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Mono-devel-list mailing list >>>>> [email protected] >>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Mono-devel-list mailing list >>>>> [email protected] >>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>>> _______________________________________________ >>>>> Mono-devel-list mailing list >>>>> [email protected] >>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>>> >>>> >>>> -- >>>> View this message in context: >>>> http://mono.1490590.n4.nabble.com/Patches-for-mono-winforms-tp4649620p4649670.html >>>> Sent from the Mono - Dev mailing list archive at Nabble.com. >>>> _______________________________________________ >>>> Mono-devel-list mailing list >>>> [email protected] >>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>> _______________________________________________ >>>> Mono-devel-list mailing list >>>> [email protected] >>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>> >>> >>> >>> -- >>> View this message in context: >>> http://mono.1490590.n4.nabble.com/Patches-for-mono-winforms-tp4649620p4649674.html >>> Sent from the Mono - Dev mailing list archive at Nabble.com. >>> _______________________________________________ >>> Mono-devel-list mailing list >>> [email protected] >>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>> _______________________________________________ >>> Mono-devel-list mailing list >>> [email protected] >>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>> >> >> >> -- >> View this message in context: >> http://mono.1490590.n4.nabble.com/Patches-for-mono-winforms-tp4649620p4649683.html >> Sent from the Mono - Dev mailing list archive at Nabble.com. >> _______________________________________________ >> Mono-devel-list mailing list >> [email protected] >> http://lists.ximian.com/mailman/listinfo/mono-devel-list >> _______________________________________________ >> Mono-devel-list mailing list >> [email protected] >> http://lists.ximian.com/mailman/listinfo/mono-devel-list >> > > -- > View this message in context: > http://mono.1490590.n4.nabble.com/Patches-for-mono-winforms-tp4649620p4649691.html > Sent from the Mono - Dev mailing list archive at Nabble.com. > _______________________________________________ > Mono-devel-list mailing list > [email protected] > http://lists.ximian.com/mailman/listinfo/mono-devel-list > _______________________________________________ > Mono-devel-list mailing list > [email protected] > http://lists.ximian.com/mailman/listinfo/mono-devel-list > -- View this message in context: http://mono.1490590.n4.nabble.com/Patches-for-mono-winforms-tp4649620p4649703.html Sent from the Mono - Dev mailing list archive at Nabble.com. _______________________________________________ Mono-devel-list mailing list [email protected] http://lists.ximian.com/mailman/listinfo/mono-devel-list
