mirror of
https://github.com/taigrr/wails.git
synced 2026-04-04 06:02:43 -07:00
Compare commits
16 Commits
bugfix/non
...
v1.12.0-pr
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c249e9c6b | ||
|
|
cb03409e3a | ||
|
|
40db3587cb | ||
|
|
6228328278 | ||
|
|
17a9cf4afb | ||
|
|
3567ec9865 | ||
|
|
1a3cefd180 | ||
|
|
5ced28cb74 | ||
|
|
7c04a854da | ||
|
|
39d687fa31 | ||
|
|
ee04a9235d | ||
|
|
0c2c56e1dd | ||
|
|
5267968151 | ||
|
|
7b31c8ddd2 | ||
|
|
1e2bc5728a | ||
|
|
e0aab7c27f |
@@ -40,4 +40,5 @@ Wails is what it is because of the time and effort given by these great people.
|
||||
* [Balakrishna Prasad Ganne](https://github.com/aayush420)
|
||||
* [Charaf Rezrazi](https://github.com/Rezrazi)
|
||||
* [misitebao](https://github.com/misitebao)
|
||||
* [Elie Grenon](https://github.com/DrunkenPoney)
|
||||
* [Elie Grenon](https://github.com/DrunkenPoney)
|
||||
* [SophieAu](https://github.com/SophieAu)
|
||||
@@ -147,7 +147,12 @@ This project was mainly coded to the following albums:
|
||||
|
||||
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fwailsapp%2Fwails?ref=badge_large)
|
||||
|
||||
## Special Thank You
|
||||
## Special Thanks
|
||||
|
||||
<p align="center" style="text-align: center">
|
||||
A *huge* thanks to <a href="https://pace.dev"><img src="pace.jpeg"/> Pace</a> for sponsoring the project and helping the efforts to get Wails ported to Apple Silicon!<br/><br/>
|
||||
If you are looking for a Project Management tool that's powerful but quick and easy to use, check them out!<br/><br/>
|
||||
</p>
|
||||
|
||||
<p align="center" style="text-align: center">
|
||||
A special thank you to JetBrains for donating licenses to us!<br/><br/>
|
||||
|
||||
@@ -80,7 +80,6 @@ export default {
|
||||
{
|
||||
targets: '> 0.25%, not dead, IE 11',
|
||||
modules: false,
|
||||
spec: true,
|
||||
useBuiltIns: 'usage',
|
||||
forceAllTransforms: true,
|
||||
corejs: 3,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package cmd
|
||||
|
||||
// Version - Wails version
|
||||
const Version = "v1.11.0"
|
||||
const Version = "v1.12.0-pre2"
|
||||
|
||||
@@ -42,12 +42,12 @@ func (e *Manager) PushEvent(eventData *messages.EventData) {
|
||||
// means it does not expire (default).
|
||||
type eventListener struct {
|
||||
callback func(...interface{}) // Function to call with emitted event data
|
||||
counter int // Expire after counter callbacks. 0 = infinite
|
||||
counter uint // Expire after counter callbacks. 0 = infinite
|
||||
expired bool // Indicates if the listener has expired
|
||||
}
|
||||
|
||||
// Creates a new event listener from the given callback function
|
||||
func (e *Manager) addEventListener(eventName string, callback func(...interface{}), counter int) error {
|
||||
func (e *Manager) addEventListener(eventName string, callback func(...interface{}), counter uint) error {
|
||||
|
||||
// Sanity check inputs
|
||||
if callback == nil {
|
||||
@@ -75,7 +75,30 @@ func (e *Manager) addEventListener(eventName string, callback func(...interface{
|
||||
// On adds a listener for the given event
|
||||
func (e *Manager) On(eventName string, callback func(...interface{})) {
|
||||
// Add a persistent eventListener (counter = 0)
|
||||
e.addEventListener(eventName, callback, 0)
|
||||
err := e.addEventListener(eventName, callback, 0)
|
||||
if err != nil {
|
||||
e.log.Error(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// Once adds a listener for the given event that will auto remove
|
||||
// after one callback
|
||||
func (e *Manager) Once(eventName string, callback func(...interface{})) {
|
||||
// Add a persistent eventListener (counter = 0)
|
||||
err := e.addEventListener(eventName, callback, 1)
|
||||
if err != nil {
|
||||
e.log.Error(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// OnMultiple adds a listener for the given event that will trigger
|
||||
// at most <counter> times.
|
||||
func (e *Manager) OnMultiple(eventName string, callback func(...interface{}), counter uint) {
|
||||
// Add a persistent eventListener (counter = 0)
|
||||
err := e.addEventListener(eventName, callback, counter)
|
||||
if err != nil {
|
||||
e.log.Error(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// Emit broadcasts the given event to the subscribed listeners
|
||||
@@ -108,10 +131,13 @@ func (e *Manager) Start(renderer interfaces.Renderer) {
|
||||
})
|
||||
|
||||
// Notify renderer
|
||||
e.renderer.NotifyEvent(event)
|
||||
err := e.renderer.NotifyEvent(event)
|
||||
if err != nil {
|
||||
e.log.Error(err.Error())
|
||||
}
|
||||
|
||||
// Notify Go listeners
|
||||
var listenersToRemove []*eventListener
|
||||
var listenersToRemove int
|
||||
|
||||
// Iterate listeners
|
||||
for _, listener := range e.listeners[event.Name] {
|
||||
@@ -129,12 +155,13 @@ func (e *Manager) Start(renderer interfaces.Renderer) {
|
||||
listener.counter = listener.counter - 1
|
||||
if listener.counter == 0 {
|
||||
listener.expired = true
|
||||
listenersToRemove++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remove expired listeners in place
|
||||
if len(listenersToRemove) > 0 {
|
||||
if listenersToRemove > 0 {
|
||||
listeners := e.listeners[event.Name][:0]
|
||||
for _, listener := range listeners {
|
||||
if !listener.expired {
|
||||
|
||||
@@ -6,6 +6,8 @@ import "github.com/wailsapp/wails/lib/messages"
|
||||
type EventManager interface {
|
||||
PushEvent(*messages.EventData)
|
||||
Emit(eventName string, optionalData ...interface{})
|
||||
OnMultiple(eventName string, callback func(...interface{}), counter uint)
|
||||
Once(eventName string, callback func(...interface{}))
|
||||
On(eventName string, callback func(...interface{}))
|
||||
Start(Renderer)
|
||||
Shutdown()
|
||||
|
||||
@@ -19,6 +19,16 @@ func (r *Events) On(eventName string, callback func(optionalData ...interface{})
|
||||
r.eventManager.On(eventName, callback)
|
||||
}
|
||||
|
||||
// Once pass through
|
||||
func (r *Events) Once(eventName string, callback func(optionalData ...interface{})) {
|
||||
r.eventManager.Once(eventName, callback)
|
||||
}
|
||||
|
||||
// OnMultiple pass through
|
||||
func (r *Events) OnMultiple(eventName string, callback func(optionalData ...interface{}), counter uint) {
|
||||
r.eventManager.OnMultiple(eventName, callback, counter)
|
||||
}
|
||||
|
||||
// Emit pass through
|
||||
func (r *Events) Emit(eventName string, optionalData ...interface{}) {
|
||||
r.eventManager.Emit(eventName, optionalData...)
|
||||
|
||||
Reference in New Issue
Block a user