* [v2, windows] CompareBrowserVersions needs a int32 pointer
Otherwise 4294967295 will be returned instead of -1 and the
minimum version check can't detect an older version.
So an older version than the minimum might be used and will
result in AccessViolationExceptions.
* [v2, windows] Use the correct minimum runtime version for SDK 1.0.992.28
The Webview2Loader.dll are already at version 1.0.992.28 for all platforms.
* [v2, windows] Remove unnecessary LockOSThread
Form.Invoke makes sure the call is on the correct thread and does
lock the OSThread during the call.
* [v2, windows] Unlock OSThread after native calls have been finished
This makes sure the OSThread can be reused by other go
routines after a native call has been finished. Otherwise the
OSThread will be destroyed as soon as the goroutine has
finished.
Make sure no pointers to the stack are passed to g_idle_add,
because at the time the callback gets executed on the
main thread, the pointer might be invalid.
Go might have reused the stack or grown the stack and the
pointer is invalid.
The concept used on Windows has been ported to Linux.
* [website] Fix devserver default value doc
* [v2] Add support for AssetsHandler
AssetsHandler is a http.Handler delegate, which gets called
as a fallback for all Non-GET requests and for GET requests
for which the Assets didn’t find the file.
Known Limitations on Linux:
- All requests are GET requests
- No request headers
- No request body
- No response status code, only StatusOK will be returned
- No response headers
Known Limitations on Windows:
- Request body is leaking memory. Seems to be a bug in
WebView2, investigation angoing.
Most of these limitations on Linux will be fixed in the future with
adding support for Webkit2Gtk 2.36.0+.
* [v2, linux] Add response streaming support
The complete response won’t be held anymore in memory and will
be streamed to WebKit2.
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
If the window is frameless and we are minimizing, then we need to suppress
the Resize on the WebView2. If we don't do this, restoring does not work as
expected and first restores with some wrong size during the restore animation
and only fully renders when the animation is done.
This highly depends on the content in the WebView.
Possible fix for #1319
* [v2] Consolidate AssetServers
* [v2] Support starturl for webview on linux and darwin
* [v2] Add support for frontend DevServer
* [v2] Activate frontend DevServer in svelte template
* [website] Add bleeding edge guide for PRs
* DoNotMerge: Bump Version for testing
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* v2: linux: add icon to linux specific app option and load it during window creation
Signed-off-by: Martin Gysel <me@bearsh.org>
* doc: linux specific option: icon
* add support for 'DomReady' callback on linux
cosmetic: use bodyLen instead of len() in processRequest()
* reformat webViewLoadChanged() for consistency
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* Initial commit
* Retry index.html every 500ms for 5s before defaulting to the default index page.
* Load all files using the same technique
* Remove reload script
* Fix fatal error on otherwise clean exit.
* Fix race condition while setting title during window creation.
* Fix unexpected signal error when clicking webview should initiate a drag window operation.
* Ensure ExecuteOnMainThread callbacks are removed from the event source list on completion.
* Ensure all ExecuteOnMainThread callbacks use the expected return value on completion.
* Fix potential memory leak when exiting early from startDrag.
* Fix using runtime.WindowFullscreen on Linux ARM64.
* Fix fatal error on otherwise clean exit.
* Fix race condition while setting title during window creation.
* Fix unexpected signal error when clicking webview should initiate a drag window operation.
* Ensure ExecuteOnMainThread callbacks are removed from the event source list on completion.
* Ensure all ExecuteOnMainThread callbacks use the expected return value on completion.
* Fix potential memory leak when exiting early from startDrag.
* [v2, windows] Apply suggested window size during DPI changed event
This adjusts the window size if the window is moved from one
monitor to another with a different DPI scaling
* [v2, windows] Do not block processing of messages during frameless drag/resize
* [v2, windows] Bump winc
Improves the HiDPI handling by using newer APIs if available
* [v2, windows] Constrain frameless maximize to MaxWidth/MaxHeight
* [linux] Move SetTitle and startDrag to main thread
* [linux] Move SetPosition, Center, Fullscreen and UnFullscreen to main thread
* Fix runtime Window Get/Set Position signatures
* Fix vanilla template keyboard handling
* Render menubar + text menu items
* Support disabled menuitems + callbacks
* Support checkboxes
* Support reusing checkboxes
* Support submenus
* Support Radio menuitems
* Support Menu Accelerators
* Updated windows window/frontend to fix issue with html select positioning
* Moved notifyParentWindowPositionChanged to the Window struct and moved RegMsgHandler to Run
* Update v2/internal/frontend/desktop/windows/window.go
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* Moved winc.RegMsgHandler back to old location
* fixed error with merge
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
The following features are now supported for framless windows
- Allow aero snap
- Minimize and maximize animations
- Allow minimizing/restoring by clicking onto the taskbar icon
- If EnableFramelessBorder is used, the default application border with glass effect is used
Change: If a menu is used, it won't be displayed anymore if the window is frameless.
Frameless windows are always not resizable per default and
the resizing for those will be initiated by the frontend see
processMessage.
If EnableSizable is enabled for frameless windows, a small white
titlebar will be shown.
Fix#1049
AssetDir is now inferred from the assets, if the assets is an
embed.FS, by taking the relativ path to the index.html joined with
the project root.
The assetDir flag still exists and can be used if the inferring doesn't
work, because the provided embed.FS wasn't defined in the main
package.