Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public ListViewAdapter(Context context, AListView realListView, ListView listVie
realListView.OnItemClickListener = this;
realListView.OnItemLongClickListener = this;

WeakReferenceMessenger.Default.Register<CloseContextActionsMessage>(this, (recipient, msg) => CloseContextActions());
WeakReferenceMessenger.Default.Register<CloseContextActionsMessage>(this, (r, m) => r.CloseContextActions());

InvalidateCount();
}
Expand Down
3 changes: 2 additions & 1 deletion src/Compatibility/Maps/src/Android/MapRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,8 @@ protected override void OnElementChanged(ElementChangedEventArgs<Map> e)

Control.GetMapAsync(this);

WeakReferenceMessenger.Default.Register<MapRenderer, MapSpan>(this, (renderer, args) => OnMoveToRegionMessage(renderer.Element, args));
WeakReferenceMessenger.Default.Register<MapRenderer, MapSpan>(this,
(r, m) => r.OnMoveToRegionMessage(r.Element, m));

((INotifyCollectionChanged)Map.Pins).CollectionChanged += OnPinCollectionChanged;
((INotifyCollectionChanged)Map.MapElements).CollectionChanged += OnMapElementCollectionChanged;
Expand Down
2 changes: 1 addition & 1 deletion src/Compatibility/Maps/src/iOS/MapRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ protected override void OnElementChanged(ElementChangedEventArgs<View> e)
#endif
}

WeakReferenceMessenger.Default.Register<MapRenderer, MapSpan>(this, (renderer, args) => MoveToRegion(args));
WeakReferenceMessenger.Default.Register<MapRenderer, MapSpan>(this, (r, m) => r.MoveToRegion(m));

if (mapModel.LastMoveToRegion != null)
MoveToRegion(mapModel.LastMoveToRegion, false);
Expand Down
21 changes: 10 additions & 11 deletions src/Controls/src/Core/RadioButton.cs
Original file line number Diff line number Diff line change
Expand Up @@ -388,8 +388,8 @@ void OnGroupNamePropertyChanged(string oldGroupName, string newGroupName)
{
if (string.IsNullOrEmpty(oldGroupName))
{
WeakReferenceMessenger.Default.Register<RadioButton, RadioButtonGroupSelectionChanged>(this, HandleRadioButtonGroupSelectionChanged);
WeakReferenceMessenger.Default.Register<RadioButton, RadioButtonGroupValueChanged>(this, HandleRadioButtonGroupValueChanged);
WeakReferenceMessenger.Default.Register<RadioButton, RadioButtonGroupSelectionChanged>(this, (r,m) => r.HandleRadioButtonGroupSelectionChanged(m));
WeakReferenceMessenger.Default.Register<RadioButton, RadioButtonGroupValueChanged>(this, (r,m) => r.HandleRadioButtonGroupValueChanged(m));
}

WeakReferenceMessenger.Default.Send(new RadioButtonGroupNameChanged(RadioButtonGroup.GetVisualRoot(this), oldGroupName));
Expand All @@ -404,32 +404,31 @@ void OnGroupNamePropertyChanged(string oldGroupName, string newGroupName)
}
}

static bool MatchesScope(RadioButtonScopeMessage message, RadioButton radioButton)
bool MatchesScope(RadioButtonScopeMessage message)
{
return RadioButtonGroup.GetVisualRoot(radioButton) == message.Scope;
return RadioButtonGroup.GetVisualRoot(this) == message.Scope;
}

static void HandleRadioButtonGroupSelectionChanged(RadioButton receiver, RadioButtonGroupSelectionChanged args)
void HandleRadioButtonGroupSelectionChanged(RadioButtonGroupSelectionChanged args)
{
var selected = args.RadioButton;

if (!receiver.IsChecked || selected == receiver || string.IsNullOrEmpty(receiver.GroupName) || receiver.GroupName != selected.GroupName || !MatchesScope(args, receiver))
if (!IsChecked || selected == this || string.IsNullOrEmpty(GroupName) || GroupName != selected.GroupName || !MatchesScope(args))
{
return;
}

receiver.IsChecked = false;
IsChecked = false;
}

