12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // Copyright 2015 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef COMPONENTS_EXO_TOUCH_H_
- #define COMPONENTS_EXO_TOUCH_H_
- #include "base/containers/flat_map.h"
- #include "components/exo/surface_observer.h"
- #include "ui/events/event_handler.h"
- #include "ui/gfx/geometry/point_f.h"
- namespace ui {
- class LocatedEvent;
- class TouchEvent;
- }
- namespace exo {
- class Seat;
- class TouchDelegate;
- class TouchStylusDelegate;
- // This class implements a client touch device that represents one or more
- // touch devices.
- class Touch : public ui::EventHandler, public SurfaceObserver {
- public:
- Touch(TouchDelegate* delegate, Seat* seat);
- Touch(const Touch&) = delete;
- Touch& operator=(const Touch&) = delete;
- ~Touch() override;
- TouchDelegate* delegate() const { return delegate_; }
- // Set delegate for stylus events.
- void SetStylusDelegate(TouchStylusDelegate* delegate);
- bool HasStylusDelegate() const;
- // Overridden from ui::EventHandler:
- void OnTouchEvent(ui::TouchEvent* event) override;
- // Overridden from SurfaceObserver:
- void OnSurfaceDestroying(Surface* surface) override;
- private:
- // Returns the effective target for |event|.
- Surface* GetEffectiveTargetForEvent(ui::LocatedEvent* event) const;
- // Cancels touches on all the surfaces.
- void CancelAllTouches();
- // The delegate instance that all events are dispatched to.
- TouchDelegate* const delegate_;
- Seat* const seat_;
- // The delegate instance that all stylus related events are dispatched to.
- TouchStylusDelegate* stylus_delegate_ = nullptr;
- // Map of touch points to its focus surface.
- base::flat_map<int, Surface*> touch_points_surface_map_;
- // Map of a touched surface to the count of touch pointers on that surface.
- base::flat_map<Surface*, int> surface_touch_count_map_;
- };
- } // namespace exo
- #endif // COMPONENTS_EXO_TOUCH_H_
|