Пример #1
0
        protected virtual MouseScrolledEventArgs GetScrollEventArgs(Gtk.ScrollEventArgs args)
        {
            var direction      = args.Event.Direction.ToXwtValue();
            var pointer_coords = EventsRootWidget.CheckPointerCoordinates(args.Event.Window, args.Event.X, args.Event.Y);

            return(new MouseScrolledEventArgs((long)args.Event.Time, pointer_coords.X, pointer_coords.Y, direction));
        }
Пример #2
0
 protected override void OnSetBackgroundColor(Xwt.Drawing.Color color)
 {
     base.OnSetBackgroundColor(color);
     Widget.SetBackgroundColor(color);
     Widget.SetChildBackgroundColor(color);
     EventsRootWidget.SetBackgroundColor(color);
 }
Пример #3
0
        protected void AllocEventBox(bool visibleWindow = false)
        {
            // Wraps the widget with an event box. Required for some
            // widgets such as Label which doesn't have its own gdk window

            if (!NeedsEventBox)
            {
                return;
            }

            if (eventBox == null && !EventsRootWidget.GetHasWindow())
            {
                if (EventsRootWidget is Gtk.EventBox)
                {
                    ((Gtk.EventBox)EventsRootWidget).VisibleWindow = true;
                    return;
                }
                eventBox               = new Gtk.EventBox();
                eventBox.Visible       = Widget.Visible;
                eventBox.Sensitive     = Widget.Sensitive;
                eventBox.VisibleWindow = visibleWindow;
                GtkEngine.ReplaceChild(Widget, eventBox);
                eventBox.Add(Widget);
            }
        }
Пример #4
0
 protected override void OnSetBackgroundColor(Xwt.Drawing.Color color)
 {
     if (EventsRootWidget != null)
     {
         EventsRootWidget.SetBackgroundColor(color);
     }
     base.OnSetBackgroundColor(color);
 }
Пример #5
0
        protected virtual ButtonEventArgs GetButtonReleaseEventArgs(Gtk.ButtonReleaseEventArgs args)
        {
            var a = new ButtonEventArgs();

            var pointer_coords = EventsRootWidget.CheckPointerCoordinates(args.Event.Window, args.Event.X, args.Event.Y);

            a.X = pointer_coords.X;
            a.Y = pointer_coords.Y;

            a.Button = (PointerButton)args.Event.Button;
            return(a);
        }
Пример #6
0
 void EnableLinkEvents()
 {
     if (!linkEventEnabled)
     {
         linkEventEnabled = true;
         AllocEventBox();
         EventsRootWidget.AddEvents((int)Gdk.EventMask.PointerMotionMask);
         EventsRootWidget.MotionNotifyEvent += HandleMotionNotifyEvent;
         EventsRootWidget.AddEvents((int)Gdk.EventMask.ButtonReleaseMask);
         EventsRootWidget.ButtonReleaseEvent += HandleButtonReleaseEvent;
         EventsRootWidget.AddEvents((int)Gdk.EventMask.LeaveNotifyMask);
         EventsRootWidget.LeaveNotifyEvent += HandleLeaveNotifyEvent;
     }
 }
Пример #7
0
 void SubscribeCursorEnterLeaveEvent()
 {
     if (!cursorEnterLeaveSubscribed)
     {
         cursorEnterLeaveSubscribed = true;                 // subscribe only once
         EventsRootWidget.AddEvents((int)Gdk.EventMask.EnterNotifyMask);
         EventsRootWidget.AddEvents((int)Gdk.EventMask.LeaveNotifyMask);
         EventsRootWidget.EnterNotifyEvent += (o, args) => {
             immediateCursorChange = true;
             if (gdkCursor != null)
             {
                 ((Gtk.Widget)o).GdkWindow.Cursor = gdkCursor;
             }
         };
         EventsRootWidget.LeaveNotifyEvent += (o, args) => {
             immediateCursorChange            = false;
             ((Gtk.Widget)o).GdkWindow.Cursor = null;
         };
     }
 }
Пример #8
0
        protected virtual ButtonEventArgs GetButtonPressEventArgs(Gtk.ButtonPressEventArgs args)
        {
            var a = new ButtonEventArgs();

            var pointer_coords = EventsRootWidget.CheckPointerCoordinates(args.Event.Window, args.Event.X, args.Event.Y);

            a.X = pointer_coords.X;
            a.Y = pointer_coords.Y;

            a.Button = (PointerButton)args.Event.Button;
            if (args.Event.Type == Gdk.EventType.TwoButtonPress)
            {
                a.MultiplePress = 2;
            }
            else if (args.Event.Type == Gdk.EventType.ThreeButtonPress)
            {
                a.MultiplePress = 3;
            }
            else
            {
                a.MultiplePress = 1;
            }
            return(a);
        }
