示例#1
0
        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);
        }
示例#3
0
 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);
        }
示例#7
0
 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()));
 }
示例#10
0
 /// <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);
示例#11
0
        /// <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());
        }
示例#12
0
 /// <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));
 }