Bug 41684 - [Regression] CGRect.Inflate does nothing as of C7
Summary: [Regression] CGRect.Inflate does nothing as of C7
Alias: None
Product: iOS
Classification: Xamarin
Component: Xamarin.iOS.dll ()
Version: XI 9.8 (tvOS / C7)
Hardware: Macintosh Mac OS
: --- normal
Target Milestone: C7SR1
Assignee: Rolf Bjarne Kvinge [MSFT]
Depends on:
Reported: 2016-06-10 09:40 UTC by Brad Moore
Modified: 2016-07-13 17:11 UTC (History)
10 users (show)

Tags: BZRC7S1_C6SR4S1, DefectEscapeReview_Done
Is this bug a regression?: Yes
Last known good build: Cycle 6 – Service Release 4

Test case (9.81 KB, application/zip)
2016-06-16 22:14 UTC, Brendan Zagaeski (Xamarin Team, assistant)

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.

Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:

Description Brad Moore 2016-06-10 09:40:48 UTC
CGRect newRect = CGRect.Inflate(new CGRect(0, 0, 50, 50), 100, 100);

newRect is identical to the rect given in the arguments.


CGRect newRect2 = new CGRect(0, 0, 50, 50);
newRect2.Inflate(100, 100);

newRect2 is still the same as it was initially defined. 

Our app has other issues with touches not working which we now believe to be the same thing, our inflate calls are doing nothing.
Comment 1 dj_technohead 2016-06-10 18:20:14 UTC
I am seeing the exact same issue. Using a previous version of Xamarin, and the Inflate is working.
Comment 2 Randy 2016-06-16 18:52:25 UTC
I just upgraded everything and I see the same problem in both the simulator and on the devices. Both the debug and release build work this way.

Comment 3 Randy 2016-06-16 19:03:22 UTC
The problem seems more basic than this. Perhaps something to do with how parameters are referenced. I tried adding this extension to work around the problem.

		public static void Inflate2 (this CGRect input, nfloat x, nfloat y)
			input.X -= x;
			input.Width += x * 2;
			input.Y -= y;
			input.Height += y * 2;

I can step through and see the values being changed but when I step out, the rectangle that was passed as 'input' hasn't changed. This would normally have been passed as a reference to an object so changing member values in the function would apply after this function returned. Could the handling of the CGRect have changed so it is passing it by value?
Comment 4 Randy 2016-06-16 19:09:35 UTC
The extension method I tried is failing because CGRect is a struct and is passed by value. I don't know if CGRect was a struct in the previous version.
Comment 5 Randy 2016-06-16 19:28:53 UTC
The CGRect.Inflate method isn't working either. Using:

  r = CGRect.Inflate (r, 10, 10)

Doesn't change the value of r
Comment 6 Brendan Zagaeski (Xamarin Team, assistant) 2016-06-16 22:14:12 UTC
Created attachment 16370 [details]
Test case

Just to be thorough, here's a complete test case and example results.

## Steps to replicate

Run the attached test case on simulator or device.

## BAD Results with Xamarin.iOS (39ebb77)

The console output and the text displayed on the first screen of the app show the _same_ values for `oldRect` and `newRect`:

> {X=0,Y=0,Width=50,Height=50}
> {X=0,Y=0,Width=50,Height=50}

## GOOD Results with Xamarin.iOS (d8bedd0)

The console output and the text displayed on the first screen of the app show different values for `oldRect` and `newRect`:

> {X=0,Y=0,Width=50,Height=50}
> {X=-100,Y=-100,Width=250,Height=250}

For good measure, I also tested with:

BAD: Xamarin.iOS (384b09a) (in-progress development build)
Comment 7 Brendan Zagaeski (Xamarin Team, assistant) 2016-06-16 22:50:46 UTC
It looks like the problem in Xamarin.iOS is a couple missing `this` keywords:


(The pass-by-value vs. pass-by-reference issue wouldn't be a concern for the instance method.)
Comment 8 Brad Moore 2016-06-16 23:09:46 UTC
Looking at some of the other source there is some weird inconsistencies there as well.

Like how in the Offset method it access the property X rather than this.x, unsure if that is fixed in compile time to be the same or not.


But either way is good to see the issue has been identified.
Comment 9 xamarinbugzilla 2016-06-17 17:13:23 UTC
How is this just "Normal" priority. Lots of my frame animation and layout math i'm doing is now COMPLETELY hosed. Honestly.
Comment 10 Brendan Zagaeski (Xamarin Team, assistant) 2016-06-17 17:40:44 UTC
To be precise, this bug is _not_ "Normal" priority.  It is "---" priority (no priority assigned at this moment).  It was submitted as "Normal" _severity_ by the original reporting user.  The Xamarin engineering team has not assigned a priority at this moment.  Keep in mind that the "priority" field is primarily used by the Xamarin team to distinguish among bugs on a particular milestone.  I have been chatting with the engineering team about how best to schedule this bug for inclusion in an upcoming release in as timely a fashion as possible.  Regressions reported by several users become a high priority regardless of the value of the priority field.

Xamarin Customer Support
Comment 13 xamarinbugzilla 2016-06-17 18:51:39 UTC
Brendan - Just venting a bit - glad it's fixed. Any idea when that version will roll out to alpha/beta channel?
Comment 14 Brendan Zagaeski (Xamarin Team, assistant) 2016-06-20 21:10:32 UTC
## Status update for any users CC'd on the bug

The candidate fix for this issue will not yet be included as of the "Cycle 6 – Service Release 0" that is being published to the Beta updater channel today and tentatively to the Stable updater channel tomorrow.

The candidate fix for this issue _is_ planned for inclusion in the upcoming "Cycle 7 – Service Release 1" release.  The tentative publication date for that next service release is next week (the week of June 27).  I will monitor the progress of that release to check on the possibility of an initial Beta release as soon as possible.
Comment 15 Arpit Jha 2016-06-22 11:04:13 UTC
Reproduce Status : Reproduced

I have checked this issue with XI and observing the same mentioned in bug description.
Screencast : http://www.screencast.com/t/VeILAios
Environment Info:  https://gist.github.com/Arpit360/9b5c98b7579f74f9db00c2f2721fb1f8

Verify  Status : Verified

I have checked this issue with attached XI  and its working fine.
Screencast: http://www.screencast.com/t/tl3IATtZdhz
Environment Info: https://gist.github.com/anonymous/fa9271a4bb50923c63b7aafd58e6c4ce

As per target milestone, I will verify once fixed merge to the C7SR!
Comment 16 Abhishek 2016-07-05 18:35:25 UTC
I have checked this issue with latest C7 build:

Now this issue is working fine. Here is the screencast for the same: http://www.screencast.com/t/FaqTecaYr

Application Output: https://gist.github.com/Abhishekk360/8c67653199191bf1c3956353465a3ca7

Hence closing this issue.