Browse Source

[AVNCOM] Manually pass `bool` values as `int` for now

pull/5081/head
Nikita Tsukanov 6 years ago
parent
commit
165bc28409
  1. 8
      src/Avalonia.Native/Extensions.cs
  2. 2
      src/Avalonia.Native/IAvnMenuItem.cs
  3. 6
      src/Avalonia.Native/PlatformThreadingInterface.cs
  4. 4
      src/Avalonia.Native/PopupImpl.cs
  5. 4
      src/Avalonia.Native/PredicateCallback.cs
  6. 2
      src/Avalonia.Native/ScreenImpl.cs
  7. 2
      src/Avalonia.Native/SystemDialogs.cs
  8. 12
      src/Avalonia.Native/WindowImpl.cs
  9. 12
      src/Avalonia.Native/WindowImplBase.cs
  10. 1
      src/Avalonia.Native/avn.idl

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 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) private void UpdateToggleType(NativeMenuItemToggleType toggleType)
{ {

6
src/Avalonia.Native/PlatformThreadingInterface.cs

@ -33,9 +33,9 @@ namespace Avalonia.Native
_parent = parent; _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); _native.SetSignaledCallback(cb);
} }
public bool CurrentThreadIsLoopThread => _native.CurrentThreadIsLoopThread; public bool CurrentThreadIsLoopThread => _native.CurrentThreadIsLoopThread.FromComBool();
public event Action<DispatcherPriority?> Signaled; public event Action<DispatcherPriority?> Signaled;

4
src/Avalonia.Native/PopupImpl.cs

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

4
src/Avalonia.Native/PredicateCallback.cs

@ -12,9 +12,9 @@ namespace Avalonia.Native
_predicate = predicate; _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.PixelDensity,
screen.Bounds.ToAvaloniaPixelRect(), screen.Bounds.ToAvaloniaPixelRect(),
screen.WorkingArea.ToAvaloniaPixelRect(), screen.WorkingArea.ToAvaloniaPixelRect(),
screen.Primary); screen.Primary.FromComBool());
} }
return result; return result;

2
src/Avalonia.Native/SystemDialogs.cs

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

12
src/Avalonia.Native/WindowImpl.cs

@ -42,14 +42,14 @@ namespace Avalonia.Native
_parent = parent; _parent = parent;
} }
bool IAvnWindowEvents.Closing() int IAvnWindowEvents.Closing()
{ {
if (_parent.Closing != null) if (_parent.Closing != null)
{ {
return _parent.Closing(); return _parent.Closing().AsComBool();
} }
return true; return true.AsComBool();
} }
void IAvnWindowEvents.WindowStateChanged(AvnWindowState state) void IAvnWindowEvents.WindowStateChanged(AvnWindowState state)
@ -69,7 +69,7 @@ namespace Avalonia.Native
public void CanResize(bool value) public void CanResize(bool value)
{ {
_native.SetCanResize(value); _native.SetCanResize(value.AsComBool());
} }
public void SetSystemDecorations(Controls.SystemDecorations enabled) public void SetSystemDecorations(Controls.SystemDecorations enabled)
@ -145,7 +145,7 @@ namespace Avalonia.Native
{ {
_isExtended = extendIntoClientAreaHint; _isExtended = extendIntoClientAreaHint;
_native.SetExtendClientArea(extendIntoClientAreaHint); _native.SetExtendClientArea(extendIntoClientAreaHint.AsComBool());
InvalidateExtendedMargins(); InvalidateExtendedMargins();
} }
@ -198,7 +198,7 @@ namespace Avalonia.Native
public void SetEnabled(bool enable) 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); _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) public void SetTopmost(bool value)
{ {
_native.SetTopMost(value); _native.SetTopMost(value.AsComBool());
} }
public double RenderScaling => _native?.Scaling ?? 1; public double RenderScaling => _native?.Scaling ?? 1;
@ -456,7 +456,7 @@ namespace Avalonia.Native
TransparencyLevel = transparencyLevel; TransparencyLevel = transparencyLevel;
_native?.SetBlurEnabled(TransparencyLevel >= WindowTransparencyLevel.Blur); _native?.SetBlurEnabled((TransparencyLevel >= WindowTransparencyLevel.Blur).AsComBool());
TransparencyLevelChanged?.Invoke(TransparencyLevel); TransparencyLevelChanged?.Invoke(TransparencyLevel);
} }
} }

1
src/Avalonia.Native/avn.idl

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

Loading…
Cancel
Save