Commit 910879d
committed
fix(decorated-window-tao): restore focus and popup rendering on Windows
Replace SetCapture-based focus trapping with thread-local WH_MOUSE hook
that observes clicks without consuming them, allowing the parent window
to maintain focus while popups remain interactive. Fixes: popups losing
input focus when appearing, clicks not reaching parent/popup content.
Add multi-host GL state management: force resetGLAll() every frame when
multiple TaoComposeSceneHostWindows coexist (main + DecoratedDialog) to
prevent Skia DirectContext state cache drift from sibling HGLRC swaps.
Replace AWT-based monitor work area detection with JNI bridge to avoid
Java2D/D3D initialization on Tao UI thread, which blocked WGL context.
Extended workAreaSize constraint to popup scenes for proper layout when
popup content exceeds parent window bounds.
- Removed SetCapture() mechanism; replaced with refcounted WH_MOUSE hook
- Changed nucleus_tao_windows_popup.c PopupState.captureHeld → outsideMonitorActive
- Added TaoComposeSceneHostWindows.attachedHostCount: AtomicInteger
- Added TaoPopupHostWindows.workAreaSize property with JNI implementation
- Added TaoPopupSceneLayer(Windows).sceneLayoutSize computed from workAreaSize
- Added NativeViewOverlayControllerWindows.workAreaSize forwarding1 parent 2950272 commit 910879d
7 files changed
Lines changed: 199 additions & 72 deletions
File tree
- decorated-window-tao/src/main
- kotlin/dev/nucleusframework/window/tao
- render
- native/windows
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
| 120 | + | |
120 | 121 | | |
121 | 122 | | |
122 | 123 | | |
| |||
Lines changed: 50 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
| 173 | + | |
173 | 174 | | |
174 | 175 | | |
175 | 176 | | |
| |||
645 | 646 | | |
646 | 647 | | |
647 | 648 | | |
648 | | - | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
649 | 659 | | |
650 | 660 | | |
651 | 661 | | |
| |||
841 | 851 | | |
842 | 852 | | |
843 | 853 | | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
844 | 871 | | |
845 | 872 | | |
846 | 873 | | |
| |||
991 | 1018 | | |
992 | 1019 | | |
993 | 1020 | | |
994 | | - | |
995 | | - | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
996 | 1026 | | |
997 | 1027 | | |
998 | 1028 | | |
| |||
1014 | 1044 | | |
1015 | 1045 | | |
1016 | 1046 | | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
1017 | 1064 | | |
1018 | 1065 | | |
1019 | 1066 | | |
| |||
decorated-window-tao/src/main/kotlin/dev/nucleusframework/window/tao/render/TaoPopupHostWindows.kt
Lines changed: 10 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
32 | 42 | | |
33 | 43 | | |
34 | 44 | | |
| |||
Lines changed: 4 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
95 | | - | |
96 | | - | |
97 | | - | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
98 | 99 | | |
99 | 100 | | |
100 | 101 | | |
| |||
Lines changed: 18 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
65 | 82 | | |
66 | 83 | | |
67 | 84 | | |
| |||
87 | 104 | | |
88 | 105 | | |
89 | 106 | | |
90 | | - | |
| 107 | + | |
91 | 108 | | |
92 | 109 | | |
93 | 110 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
541 | 541 | | |
542 | 542 | | |
543 | 543 | | |
| 544 | + | |
0 commit comments