Browse Source

Merge pull request #5081 from AvaloniaUI/microcom-bool-as-int

[AVNCOM] Manually pass `bool` values as `int` for now
pull/5082/head
Dan Walmsley 5 years ago
committed by GitHub
parent
commit
4961e2ef69
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      native/Avalonia.Native/src/OSX/platformthreading.mm
  2. 8
      src/Avalonia.Native/Extensions.cs
  3. 2
      src/Avalonia.Native/IAvnMenuItem.cs
  4. 6
      src/Avalonia.Native/PlatformThreadingInterface.cs
  5. 4
      src/Avalonia.Native/PopupImpl.cs
  6. 4
      src/Avalonia.Native/PredicateCallback.cs
  7. 2
      src/Avalonia.Native/ScreenImpl.cs
  8. 2
      src/Avalonia.Native/SystemDialogs.cs
  9. 12
      src/Avalonia.Native/WindowImpl.cs
  10. 12
      src/Avalonia.Native/WindowImplBase.cs
  11. 1
      src/Avalonia.Native/avn.idl

2
native/Avalonia.Native/src/OSX/platformthreading.mm

@ -101,7 +101,7 @@ public:
virtual bool GetCurrentThreadIsLoopThread() override
{
return [[NSThread currentThread] isMainThread];
return [NSThread isMainThread];
}
virtual void SetSignaledCallback(IAvnSignaledCallback* cb) override
{

8
src/Avalonia.Native/Extensions.cs

@ -0,0 +1,8 @@
namespace Avalonia.Native
{
internal static class Extensions
{
public static int AsComBool(this bool b) => b ? 1 : 0;
public static bool FromComBool(this int b) => b != 0;
}
}

2
src/Avalonia.Native/IAvnMenuItem.cs

@ -24,7 +24,7 @@ namespace Avalonia.Native.Interop.Impl
private void UpdateTitle(string title) => SetTitle(title ?? "");
private void UpdateIsChecked(bool isChecked) => SetIsChecked(isChecked);
private void UpdateIsChecked(bool isChecked) => SetIsChecked(isChecked.AsComBool());
private void UpdateToggleType(NativeMenuItemToggleType toggleType)
{

6
src/Avalonia.Native/PlatformThreadingInterface.cs

@ -33,9 +33,9 @@ namespace Avalonia.Native
_parent = parent;
}
public void Signaled(int priority, bool priorityContainsMeaningfulValue)
public void Signaled(int priority, int priorityContainsMeaningfulValue)
{
_parent.Signaled?.Invoke(priorityContainsMeaningfulValue ? (DispatcherPriority?)priority : null);
_parent.Signaled?.Invoke(priorityContainsMeaningfulValue.FromComBool() ? (DispatcherPriority?)priority : null);
}
}
@ -50,7 +50,7 @@ namespace Avalonia.Native
_native.SetSignaledCallback(cb);
}
public bool CurrentThreadIsLoopThread => _native.CurrentThreadIsLoopThread;
public bool CurrentThreadIsLoopThread => _native.CurrentThreadIsLoopThread.FromComBool();
public event Action<DispatcherPriority?> Signaled;

4
src/Avalonia.Native/PopupImpl.cs

@ -50,9 +50,9 @@ namespace Avalonia.Native
// NOP on Popup
}
bool IAvnWindowEvents.Closing()
int IAvnWindowEvents.Closing()
{
return true;
return true.AsComBool();
}
void IAvnWindowEvents.WindowStateChanged(AvnWindowState state)

4
src/Avalonia.Native/PredicateCallback.cs

@ -12,9 +12,9 @@ namespace Avalonia.Native
_predicate = predicate;
}
bool IAvnPredicateCallback.Evaluate()
int IAvnPredicateCallback.Evaluate()
{
return _predicate();
return _predicate().AsComBool();
}
}
}

2
src/Avalonia.Native/ScreenImpl.cs

