PyWebWinUI3 1.2.3__tar.gz → 1.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. {pywebwinui3-1.2.3/PyWebWinUI3.egg-info → pywebwinui3-1.2.4}/PKG-INFO +1 -1
  2. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4/PyWebWinUI3.egg-info}/PKG-INFO +1 -1
  3. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/__init__.py +1 -1
  4. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/core.py +34 -13
  5. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/LICENSE +0 -0
  6. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/MANIFEST.in +0 -0
  7. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/NOTICE +0 -0
  8. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/PyWebWinUI3.egg-info/SOURCES.txt +0 -0
  9. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/PyWebWinUI3.egg-info/dependency_links.txt +0 -0
  10. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/PyWebWinUI3.egg-info/requires.txt +0 -0
  11. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/PyWebWinUI3.egg-info/top_level.txt +0 -0
  12. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/README.md +0 -0
  13. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pyproject.toml +0 -0
  14. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/event.py +0 -0
  15. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/type.py +0 -0
  16. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/util.py +0 -0
  17. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.0.woff2 +0 -0
  18. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.1.woff2 +0 -0
  19. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.10.woff2 +0 -0
  20. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.11.woff2 +0 -0
  21. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.12.woff2 +0 -0
  22. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.13.woff2 +0 -0
  23. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.14.woff2 +0 -0
  24. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.15.woff2 +0 -0
  25. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.16.woff2 +0 -0
  26. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.17.woff2 +0 -0
  27. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.18.woff2 +0 -0
  28. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.19.woff2 +0 -0
  29. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.2.woff2 +0 -0
  30. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.20.woff2 +0 -0
  31. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.21.woff2 +0 -0
  32. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.22.woff2 +0 -0
  33. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.23.woff2 +0 -0
  34. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.24.woff2 +0 -0
  35. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.25.woff2 +0 -0
  36. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.26.woff2 +0 -0
  37. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.27.woff2 +0 -0
  38. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.28.woff2 +0 -0
  39. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.29.woff2 +0 -0
  40. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.3.woff2 +0 -0
  41. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.30.woff2 +0 -0
  42. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.31.woff2 +0 -0
  43. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.32.woff2 +0 -0
  44. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.33.woff2 +0 -0
  45. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.34.woff2 +0 -0
  46. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.35.woff2 +0 -0
  47. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.36.woff2 +0 -0
  48. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.37.woff2 +0 -0
  49. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.38.woff2 +0 -0
  50. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.39.woff2 +0 -0
  51. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.4.woff2 +0 -0
  52. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.40.woff2 +0 -0
  53. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.41.woff2 +0 -0
  54. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.42.woff2 +0 -0
  55. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.43.woff2 +0 -0
  56. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.44.woff2 +0 -0
  57. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.45.woff2 +0 -0
  58. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.46.woff2 +0 -0
  59. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.47.woff2 +0 -0
  60. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.48.woff2 +0 -0
  61. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.49.woff2 +0 -0
  62. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.5.woff2 +0 -0
  63. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.50.woff2 +0 -0
  64. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.51.woff2 +0 -0
  65. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.52.woff2 +0 -0
  66. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.53.woff2 +0 -0
  67. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.54.woff2 +0 -0
  68. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.55.woff2 +0 -0
  69. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.56.woff2 +0 -0
  70. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.57.woff2 +0 -0
  71. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.58.woff2 +0 -0
  72. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.59.woff2 +0 -0
  73. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.6.woff2 +0 -0
  74. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.60.woff2 +0 -0
  75. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.61.woff2 +0 -0
  76. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.62.woff2 +0 -0
  77. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.63.woff2 +0 -0
  78. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.64.woff2 +0 -0
  79. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.65.woff2 +0 -0
  80. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.66.woff2 +0 -0
  81. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.67.woff2 +0 -0
  82. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.68.woff2 +0 -0
  83. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.69.woff2 +0 -0
  84. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.7.woff2 +0 -0
  85. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.70.woff2 +0 -0
  86. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.71.woff2 +0 -0
  87. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.72.woff2 +0 -0
  88. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.73.woff2 +0 -0
  89. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.74.woff2 +0 -0
  90. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.75.woff2 +0 -0
  91. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.76.woff2 +0 -0
  92. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.77.woff2 +0 -0
  93. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.78.woff2 +0 -0
  94. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.79.woff2 +0 -0
  95. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.8.woff2 +0 -0
  96. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.80.woff2 +0 -0
  97. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.81.woff2 +0 -0
  98. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.82.woff2 +0 -0
  99. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.83.woff2 +0 -0
  100. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.84.woff2 +0 -0
  101. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.85.woff2 +0 -0
  102. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.86.woff2 +0 -0
  103. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.87.woff2 +0 -0
  104. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.88.woff2 +0 -0
  105. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.89.woff2 +0 -0
  106. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.9.woff2 +0 -0
  107. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.90.woff2 +0 -0
  108. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/PretendardVariable.subset.91.woff2 +0 -0
  109. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/Pretendard/Variable-dynamic-subset.min.css +0 -0
  110. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/SegoeFluentIcons.ttf +0 -0
  111. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/env.js +0 -0
  112. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/assets/2.YxEoeVwz.css +0 -0
  113. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/chunks/6pQH9Hkv.js +0 -0
  114. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/chunks/B-XLOWlt.js +0 -0
  115. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/chunks/CGGCsFu4.js +0 -0
  116. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/chunks/CW0wlPPy.js +0 -0
  117. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/chunks/CZPLFskb.js +0 -0
  118. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/chunks/CZuXpvpo.js +0 -0
  119. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/chunks/D94BNvJJ.js +0 -0
  120. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/chunks/DF1x2LYX.js +0 -0
  121. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/entry/app.B-Q6XOuJ.js +0 -0
  122. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/entry/start.C1-i6FUr.js +0 -0
  123. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/nodes/0.C49PHrK2.js +0 -0
  124. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/nodes/1.a96iIGzo.js +0 -0
  125. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/immutable/nodes/2.Ofs4dh3G.js +0 -0
  126. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/_app/version.json +0 -0
  127. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/pywebwinui3/web/index.html +0 -0
  128. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/requirements.txt +0 -0
  129. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/setup.cfg +0 -0
  130. {pywebwinui3-1.2.3 → pywebwinui3-1.2.4}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyWebWinUI3
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: Create modern WinUI3-style desktop UIs in Python using pywebview and a Svelte frontend.
5
5
  Home-page: https://github.com/Haruna5718/PyWebWinUI3
