-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Expand file tree
/
Copy pathTooltipService.h
More file actions
68 lines (54 loc) · 2.48 KB
/
TooltipService.h
File metadata and controls
68 lines (54 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
#pragma once
#include <Fabric/ReactTaggedView.h>
#include <winrt/Microsoft.ReactNative.h>
namespace winrt::Microsoft::ReactNative {
struct TooltipService;
struct TooltipTracker {
TooltipTracker(
const winrt::Microsoft::ReactNative::ComponentView &view,
const winrt::Microsoft::ReactNative::ReactPropertyBag &properties,
TooltipService *outer);
~TooltipTracker();
void OnPointerEntered(
const winrt::Windows::Foundation::IInspectable &sender,
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept;
void OnPointerMoved(
const winrt::Windows::Foundation::IInspectable &sender,
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept;
void OnPointerExited(
const winrt::Windows::Foundation::IInspectable &sender,
const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept;
void OnTick(
const winrt::Windows::Foundation::IInspectable &,
const winrt::Windows::Foundation::IInspectable &) noexcept;
void OnUnmounted(
const winrt::Windows::Foundation::IInspectable &,
const winrt::Microsoft::ReactNative::ComponentView &) noexcept;
facebook::react::Tag Tag() const noexcept;
void DismissActiveTooltip() noexcept;
private:
void ShowTooltip(const winrt::Microsoft::ReactNative::ComponentView &view) noexcept;
void DestroyTimer() noexcept;
void DestroyTooltip() noexcept;
TooltipService *m_outer;
winrt::Windows::Foundation::Point m_pos;
::Microsoft::ReactNative::ReactTaggedView m_view;
winrt::Microsoft::ReactNative::ITimer m_timer;
HWND m_hwndTip{nullptr};
winrt::Microsoft::ReactNative::ReactPropertyBag m_properties;
};
struct TooltipService {
TooltipService(const winrt::Microsoft::ReactNative::ReactPropertyBag &properties);
void StartTracking(const winrt::Microsoft::ReactNative::ComponentView &view) noexcept;
void StopTracking(const winrt::Microsoft::ReactNative::ComponentView &view) noexcept;
void DismissAllTooltips() noexcept;
static std::shared_ptr<TooltipService> GetCurrent(
const winrt::Microsoft::ReactNative::ReactPropertyBag &properties) noexcept;
private:
std::vector<std::shared_ptr<TooltipTracker>> m_enteredTrackers;
std::vector<std::shared_ptr<TooltipTracker>> m_trackers;
winrt::Microsoft::ReactNative::ReactPropertyBag m_properties;
};
} // namespace winrt::Microsoft::ReactNative