static void HandleRadioButtonGroupValueChanged(RadioButton radioButton, RadioButtonGroupValueChanged args)
void HandleRadioButtonGroupValueChanged(RadioButtonGroupValueChanged args)
{
if (radioButton.IsChecked || string.IsNullOrEmpty(radioButton.GroupName) || radioButton.GroupName != args.GroupName
|| radioButton.Value != args.Value || !MatchesScope(args, radioButton))
if (IsChecked || string.IsNullOrEmpty(GroupName) || GroupName != args.GroupName || Value != args.Value || !MatchesScope(args))
{
return;
}

radioButton.IsChecked = true;
IsChecked = true;
}

static void BindToTemplatedParent(BindableObject bindableObject, params BindableProperty[] properties)
Expand Down
12 changes: 6 additions & 6 deletions src/Controls/src/Core/RadioButtonGroupController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,17 @@ public RadioButtonGroupController(Compatibility.Layout<View> layout)
UpdateGroupNames(layout, _groupName);
}

WeakReferenceMessenger.Default.Register<RadioButtonGroupController, RadioButtonGroupSelectionChanged>(this, HandleRadioButtonGroupSelectionChanged);
WeakReferenceMessenger.Default.Register<RadioButtonGroupController, RadioButtonGroupNameChanged>(this, HandleRadioButtonGroupNameChanged);
WeakReferenceMessenger.Default.Register<RadioButtonGroupController, RadioButtonValueChanged>(this, HandleRadioButtonValueChanged);
WeakReferenceMessenger.Default.Register<RadioButtonGroupController, RadioButtonGroupSelectionChanged>(this, (r,m) => r.HandleRadioButtonGroupSelectionChanged(m));
WeakReferenceMessenger.Default.Register<RadioButtonGroupController, RadioButtonGroupNameChanged>(this, (r,m) => HandleRadioButtonGroupNameChanged(m));

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missed r. here? 🤔
I also would recommend making the lambdas static to make the code more explicit and less error prone 🙂

Suggested change
WeakReferenceMessenger.Default.Register<RadioButtonGroupController, RadioButtonGroupNameChanged>(this, (r,m) => HandleRadioButtonGroupNameChanged(m));
WeakReferenceMessenger.Default.Register<RadioButtonGroupController, RadioButtonGroupNameChanged>(this, static (r,m) => r.HandleRadioButtonGroupNameChanged(m));

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also would recommend making the lambdas static

Ah, added in C# 9. TIL.

WeakReferenceMessenger.Default.Register<RadioButtonGroupController, RadioButtonValueChanged>(this, (r,m) => r.HandleRadioButtonValueChanged(m));
}

bool MatchesScope(RadioButtonScopeMessage message)
{
return RadioButtonGroup.GetVisualRoot(_layout) == message.Scope;
}

void HandleRadioButtonGroupSelectionChanged(RadioButtonGroupController controller, RadioButtonGroupSelectionChanged args)
void HandleRadioButtonGroupSelectionChanged(RadioButtonGroupSelectionChanged args)
{
var selected = args.RadioButton;

Expand All @@ -50,7 +50,7 @@ void HandleRadioButtonGroupSelectionChanged(RadioButtonGroupController controlle
_layout.SetValue(RadioButtonGroup.SelectedValueProperty, selected.Value);
}

void HandleRadioButtonGroupNameChanged(RadioButtonGroupController controller, RadioButtonGroupNameChanged args)
void HandleRadioButtonGroupNameChanged(RadioButtonGroupNameChanged args)
{
if (args.OldName != _groupName || !MatchesScope(args))
{
Expand All @@ -60,7 +60,7 @@ void HandleRadioButtonGroupNameChanged(RadioButtonGroupController controller, Ra
_layout.ClearValue(RadioButtonGroup.SelectedValueProperty);
}

void HandleRadioButtonValueChanged(RadioButtonGroupController controller, RadioButtonValueChanged args)
void HandleRadioButtonValueChanged(RadioButtonValueChanged args)
{
var radioButton = args.RadioButton;

Expand Down