LeviLamina
Loading...
Searching...
No Matches
FocusManager.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/gui/CardinalDirection.h"
7#include "mc/client/gui/screens/RecentFocusVector.h"
8#include "mc/deps/core/utility/pub_sub/Publisher.h"
9
10// auto generated forward declare list
11// clang-format off
13class UIControl;
14struct SweepDescription;
15struct SweepResult;
16namespace Bedrock::PubSub::ThreadModel { struct SingleThreaded; }
17// clang-format on
18
19class FocusManager {
20public:
21 // member variables
22 // NOLINTBEGIN
23 ::ll::TypedStorage<4, 8, ::glm::vec2> mSize;
24 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::UIControl>>> mFocusControls;
25 bool mFocusActive : 1;
26 bool mFocusResetFlag : 1;
27 bool mFindClosestControl : 1;
28 bool mFocusPositionCaptured : 1;
29 bool mNeedsDefaultFocusUpdate : 1;
30 bool mIncludeMagnetControls : 1;
31 bool mRepeatTTS : 1;
32 ::ll::TypedStorage<1, 1, bool> mScrollToFocusedControlIfClipped;
33 bool mHoverNothing : 1;
34 ::ll::TypedStorage<4, 4, int> mFocusedControlIndex;
35 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::UIControl>> mFocusedControl;
36 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::UIControl>> mPreviousFocusedControl;
37 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::UIControl>> mLostFocusControl;
38 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::UIControl>> mCurrentModalRoot;
39 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::UIControl>> mCurrentFocusContainer;
40 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::UIControl>> mRootOfFocusTree;
41 ::ll::TypedStorage<8, 32, ::RecentFocusVector> mRecentFocusList;
42 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::FocusManagerProxy>> mProxy;
43 ::ll::TypedStorage<8, 32, ::std::string> mPendingFocusControlID;
44 ::ll::TypedStorage<4, 4, int> mPendingFocusControlIndex;
45 ::ll::TypedStorage<1, 1, bool> mHasPendingFocusControl;
46 ::ll::TypedStorage<8, 32, ::std::string> mPendingFocusCollectionIndexName;
47 ::ll::TypedStorage<
48 8,
49 48,
50 ::Bedrock::PubSub::Publisher<
51 void(::std::weak_ptr<::UIControl>, ::std::weak_ptr<::UIControl>),
52 ::Bedrock::PubSub::ThreadModel::SingleThreaded,
53 0>>
54 mFocusChangePub;
55 // NOLINTEND
56
57public:
58 // member functions
59 // NOLINTBEGIN
60 MCAPI FocusManager();
61
62 MCAPI ::std::shared_ptr<::UIControl> _findFocusContainerControlFor(::std::shared_ptr<::UIControl> forControl) const;
63
64 MCAPI ::SweepResult _getControlAtFocusPoint(
65 ::SweepDescription const& desc,
66 ::std::vector<::std::shared_ptr<::UIControl>> const& controls
67 );
68
69 MCAPI ::std::shared_ptr<::UIControl> _getLastGoodFocusedControl(::std::shared_ptr<::UIControl> oldFocusedControl);
70
71 MCAPI void _setFocusControlFromIndex(int focusControlIndex, bool overrideLastFocus);
72
73 MCAPI void _setFocusControlInternal(::UIControl const& control, bool allowDefault, bool overrideLastFocus);
74
75 MCAPI void _sweepForClosestControl(::std::shared_ptr<::UIControl> focusedControl);
76
77 MCAPI ::SweepResult _sweepForControlDirectional(
78 ::SweepDescription const& desc,
79 ::std::vector<::std::shared_ptr<::UIControl>> const& controls,
80 bool hasWrapped
81 );
82
83 MCAPI void
84 _sweepToNextFocusObject(::ui::CardinalDirection direction, bool overrideOrigin, ::glm::vec2 const& overridePos);
85
86 MCAPI void _updateLostFocusControlList(::std::weak_ptr<::UIControl> control);
87
88 MCAPI void _updateRootOfFocusTree();
89
90 MCAPI void addControl(::UIControl& control);
91
92 MCAPI void defaultFocus();
93
94 MCAPI void removeControl(
95 ::UIControl& control,
96 ::std::map<::std::vector<::std::shared_ptr<::UIControl>>*, ::std::vector<::std::shared_ptr<::UIControl>>>&
97 controlsToRemove
98 );
99
100 MCAPI bool setFocusControl(::UIControl const& control, bool allowDefault);
101
102 MCAPI void setFocusedControlToLostFocus();
103
104 MCAPI void setModalRoot(::std::shared_ptr<::UIControl>& control);
105
106 MCAPI void updateDefaultFocusIfNeeded();
107
108 MCAPI bool updatePendingFocusControl();
109
110 MCAPI void validateFocusControl();
111
112 MCAPI ~FocusManager();
113 // NOLINTEND
114
115public:
116 // constructor thunks
117 // NOLINTBEGIN
118 MCAPI void* $ctor();
119 // NOLINTEND
120
121public:
122 // destructor thunk
123 // NOLINTBEGIN
124 MCAPI void $dtor();
125 // NOLINTEND
126};
Definition FocusManagerProxy.h:5
Definition FocusManager.h:5
Definition UIControl.h:5
Definition SweepDescription.h:5
Definition SweepResult.h:5