internal int WidgetFuncCallback(WidgetMessage inMessage, WidgetID inWidget, IntPtr inParam1, IntPtr inParam2) { if (!IsEnabled) { return(0); } return(HandleMessageCore(inMessage, inWidget, inParam1, inParam2)); }
public static int FixedLayout(WidgetMessage inMessage, WidgetID inWidget, IntPtr inParam1, IntPtr inParam2) { IL.DeclareLocals(false); Guard.NotNull(FixedLayoutPtr); int result; IL.Push(inMessage); IL.Push(inWidget); IL.Push(inParam1); IL.Push(inParam2); IL.Push(FixedLayoutPtr); IL.Emit.Calli(new StandAloneMethodSig(CallingConvention.Cdecl, typeof(int), typeof(WidgetMessage), typeof(WidgetID), typeof(IntPtr), typeof(IntPtr))); IL.Pop(out result); return(result); }
protected override void Handle(WidgetMessage args) { App.QueueOnMainThread(() => { var widget = Widgets[args.WidgetId]; if (widget != null) { widget.HandleMessage(args.Name, args.Args); } else { Log.Warn("UI message {1} to non-existent widget {0}", args.WidgetId, args.Name); } }); }
public static int DefocusKeyboard(WidgetMessage inMessage, WidgetID inWidget, IntPtr inParam1, IntPtr inParam2, int inEatClick) { IL.DeclareLocals(false); Guard.NotNull(DefocusKeyboardPtr); int result; IL.Push(inMessage); IL.Push(inWidget); IL.Push(inParam1); IL.Push(inParam2); IL.Push(inEatClick); IL.Push(DefocusKeyboardPtr); IL.Emit.Calli(new StandAloneMethodSig(CallingConvention.Cdecl, typeof(int), typeof(WidgetMessage), typeof(WidgetID), typeof(IntPtr), typeof(IntPtr), typeof(int))); IL.Pop(out result); return(result); }
static int StandardWidgetCallback(WidgetMessage inmessage, WidgetID inwidget, IntPtr inparam1, IntPtr inparam2) { try { if (TryGetById(inwidget, out var widget) && widget is StandardWidget standardWidget) { return(standardWidget.HandleMessage(inmessage, inparam1, inparam2).ToInt()); } } finally { if (inmessage == WidgetMessage.Destroy) { Unregister(inwidget); } } return(0); }
public static int DragWidget(WidgetMessage inMessage, WidgetID inWidget, IntPtr inParam1, IntPtr inParam2, int inLeft, int inTop, int inRight, int inBottom) { IL.DeclareLocals(false); Guard.NotNull(DragWidgetPtr); int result; IL.Push(inMessage); IL.Push(inWidget); IL.Push(inParam1); IL.Push(inParam2); IL.Push(inLeft); IL.Push(inTop); IL.Push(inRight); IL.Push(inBottom); IL.Push(DragWidgetPtr); IL.Emit.Calli(new StandAloneMethodSig(CallingConvention.Cdecl, typeof(int), typeof(WidgetMessage), typeof(WidgetID), typeof(IntPtr), typeof(IntPtr), typeof(int), typeof(int), typeof(int), typeof(int))); IL.Pop(out result); return(result); }
protected virtual void Handle(WidgetMessage message) { }
/// <inheritdoc /> protected override bool HandleMessage(WidgetMessage message, Widget widget, IntPtr param1, IntPtr param2) { throw new NotImplementedException(); }
/// <inheritdoc /> protected override int HandleMessageCore(WidgetMessage message, WidgetID widgetId, IntPtr param1, IntPtr param2) { return(WidgetUtilsAPI.SelectIfNeeded(message, widgetId, param1, param2, EatClicks.ToInt())); }
/// <summary> /// High-level message handling routine. /// </summary> /// <param name="message">The message.</param> /// <param name="widget">The widget.</param> /// <param name="param1">The first message parameter.</param> /// <param name="param2">The second message parameter.</param> /// <returns><see langword="true" /> if the message was handled; <see langword="false" /> otherwise.</returns> /// <seealso cref="HandleMessageCore"/> protected abstract bool HandleMessage(WidgetMessage message, Widget widget, IntPtr param1, IntPtr param2);
/// <summary> /// Low-level message handling routine. /// </summary> /// <remarks> /// You should generally prefer overriding <see cref="HandleMessage"/> as it provides higher-level abstraction. /// </remarks> /// <param name="message">The message.</param> /// <param name="widgetId">The widget ID.</param> /// <param name="param1">The first message parameter.</param> /// <param name="param2">The second message parameter.</param> /// <returns>1 if the message was handled; 0 otherwise.</returns> /// <seealso cref="HandleMessage"/> protected virtual int HandleMessageCore(WidgetMessage message, WidgetID widgetId, IntPtr param1, IntPtr param2) { var widget = Widget.GetOrCreate(widgetId); return(HandleMessage(message, widget, param1, param2).ToInt()); }
/// <inheritdoc /> protected override int HandleMessageCore(WidgetMessage message, WidgetID widgetId, IntPtr param1, IntPtr param2) { return(WidgetUtilsAPI.DefocusKeyboard(message, widgetId, param1, param2, EatClicks.ToInt())); }
protected override bool HandleMessage(WidgetMessage message, Widget widget, IntPtr param1, IntPtr param2) { bool handled = false; switch (message) { case WidgetMessage.Create: Created?.Invoke(widget, param1 != default, ref handled); break; case WidgetMessage.Destroy: Destroyed?.Invoke(widget, param1 != default, ref handled); break; case WidgetMessage.Paint: Paint?.Invoke(widget, ref handled); break; case WidgetMessage.Draw: Draw?.Invoke(widget, ref handled); break; case WidgetMessage.KeyPress: KeyPressed?.Invoke(widget, ref AsRef <KeyState>(param1), ref handled); break; case WidgetMessage.KeyTakeFocus: TakingFocus?.Invoke(widget, param1 != default, ref handled); break; case WidgetMessage.KeyLoseFocus: LostFocus?.Invoke(widget, param1 != default, ref handled); break; case WidgetMessage.MouseDown: MouseDown?.Invoke(widget, ref AsRef <MouseState>(param1), ref handled); break; case WidgetMessage.MouseDrag: MouseDrag?.Invoke(widget, ref AsRef <MouseState>(param1), ref handled); break; case WidgetMessage.MouseUp: MouseUp?.Invoke(widget, ref AsRef <MouseState>(param1), ref handled); break; case WidgetMessage.Reshape: Reshape?.Invoke(widget, Widget.GetOrCreate(param1), ref AsRef <WidgetGeometryChange>(param2), ref handled); break; case WidgetMessage.ExposedChanged: ExposedChanged?.Invoke(widget, ref handled); break; case WidgetMessage.AcceptChild: ChildAdded?.Invoke(widget, Widget.GetOrCreate(param1), ref handled); break; case WidgetMessage.LoseChild: ChildRemoved?.Invoke(widget, Widget.GetOrCreate(param1), ref handled); break; case WidgetMessage.AcceptParent: ParentChanged?.Invoke(widget, param1 != default ? Widget.GetOrCreate(param1) : null, ref handled); break; case WidgetMessage.Shown: Shown?.Invoke(widget, Widget.GetOrCreate(param1), ref handled); break; case WidgetMessage.Hidden: Hidden?.Invoke(widget, Widget.GetOrCreate(param1), ref handled); break; case WidgetMessage.DescriptorChanged: DescriptorChanged?.Invoke(widget, ref handled); break; case WidgetMessage.PropertyChanged: PropertyChanged?.Invoke(widget, param1.ToInt32(), param2, ref handled); break; case WidgetMessage.MouseWheel: MouseWheel?.Invoke(widget, ref AsRef <MouseState>(param1), ref handled); break; case WidgetMessage.CursorAdjust: CursorAdjust?.Invoke(widget, ref AsRef <MouseState>(param1), ref AsRef <CursorStatus>(param2), ref handled); break; } return(handled); }
/// <inheritdoc /> protected override int HandleMessageCore(WidgetMessage message, WidgetID widgetId, IntPtr param1, IntPtr param2) { return(WidgetUtilsAPI.FixedLayout(message, widgetId, param1, param2)); }