Пример #9
0
        protected virtual MouseMovedEventArgs GetMouseMovedEventArgs(Gtk.MotionNotifyEventArgs args)
        {
            var pointer_coords = EventsRootWidget.CheckPointerCoordinates(args.Event.Window, args.Event.X, args.Event.Y);

            return(new MouseMovedEventArgs((long)args.Event.Time, pointer_coords.X, pointer_coords.Y));
        }
Пример #10
0
        public virtual void EnableEvent(object eventId)
        {
            if (eventId is WidgetEvent)
            {
                WidgetEvent ev = (WidgetEvent)eventId;
                switch (ev)
                {
                case WidgetEvent.DragLeave:
                    AllocEventBox();
                    EventsRootWidget.DragLeave += HandleWidgetDragLeave;
                    break;

                case WidgetEvent.DragStarted:
                    AllocEventBox();
                    EventsRootWidget.DragBegin += HandleWidgetDragBegin;
                    break;

                case WidgetEvent.KeyPressed:
                    Widget.KeyPressEvent += HandleKeyPressEvent;
                    break;

                case WidgetEvent.KeyReleased:
                    Widget.KeyReleaseEvent += HandleKeyReleaseEvent;
                    break;

                case WidgetEvent.GotFocus:
                    EventsRootWidget.AddEvents((int)Gdk.EventMask.FocusChangeMask);
                    Widget.FocusGrabbed += HandleWidgetFocusInEvent;
                    break;

                case WidgetEvent.LostFocus:
                    EventsRootWidget.AddEvents((int)Gdk.EventMask.FocusChangeMask);
                    Widget.FocusOutEvent += HandleWidgetFocusOutEvent;
                    break;

                case WidgetEvent.MouseEntered:
                    AllocEventBox();
                    EventsRootWidget.AddEvents((int)Gdk.EventMask.EnterNotifyMask);
                    EventsRootWidget.EnterNotifyEvent += HandleEnterNotifyEvent;
                    break;

                case WidgetEvent.MouseExited:
                    AllocEventBox();
                    EventsRootWidget.AddEvents((int)Gdk.EventMask.LeaveNotifyMask);
                    EventsRootWidget.LeaveNotifyEvent += HandleLeaveNotifyEvent;
                    break;

                case WidgetEvent.ButtonPressed:
                    AllocEventBox();
                    EventsRootWidget.AddEvents((int)Gdk.EventMask.ButtonPressMask);
                    EventsRootWidget.ButtonPressEvent += HandleButtonPressEvent;
                    break;

                case WidgetEvent.ButtonReleased:
                    AllocEventBox();
                    EventsRootWidget.AddEvents((int)Gdk.EventMask.ButtonReleaseMask);
                    EventsRootWidget.ButtonReleaseEvent += HandleButtonReleaseEvent;
                    break;

                case WidgetEvent.MouseMoved:
                    AllocEventBox();
                    EventsRootWidget.AddEvents((int)Gdk.EventMask.PointerMotionMask);
                    EventsRootWidget.MotionNotifyEvent += HandleMotionNotifyEvent;
                    break;

                case WidgetEvent.BoundsChanged:
                    Widget.SizeAllocated += HandleWidgetBoundsChanged;
                    break;

                case WidgetEvent.MouseScrolled:
                    AllocEventBox();
                    EventsRootWidget.AddEvents((int)Gdk.EventMask.ScrollMask);
                    Widget.ScrollEvent += HandleScrollEvent;
                    break;
                }
                if ((ev & dragDropEvents) != 0 && (enabledEvents & dragDropEvents) == 0)
                {
                    // Enabling a drag&drop event for the first time
                    AllocEventBox();
                    EventsRootWidget.DragDrop         += HandleWidgetDragDrop;
                    EventsRootWidget.DragMotion       += HandleWidgetDragMotion;
                    EventsRootWidget.DragDataReceived += HandleWidgetDragDataReceived;
                }
                if ((ev & WidgetEvent.PreferredSizeCheck) != 0)
                {
                    EnableSizeCheckEvents();
                }
                enabledEvents |= ev;
            }
        }
Пример #11
0
 protected virtual void OnSetBackgroundColor(Color color)
 {
     EventsRootWidget.SetBackgroundColor(color);
 }