コード例 #1
0
ファイル: WindowFrameBackend.cs プロジェクト: okwh/xwt
 void EnableVisibilityEvent(WindowFrameEvent ev)
 {
     if (!VisibilityEventsEnabled())
     {
         // TODO
     }
 }
コード例 #2
0
ファイル: WindowFrameBackend.cs プロジェクト: okwh/xwt
        void IBackend.EnableEvent(object eventId)
        {
            if (eventId is WindowFrameEvent)
            {
                var @event = (WindowFrameEvent)eventId;
                switch (@event)
                {
                case WindowFrameEvent.BoundsChanged:
                    Window.DidResize += HandleDidResize;
                    Window.DidMove   += HandleDidResize;
                    break;

                case WindowFrameEvent.Hidden:
                    EnableVisibilityEvent(@event);
                    Window.WillClose += OnWillClose;
                    break;

                case WindowFrameEvent.Shown:
                    EnableVisibilityEvent(@event);
                    break;

                case WindowFrameEvent.CloseRequested:
                    Window.WindowShouldClose = OnShouldClose;
                    break;
                }
                eventsEnabled |= @event;
            }
        }
コード例 #3
0
 void DisableVisibilityEvent(WindowFrameEvent ev)
 {
     if (eventsEnabled.HasFlag(ev))
     {
         eventsEnabled ^= ev;
         if (!VisibilityEventsEnabled())
         {
             ContentView.RemoveObserver(this, HiddenProperty);
         }
     }
 }
コード例 #4
0
 void EnableVisibilityEvent(WindowFrameEvent ev)
 {
     if (!VisibilityEventsEnabled())
     {
         ContentView.AddObserver(this, HiddenProperty, NSKeyValueObservingOptions.New, IntPtr.Zero);
     }
     if (!eventsEnabled.HasFlag(ev))
     {
         eventsEnabled |= ev;
     }
 }
コード例 #5
0
 void IBackend.DisableEvent(object eventId)
 {
     if (eventId is WindowFrameEvent)
     {
         var @event = (WindowFrameEvent)eventId;
         eventsEnabled &= ~@event;
         switch (@event)
         {
         case WindowFrameEvent.Hidden:
         case WindowFrameEvent.Shown:
             if (!VisibilityEventsEnabled())
             {
                 ContentView.RemoveObserver(this, HiddenProperty);
             }
             break;
         }
     }
 }
コード例 #6
0
 void IBackend.EnableEvent(object eventId)
 {
     if (eventId is WindowFrameEvent)
     {
         var @event = (WindowFrameEvent)eventId;
         switch (@event)
         {
         case WindowFrameEvent.Hidden:
         case WindowFrameEvent.Shown:
             if (!VisibilityEventsEnabled())
             {
                 ContentView.AddObserver(this, HiddenProperty, NSKeyValueObservingOptions.New, IntPtr.Zero);
             }
             break;
         }
         eventsEnabled |= @event;
     }
 }
コード例 #7
0
        void IBackend.DisableEvent(object eventId)
        {
            if (eventId is WindowFrameEvent)
            {
                var @event = (WindowFrameEvent)eventId;
                eventsEnabled &= ~@event;
                switch (@event)
                {
                case WindowFrameEvent.BoundsChanged:
                    NSNotificationCenter.DefaultCenter.RemoveObservers(new [] { didResizeObserver, didMoveObserver });
                    break;

                case WindowFrameEvent.Hidden:
                    NSNotificationCenter.DefaultCenter.RemoveObserver(willCloseObserver);
                    DisableVisibilityEvent();
                    break;

                case WindowFrameEvent.Shown:
                    DisableVisibilityEvent();
                    break;
                }
            }
        }
コード例 #8
0
ファイル: WindowFrameBackend.cs プロジェクト: okwh/xwt
        void IBackend.DisableEvent(object eventId)
        {
            if (eventId is WindowFrameEvent)
            {
                var @event = (WindowFrameEvent)eventId;
                eventsEnabled &= ~@event;
                switch (@event)
                {
                case WindowFrameEvent.BoundsChanged:
                    Window.DidResize -= HandleDidResize;
                    Window.DidMove   -= HandleDidResize;
                    break;

                case WindowFrameEvent.Hidden:
                    Window.WillClose -= OnWillClose;
                    DisableVisibilityEvent();
                    break;

                case WindowFrameEvent.Shown:
                    DisableVisibilityEvent();
                    break;
                }
            }
        }
コード例 #9
0
        void IBackend.EnableEvent(object eventId)
        {
            if (eventId is WindowFrameEvent)
            {
                var @event = (WindowFrameEvent)eventId;
                switch (@event)
                {
                case WindowFrameEvent.BoundsChanged:
                    didResizeObserver = NSNotificationCenter.DefaultCenter.AddObserver(NSWindow.ResizedNotification, HandleDidResize, Window);
                    didMoveObserver   = NSNotificationCenter.DefaultCenter.AddObserver(NSWindow.MovedNotification, HandleDidResize, Window);
                    break;

                case WindowFrameEvent.Hidden:
                    EnableVisibilityEvent(@event);
                    willCloseObserver = NSNotificationCenter.DefaultCenter.AddObserver(NSWindow.WillCloseNotification, OnWillClose, Window);
                    break;

                case WindowFrameEvent.Shown:
                    EnableVisibilityEvent(@event);
                    break;

                case WindowFrameEvent.CloseRequested:
                    // NOTE: this works only if the wrapped window has no delegate
                    if (!hasExternalDelegate)                     // don't replace existing delegates
                    {
                        Window.WindowShouldClose = OnShouldClose;
                    }
                    else
                    {
                        return;                         // skip eventEnabled update to avoid touching WindowShouldClose when disabling events
                    }
                    break;
                }
                eventsEnabled |= @event;
            }
        }
コード例 #10
0
ファイル: WindowBackend.cs プロジェクト: TheBrainTech/xwt
		void DisableVisibilityEvent (WindowFrameEvent ev)
		{
			if (eventsEnabled.HasFlag (ev)) {
				eventsEnabled ^= ev;
				if (!VisibilityEventsEnabled ()) {
					ContentView.RemoveObserver (this, HiddenProperty);
				}
			}
		}
コード例 #11
0
ファイル: WindowBackend.cs プロジェクト: TheBrainTech/xwt
		void EnableVisibilityEvent (WindowFrameEvent ev)
		{
			if (!VisibilityEventsEnabled ()) {
				ContentView.AddObserver (this, HiddenProperty, NSKeyValueObservingOptions.New, IntPtr.Zero);
			}
			if (!eventsEnabled.HasFlag (ev)) {
				eventsEnabled |= ev;
			}
		}