@ -33,7 +33,7 @@ namespace Avalonia.Native
screen.PixelDensity,
screen.Bounds.ToAvaloniaPixelRect(),
screen.WorkingArea.ToAvaloniaPixelRect(),
screen.Primary);
screen.Primary.FromComBool());
}
return result;

2
src/Avalonia.Native/SystemDialogs.cs

@ -26,7 +26,7 @@ namespace Avalonia.Native
if (dialog is OpenFileDialog ofd)
{
_native.OpenFileDialog(nativeParent,
events, ofd.AllowMultiple,
events, ofd.AllowMultiple.AsComBool(),
ofd.Title ?? "",
ofd.Directory ?? "",
ofd.InitialFileName ?? "",

12
src/Avalonia.Native/WindowImpl.cs

@ -42,14 +42,14 @@ namespace Avalonia.Native
_parent = parent;
}
bool IAvnWindowEvents.Closing()
int IAvnWindowEvents.Closing()
{
if (_parent.Closing != null)
{
return _parent.Closing();
return _parent.Closing().AsComBool();
}
return true;
return true.AsComBool();
}
void IAvnWindowEvents.WindowStateChanged(AvnWindowState state)
@ -69,7 +69,7 @@ namespace Avalonia.Native
public void CanResize(bool value)
{
_native.SetCanResize(value);
_native.SetCanResize(value.AsComBool());
}
public void SetSystemDecorations(Controls.SystemDecorations enabled)
@ -145,7 +145,7 @@ namespace Avalonia.Native
{
_isExtended = extendIntoClientAreaHint;
_native.SetExtendClientArea(extendIntoClientAreaHint);
_native.SetExtendClientArea(extendIntoClientAreaHint.AsComBool());
InvalidateExtendedMargins();
}
@ -198,7 +198,7 @@ namespace Avalonia.Native
public void SetEnabled(bool enable)
{
_native.SetEnabled(enable);
_native.SetEnabled(enable.AsComBool());
}
}
}

12
src/Avalonia.Native/WindowImplBase.cs

@ -192,14 +192,14 @@ namespace Avalonia.Native
_parent.RawMouseEvent(type, timeStamp, modifiers, point, delta);
}
bool IAvnWindowBaseEvents.RawKeyEvent(AvnRawKeyEventType type, uint timeStamp, AvnInputModifiers modifiers, uint key)
int IAvnWindowBaseEvents.RawKeyEvent(AvnRawKeyEventType type, uint timeStamp, AvnInputModifiers modifiers, uint key)
{
return _parent.RawKeyEvent(type, timeStamp, modifiers, key);
return _parent.RawKeyEvent(type, timeStamp, modifiers, key).AsComBool();
}
bool IAvnWindowBaseEvents.RawTextInputEvent(uint timeStamp, string text)
int IAvnWindowBaseEvents.RawTextInputEvent(uint timeStamp, string text)
{
return _parent.RawTextInputEvent(timeStamp, text);
return _parent.RawTextInputEvent(timeStamp, text).AsComBool();
}
@ -388,7 +388,7 @@ namespace Avalonia.Native
public void SetTopmost(bool value)
{
_native.SetTopMost(value);
_native.SetTopMost(value.AsComBool());
}
public double RenderScaling => _native?.Scaling ?? 1;
@ -456,7 +456,7 @@ namespace Avalonia.Native
TransparencyLevel = transparencyLevel;
_native?.SetBlurEnabled(TransparencyLevel >= WindowTransparencyLevel.Blur);
_native?.SetBlurEnabled((TransparencyLevel >= WindowTransparencyLevel.Blur).AsComBool());
TransparencyLevelChanged?.Invoke(TransparencyLevel);
}
}

1
src/Avalonia.Native/avn.idl

@ -1,5 +1,6 @@
@clr-namespace Avalonia.Native.Interop
@clr-access internal
@clr-map bool int
@cpp-preamble @@
#include "com.h"
#include "key.h"

Loading…
Cancel
Save