6
6
  Author: Haruna5718
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyWebWinUI3
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: Create modern WinUI3-style desktop UIs in Python using pywebview and a Svelte frontend.
5
5
  Home-page: https://github.com/Haruna5718/PyWebWinUI3
6
6
  Author: Haruna5718
@@ -1,3 +1,3 @@
1
1
  __all__ = ["core", "event", "util", "type"]
2
2
 
3
- __version__ = '1.2.3'
3
+ __version__ = '1.2.4'
@@ -216,6 +216,8 @@ class MainWindow:
216
216
  self._startup_cloaked = False
217
217
  self._sync_lock = threading.Lock()
218
218
  self._pending_sync: dict[str, object] = {}
219
+ self._sync_event = threading.Event()
220
+ self._sync_thread: threading.Thread | None = None
219
221
  self._ui_server: _UiHttpServer | None = None
220
222
  self._ui_server_thread: threading.Thread | None = None
221
223
  self._ui_origin = ""
@@ -581,6 +583,9 @@ class MainWindow:
581
583
 
582
584
  def _on_closed(self):
583
585
  self.accent.stop()
586
+ with self._sync_lock:
587
+ self._pending_sync.clear()
588
+ self._sync_event.set()
584
589
  self._stop_ui_server()
585
590
  self.events.closed.set()
586
591
 
@@ -593,19 +598,39 @@ class MainWindow:
593
598
 
594
599
  script = f"window.syncValue({json.dumps(key, ensure_ascii=False)}, {json.dumps(value, ensure_ascii=False)}, false)"
595
600
  try:
596
- self._window.evaluate_js(script)
601
+ self._window.run_js(script)
597
602
  except Exception:
598
- with self._sync_lock:
599
- self._pending_sync[key] = value
600
603
  core_logger.debug("Failed to sync value %s", key, exc_info=True)
601
604
 
602
605
  def queue_sync_value(self, key: str, value):
603
606
  with self._sync_lock:
604
- if not self._frontend_ready:
605
- self._pending_sync[key] = value
606
- return
607
+ self._pending_sync[key] = value
608
+ frontend_ready = self._frontend_ready
607
609
 
608
- self._dispatch_sync_value(key, value)
610
+ if not frontend_ready:
611
+ return
612
+ self._ensure_sync_worker()
613
+ self._sync_event.set()
614
+
615
+ def _ensure_sync_worker(self):
616
+ if self._sync_thread and self._sync_thread.is_alive():
617
+ return
618
+ self._sync_thread = threading.Thread(target=self._sync_loop, daemon=True, name="PyWebWinUI3-Sync")
619
+ self._sync_thread.start()
620
+
621
+ def _sync_loop(self):
622
+ while True:
623
+ self._sync_event.wait()
624
+ while True:
625
+ with self._sync_lock:
626
+ if not self._pending_sync:
627
+ self._sync_event.clear()
628
+ break
629
+ pending = tuple(self._pending_sync.items())
630
+ self._pending_sync.clear()
631
+
632
+ for key, value in pending:
633
+ self._dispatch_sync_value(key, value)
609
634
 
610
635
  def _set_window_maximized_state(self, value: bool, *, sync: bool = True):
611
636
  value = bool(value)
@@ -633,12 +658,8 @@ class MainWindow:
633
658
 
634
659
  self._frontend_ready = True
635
660
 
636
- with self._sync_lock:
637
- pending_sync = tuple(self._pending_sync.items())
638
- self._pending_sync.clear()
639
-
640
- for key, value in pending_sync:
641
- self._dispatch_sync_value(key, value)
661
+ self._ensure_sync_worker()
662
+ self._sync_event.set()
642
663
 
643
664
  if not self._setup_fired:
644
665
  self._setup_fired = True
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes