Skip to content

Commit

Permalink
[Android] Support PerformContextMenuAction (#15608)
Browse files Browse the repository at this point in the history
* support PerformContextMenuAction

* update

* update to new api
  • Loading branch information
ijklam authored May 10, 2024
1 parent 7ade4fa commit 7a7bee4
Showing 1 changed file with 30 additions and 6 deletions.
36 changes: 30 additions & 6 deletions src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public TopLevelImpl(AvaloniaView avaloniaView, bool placeOnTop = false)
{
throw new ArgumentException("AvaloniaView.Context must not be null");
}

_view = new ViewImpl(avaloniaView.Context, this, placeOnTop);
_textInputMethod = new AndroidInputMethod<ViewImpl>(_view);
_keyboardHelper = new AndroidKeyboardEventsHelper<TopLevelImpl>(this);
Expand Down Expand Up @@ -85,7 +85,7 @@ public TopLevelImpl(AvaloniaView avaloniaView, bool placeOnTop = false)
public virtual Size ClientSize => _view.Size.ToSize(RenderScaling);

public Size? FrameSize => null;

public Action? Closed { get; set; }

public Action<RawInputEventArgs>? Input { get; set; }
Expand Down Expand Up @@ -136,7 +136,7 @@ public void SetInputRoot(IInputRoot inputRoot)
{
InputRoot = inputRoot;
}

public virtual void Show()
{
_view.Visibility = ViewStates.Visible;
Expand All @@ -148,7 +148,7 @@ void Draw()
{
Paint?.Invoke(new Rect(new Point(0, 0), ClientSize));
}

public virtual void Dispose()
{
_systemNavigationManager.Dispose();
Expand Down Expand Up @@ -264,11 +264,11 @@ public sealed override IInputConnection OnCreateInputConnection(EditorInfo? outA
}

public IPopupImpl? CreatePopup() => null;

public Action? LostFocus { get; set; }
public Action<WindowTransparencyLevel>? TransparencyLevelChanged { get; set; }

public WindowTransparencyLevel TransparencyLevel
public WindowTransparencyLevel TransparencyLevel
{
get => _transparencyLevel;
private set
Expand Down Expand Up @@ -681,5 +681,29 @@ public override bool PerformEditorAction([GeneratedEnum] ImeAction actionCode)

return extract;
}

public override bool PerformContextMenuAction(int id)
{
if (InputMethod.Client is not { } client) return false;

switch (id)
{
case global::Android.Resource.Id.SelectAll:
client.ExecuteContextMenuAction(ContextMenuAction.SelectAll);
return true;
case global::Android.Resource.Id.Cut:
client.ExecuteContextMenuAction(ContextMenuAction.Cut);
return true;
case global::Android.Resource.Id.Copy:
client.ExecuteContextMenuAction(ContextMenuAction.Copy);
return true;
case global::Android.Resource.Id.Paste:
client.ExecuteContextMenuAction(ContextMenuAction.Paste);
return true;
default:
break;
}
return base.PerformContextMenuAction(id);
}
}
}

0 comments on commit 7a7bee4

Please sign in to comment.