unoplatform / uno

Build Mobile, Desktop and WebAssembly apps with C# and XAML. Today. Open source and professionally supported.
https://platform.uno
Apache License 2.0
8.76k stars 706 forks source link

[Epic] Multi-window support #8341

Open jeromelaban opened 2 years ago

jeromelaban commented 2 years ago

Add support for creating multiple windows in the same app, using WinUI provided APIs.

Notes

Resources

horaciodiez commented 2 years ago

Hi! Any updates on this? Thank you! Regards

sasakrsmanovic commented 2 years ago

Hi @horaciodiez - what target platforms are you most interested in?

horaciodiez commented 2 years ago

Hi @horaciodiez - what target platforms are you most interested in?

Hi @sasakrsmanovic ! I´m most interested in Windows (well, of course) and macOS (eventually Wasm). Having said this, you can avoid the rest of the message :)

We are planning to jump on the WinUI boat now that WinAppSDK 1.1 and MultiWindow support is released. There are a couple of new projects on the way, and the OS targets are both Windows a macOS. We can make Windows mandatory, but if we have a chance to target both it will be welcomed (and so Uno)

In Short, we decided to go to "MultiWindow" in the Desktop / Laptop - LOB Apps environment. I may write lot more about this, but i get bored to read myself.

Excuse my poor english. Thank you! Regards.

notofug commented 2 years ago

Hi, for Wasm builds ; could multi-window support enable the application to present different windows in unique url's at the same time? (ref also https://github.com/unoplatform/uno/issues/5656) Would it be possible to construct (manually) a HTTP-page that displays the same Wasm-instance in multiple frames, each one viewing different windows of the Wasm-app? I am wondering how to somehow enable viewing for instance http://wasmapp/status-page and http://wasmapp/config-page etc simultaneously without spawning multipleWasm-app instances in the browser .. all in same browser-tab ; would that be feasible? ;-)

renjuashokan commented 1 year ago

Hi, I'm also looking to port my current WPF multi-window project to "uno" to make it work on Ubuntu as well. But the lack of Window itself makes it impossible to do it. Will this feature come on anytime soon?

FrozDark commented 1 year ago

I don't think we see that till this year :/ Most probably end of the next year

MartinZikmund commented 1 year ago

@renjuashokan @FrozDark I would be more optimistic about the availability of this feature, it all depends on the demand. If it is highly requested, it will be prioritized. Our goal also is to implement it properly though - making sure it follows the WinUI implementation as closely as possible so that it is extensible for future

wokhan commented 1 year ago

Well, I'm also interested as I only find workarounds I'm not really happy with (using Popup outside of WinUI... as I'm trying right now to use the Window class with WPF as well but not sure it will work with your Skia implementation). I might also use a global TabView to mimick this multi-window behavior (each tab hosting the "child window" contents) but usual windows would be a way better fit as the goal is to be able to see them all at the same time...). Thanks!

horaciodiez commented 1 year ago

Hi. Happy 2023! Any good news about this?

francoistanguay commented 1 year ago

... as I'm trying right now to use the Window class with WPF as well but not sure it will work with your Skia i

Can you reiterate what platforms you're mostly interested in?

For the record, on Windows, Uno isn't present, WinUI runs natively so whatever WinUI supports you can do.

For WASM, how do you foresee Multi-Window working?

Fir macOS, it's pretty straightforward.

wokhan commented 1 year ago

Hi, For WinUI I've no issue of course, but for WPF/Gtk/WASM which I'm interested in, you can only have one window (the main one) which is blocking any multi window scenario. I made something pretty simple (while unfinished), Windows are not windows but simply controls loaded on top in the same window, with a fake taskbar (a stack panel where each item matches one of those "windows", allowing to hide/show opened ones). Basically popups, linked to this "taskbar". Of course it means you cant go outside the main window boundaries, but at least it works (well, partly, as I didn't finish that yet, I forgot about that while working on other subjects and still have to implement movable popups, which isn't that hard anyway).

horaciodiez commented 1 year ago

Yet another relsease and no news on this one. Multi platform - Mono Window. :(

FrozDark commented 1 year ago

I think initial support will be in a version 5

horaciodiez commented 1 year ago

In @MartinZikmund we trust.

horaciodiez commented 1 year ago

... as I'm trying right now to use the Window class with WPF as well but not sure it will work with your Skia i

Can you reiterate what platforms you're mostly interested in?

For the record, on Windows, Uno isn't present, WinUI runs natively so whatever WinUI supports you can do.

For WASM, how do you foresee Multi-Window working?

For Wasm may be something like this? 😬

MartinZikmund commented 1 year ago

@horaciodiez That sounds more like a "in-app window" control/docking control. Could be an interesting feature for https://github.com/unoplatform/uno.toolkit.ui

GitHub
GitHub - unoplatform/uno.toolkit.ui: A set of custom controls for the WinUI and the Uno Platform not offered out of the box by WinUI, such as Card, TabBar, NavigationBar, etc.
A set of custom controls for the WinUI and the Uno Platform not offered out of the box by WinUI, such as Card, TabBar, NavigationBar, etc. - GitHub - unoplatform/uno.toolkit.ui: A set of custom con...
horaciodiez commented 1 year ago

Hi @MartinZikmund ! I believe that it could be like the old MDI interface, but it will be ideal that we can drag the window "off boundaries" the "mdi" container like the sample attached. (the sample is a modal dialog, just to show the idea) Btw congratulations for the new 4.10 release! But (always a but) I still need a multi-window platform to build a proper LOB app for Windows and Mac desktop clients. 😬 Screen-Recording-Made-with-FlexClip-_15_

jingliancui commented 11 months ago

Hi All, is it possible for wasm? I plan to choose wasm stack for a product, but users are from enterprise, they are used to use multi browser tabs for their daily tasks.

jeromelaban commented 11 months ago

@jingliancui Actual multi-window for webassembly is currently unknown as it would require multi-window shared array buffer sharing and that's not something that the .NET runtime currently supports.

It's possible to create what's been shown in https://github.com/unoplatform/uno/issues/8341#issuecomment-1710476013, though.