bug: Window properties updating is broken
Duplicate Check
- [x] I have searched the opened issues and there are no duplicates
Describe the bug
Some window properties don't update until you update others. It also depends on where we're trying to update these properties.
Code sample
For example if we run this, the window title won't update, even though print(page.title) returns "Test Title":
import flet as ft
async def before_main(page: ft.Page):
page.title = "Test Title"
async def main(page: ft.Page):
print(page.title)
ft.run(main, before_main=before_main)
But if we run this, both the window title and its size will be updated:
import flet as ft
async def before_main(page: ft.Page):
page.title = "Test Title"
async def main(page: ft.Page):
page.window.width = 500
ft.run(main, before_main=before_main)
This also happens inside main. For example, this code doesn't update page.title:
import flet as ft
async def before_main(page: ft.Page):
pass
async def main(page: ft.Page):
page.title = "Test Title"
ft.run(main, before_main=before_main)
But this code works:
import flet as ft
async def before_main(page: ft.Page):
pass
async def main(page: ft.Page):
page.title = "Test Title"
page.window.width = 500
ft.run(main, before_main=before_main)
There are other properties that work differently, for example page.window.prevent_close. This code works:
import flet as ft
async def before_main(page: ft.Page):
pass
async def main(page: ft.Page):
page.window.prevent_close = True
ft.run(main, before_main=before_main)
But this code doesn't work:
import flet as ft
async def before_main(page: ft.Page):
page.window.prevent_close = True
async def main(page: ft.Page):
print(page.window.prevent_close)
ft.run(main, before_main=before_main)
And this code also doesn't work because inside main page.window.prevent_close is already True, and when we set page.window.prevent_close = True again, it has no effect due to the diffing algorithm of object patching:
import flet as ft
async def before_main(page: ft.Page):
page.window.prevent_close = True
async def main(page: ft.Page):
page.window.prevent_close = True
ft.run(main, before_main=before_main)
To reproduce
Expected behavior
No response
Screenshots / Videos
No response
Operating System
Windows
Operating system details
11
Flet version
0.70.0.dev7031
Regression
Yes, it used to work in a previous Flet version (please specify the version in additional details)
Suggestions
No response
Logs
No response
Additional details
Possible regression due to https://github.com/flet-dev/flet/pull/5838