fix focus locking bug

This commit is contained in:
IlyaShurupov 2024-11-05 19:30:02 +03:00
parent 458e56fb4c
commit 23fe07d3d3
9 changed files with 34 additions and 21 deletions

View file

@ -87,7 +87,7 @@ namespace tp {
bool mDebug = false;
bool mDebugStopProcessing = false;
bool mDebugRedrawAlways = false;
bool mDetailed = false;
bool mDetailed = true;
std::set<Widget*> mProcBreakpoints;
std::set<Widget*> mLayBreakpoints;

View file

@ -25,13 +25,16 @@ namespace tp {
void clean();
void updateTreeToProcess(Widget* root);
void handleFocusChanges(Widget* root, EventHandler& events);
void handleFocusChanges(Widget* active, Widget* prevActive);
Widget* findFocusWidget(Widget* root, EventHandler& events);
void findFocusWidget(Widget* iter, Widget** focus, const Vec2F& pointer);
void findMouseFocusWidget(Widget* iter, Widget** focus, const Vec2F& pointer);
static void getWidgetPath(Widget* widget, std::vector<Widget*>& out);
void processActiveTree(Widget* iter, EventHandler& events, Vec2F pos);
void processFocusItems(EventHandler& events);
Widget* getFocusWidget() { return mInFocusWidget; }
private:
static void procWidget(Widget* widget, EventHandler& events, bool withEvents = false);