* allow for non-Window WailsEvent listeners
- adds a RegisterListener function on the App struct such
that code can listen for WailsEvent(s) even if it isn't a Window
- rename dispatchEventToWindows -> dispatchEventToListeners
- add all windows and WailsEventListeners to slice before emitting
* Update v3/pkg/application/application.go
---------
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* Fix: #3270
removes an unnessecary check which returned a double nil wich in turned causes a crash if systray doesn't have an attached window.
* Add iconIsInFlyout method to systray_windows
and use it to determine if the icon is in the
flyout or not when positioning an attached window.
* optimize the windows systray window positioning
we only need to get the systray bounds if
the icon is in the flyout area.
* Use correct behavior for placing the window
if the systray icon is visible in the taskbar the
window should be centered on the systray icon
otherwise the icon is in a flyout are and the
window should be placed in the corner.
Added comments to explain placement logic
* consistent placing of systray menu on right vs left click
* add PR info in changelog
---------
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* Fix appimage file sourcing
Add findGTKFiles to source webkit files for appimage generation
s
* Update refresh version to fix CPU usage
s
* update changelong
* refresh version up
---------
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* Fix appimage file sourcing
Add findGTKFiles to source webkit files for appimage generation
s
* Update refresh version to fix CPU usage
s
* update changelong
`linux` suffix means it won't compile on non-Linux platforms.
Shorten the name to avoid:
../../pkg/application/options_webview_window.go:104:8: undefined: LinuxWindow
../../pkg/application/options_application.go:28:8: undefined: LinuxOptions
../../pkg/application/options_webview_window.go:104:8: undefined: LinuxWindow
* Fix computing 'startURL' when 'FRONTEND_DEVSERVER_URL' is present.
* Respect provided URL when computing 'startURL' and 'FRONTEND_DEVSERVER_URL' is present.
* Update changelog.
* Correctly produce absolute URI in 'GetStartURL' when input is provided.
Introduced the ability to clone a menu, along with its submenus, in Linux-based web applications to create a full deep copy. This fixes reusing the application menu for window menus.
This update introduces a LinuxOptions struct for Linux-specific application configurations and refines webview for Linux. The 'windows' map has been renamed to 'windowMap' to avoid confusion. Moreover, a method to unregister Windows has been added to ensure the Linux application automatically quits when the last window closes, unless explicitly disabled in the new LinuxOptions structure. Reset Window position after hiding. Some debug output has been removed.
The commit introduces a set of webview GPU policies to control hardware acceleration. These policies define when hardware acceleration is enabled on the webview. An option for this has been added to the LinuxWindow struct for Linux specific windows. Additional code modification was carried out to use this new GPU policy option when calling `windowNew` function. Finally, the sequence of the GPU Policies in the const declaration has been updated for better readability.
This commit includes the addition of common events for the Linux platform. Refactored and standardized the method receivers for the application from 'm' to 'l'. Also, the application startup events in the window example have been updated according to the new naming scheme.
Introduced the ability to clone a menu, along with its submenus, in Linux-based web applications to create a full deep copy. This fixes reusing the application menu for window menus.
This update introduces a LinuxOptions struct for Linux-specific application configurations and refines webview for Linux. The 'windows' map has been renamed to 'windowMap' to avoid confusion. Moreover, a method to unregister Windows has been added to ensure the Linux application automatically quits when the last window closes, unless explicitly disabled in the new LinuxOptions structure. Reset Window position after hiding. Some debug output has been removed.
The commit introduces a set of webview GPU policies to control hardware acceleration. These policies define when hardware acceleration is enabled on the webview. An option for this has been added to the LinuxWindow struct for Linux specific windows. Additional code modification was carried out to use this new GPU policy option when calling `windowNew` function. Finally, the sequence of the GPU Policies in the const declaration has been updated for better readability.
This commit includes the addition of common events for the Linux platform. Refactored and standardized the method receivers for the application from 'm' to 'l'. Also, the application startup events in the window example have been updated according to the new naming scheme.
* Add option for showing the toolbar in fullscreen mode on macOS
* Add an example demonstrating the ShowToolbarWhenFullscreen option
* Update docs
* Add changelog entry
* Run go mod tidy
* Add JS Window API example
* Add ToggleMaximise button to Window API example
* Restore ToggleMaximise method in Window interface
* Update docs and changelog
Three new options have been introduced in the application options for MacOS to disable the minimize, maximize, and close buttons on the window. Corresponding functionality has been added in the webview window for darwin to handle these new options. These changes have been showcased in the window example main.go file.
This commit introduces the functionality to disable the minimise and maximise buttons on windows. These options have been added to the `application.WebviewWindowOptions` and integrated in the Windows application logic. Effectively, developers can now control the availability of these buttons in their windows applications.
This update adds implementation to several menu item functions, replacing their previous 'not implemented' state. This includes actions for close, reload, forcing reload, toggling of fullscreen, reset zoom, and others. The update also includes modifications for the handling of developer tools toggle under different build configurations. This refactoring is aimed to standardize devtools configuration across different operating systems.
* Fix systray click handling
* Open Menu if no window is attached in defaultClickHandler()
* Remove systemTraySetMenu function
* Fix a crash in hide-window example
* Update changelog
The code update sets the default extension to the first pattern in the save dialog file filter when options.Filters is populated. This improvement applies to Windows platform interface function for 'Save File Dialog' and provides a more intuitive user experience.
This update allows the application shutdown to be cancelled. It implements the shouldQuit function, which can prevent the application from quitting if it returns false. Additional checks have been added to ensure cleanup and quit processes are performed only if required. The darwin delegate and linux and windows applications were modified to include this new functionality.
A new method OnShutdown was introduced to allow adding tasks to be run when the application shuts down. The shutdown tasks are run on the main thread and in the order they were added, with the application option `OnShutdown` being run first. This allows more controlled and managed shutdown of the application.
An option to disable AssetServer logging has been introduced in the application options. This will suppress every request log from the AssetServer if set to true. This adjustment is useful for preventing log saturation in certain scenarios or environments.
The application shutdown process has been significantly reworked to be more efficient and robust. The refactored code removes the event listener for the 'ApplicationTerminate' event. Instead, an in-process flag is added to the 'Quit' method to prevent recursive calls. Additionally, an optional 'OnShutdown' function variable is introduced to allow custom cleanup operations upon app termination.
This commit adds a robust teardown process for windows on application shutdown. It introduces a field to track the destruction state of each window and checks such before performing window operations. Also, it enhances the destroy functions within application for thorough clean up. Finally, redundant event handlers related to application termination were removed while fixing file generating challenge in go tasks.
Without this patch there's a really strange behaviour if there are
multiple windows.
Having two windows with a webview open with an input field.
Focusing the input field on one window, then focusing the input
field on the second one. Then clicking directly on the non client
area of the first one, e.g. to trigger a minimze, the minimize is
not executed until the mouse is getting moved. As long as the
mouse is not moved the event for the click is blocked and not
executed.
Using this new mode fixes that problem, but we need to handle
‘alt+f4’ on our own.
The frontend interaction has been significantly updated, including improvements to the Greet function and the addition of an ongoing time display. Additionally, dependencies in package.json have been updated to their latest versions. Also, redundant print statement was removed from messageprocessor_call.go and changes were made to layout structure and styles in the main.go.tmpl and index.html files.
The Wails runtime has been updated to correctly handle debug checks and the version in the package.json has been bumped to 3.0.0-alpha.6. Fixed reference to global wails object in WML.
* Add Taskfile entry for run:linux, used by task dev
Signed-off-by: Marcus Crane <marcus@utf9k.net>
* Add updated CHANGELOG entry
Signed-off-by: Marcus Crane <marcus@utf9k.net>
* Correct CHANGELOG entry
---------
Signed-off-by: Marcus Crane <marcus@utf9k.net>
* remove 'test' project
* dynamic template list generation
- uses a single fs.Embed to contain all templates
- walks and rebuilds the list of TemplateData using the cached data
- pulls the `description` out of the required `template.json` file in
the template directory
* [v3] template handling update
- move "common" template files to a _common directory
- update generator to render from _common/* first
- render selected template last to overwrite anything provided by
_common if needed
- remove duplicate files from all templates that do not change
* cleanup template project directory after test
* add linux to _common/Taskfile.yaml
* noop: whitespace cleanup _common/Taskfile.yaml
- use unsafe.Pointers for 'signal_connect'
- add handler for 'script-message-received::external'
need to update this to handle older versions of webkit2gtk better
currently removed the ifdef guards (since they don't work in Go code
directly) - need to reimplement using build tags if required.
* add check for GPU device info
* add changelog note
* change return to continue
* Small refactor
---------
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
- disable output of `import <model> from models` line
- update README to generate bindings in usable location for HTML
- update HTML to reference bindings correctly
- update javascript to call and process the bound Greet function
* Fixes doctor bug for apt package manager
* Actually fix it
* Pad the text " all"
Adding a space to ensure checking against "all" doesn't always catch "install" or "not-installed" etc
* Update changelog.md
Doctor Apt Verify
---------
Co-authored-by: atterpac <michael@atterpac.dev>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
* [v3 linux/systray] dbus generation
* [v3 linux] systemtray dbus implementation
* [v3] add 'id' for MenuSeparator
This is needed in order to have a unique value for all
menuItem(s) such that the Linux implementation doesn't have to
generate new identifiers.
Allowing the reuse keeps a 1-1 mapping in place without any extra effort.
* [v3 example/systray] add radio group to example
* [v3 linux] stub out ExportStatusNotifierItem callbacks
Can only seem to get the `SecondaryActivate` to fire when doing a
3-finger click! I was expecting a right-click interaction to trigger it.
- drop the gtkSignalHandlers map entirely (wasn't used)
- use 'uint' for mapping signal IDs to MenuItem
- store and retrieve the menuitem identifier to/from the menu item widget
Linux requires a `gtk_menu_bar` for a gtk_window to display a menu.
For the `systray` a `gtk_menu` is needed instead.
This change creates the correct type of `impl` for the `Menu`
depending on how it is being used.