// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.ui.input;

using fuchsia.ui.views;

/// A method of obtaining global pointer events, regardless of view focus.
protocol PointerCaptureListener {
    OnPointerEvent(PointerEvent event) -> ();
};

/// Injects a listener protocol, along with a ViewRef that defines the coordinate space of the
/// captured pointer events.
[Discoverable]
protocol PointerCaptureListenerRegistry {
    /// This protocol will be subsumed by gesture disambiguation.
    [Transitional]
    RegisterListener(PointerCaptureListener listener, fuchsia.ui.views.ViewRef view_ref) -> (bool success);
};
