mirror of
https://github.com/wavetermdev/wails.git
synced 2026-08-05 13:53:43 -07:00
Support IsDarkMode in application event context. Fix bug with event mapping.
This commit is contained in:
@@ -43,7 +43,7 @@ func main() {
|
||||
}
|
||||
})
|
||||
|
||||
app.On(events.Windows.SystemThemeChanged, func(event *application.Event) {
|
||||
app.On(events.Common.ThemeChanged, func(event *application.Event) {
|
||||
log.Println("System theme changed!")
|
||||
if event.Context().IsDarkMode() {
|
||||
log.Println("System is now using dark mode!")
|
||||
|
||||
@@ -237,8 +237,14 @@ func newPlatformApp(app *App) *macosApp {
|
||||
}
|
||||
|
||||
//export processApplicationEvent
|
||||
func processApplicationEvent(eventID C.uint) {
|
||||
applicationEvents <- NewApplicationEvent(uint(eventID))
|
||||
func processApplicationEvent(eventID C.uint, _ unsafe.Pointer) {
|
||||
event := NewApplicationEvent(int(eventID))
|
||||
switch event.Id {
|
||||
case uint(events.Mac.ApplicationDidChangeTheme):
|
||||
isDark := globalApplication.IsDarkMode()
|
||||
event.Context().setIsDarkMode(isDark)
|
||||
}
|
||||
applicationEvents <- event
|
||||
}
|
||||
|
||||
//export processWindowEvent
|
||||
@@ -285,13 +291,6 @@ func processMenuItemClick(menuID C.uint) {
|
||||
menuItemClicked <- uint(menuID)
|
||||
}
|
||||
|
||||
func setIcon(icon []byte) {
|
||||
if icon == nil {
|
||||
return
|
||||
}
|
||||
C.setApplicationIcon(unsafe.Pointer(&icon[0]), C.int(len(icon)))
|
||||
}
|
||||
|
||||
func (a *App) logPlatformInfo() {
|
||||
info, err := operatingsystem.Info()
|
||||
if err != nil {
|
||||
|
||||
@@ -14,127 +14,127 @@ extern bool hasListeners(unsigned int);
|
||||
}
|
||||
- (void)themeChanged:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidChangeTheme) ) {
|
||||
processApplicationEvent(EventApplicationDidChangeTheme);
|
||||
processApplicationEvent(EventApplicationDidChangeTheme, NULL);
|
||||
}
|
||||
}
|
||||
// GENERATED EVENTS START
|
||||
- (void)applicationDidBecomeActive:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidBecomeActive) ) {
|
||||
processApplicationEvent(EventApplicationDidBecomeActive);
|
||||
processApplicationEvent(EventApplicationDidBecomeActive, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidChangeBackingProperties:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidChangeBackingProperties) ) {
|
||||
processApplicationEvent(EventApplicationDidChangeBackingProperties);
|
||||
processApplicationEvent(EventApplicationDidChangeBackingProperties, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidChangeEffectiveAppearance:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidChangeEffectiveAppearance) ) {
|
||||
processApplicationEvent(EventApplicationDidChangeEffectiveAppearance);
|
||||
processApplicationEvent(EventApplicationDidChangeEffectiveAppearance, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidChangeIcon:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidChangeIcon) ) {
|
||||
processApplicationEvent(EventApplicationDidChangeIcon);
|
||||
processApplicationEvent(EventApplicationDidChangeIcon, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidChangeOcclusionState:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidChangeOcclusionState) ) {
|
||||
processApplicationEvent(EventApplicationDidChangeOcclusionState);
|
||||
processApplicationEvent(EventApplicationDidChangeOcclusionState, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidChangeScreenParameters:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidChangeScreenParameters) ) {
|
||||
processApplicationEvent(EventApplicationDidChangeScreenParameters);
|
||||
processApplicationEvent(EventApplicationDidChangeScreenParameters, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidChangeStatusBarFrame:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidChangeStatusBarFrame) ) {
|
||||
processApplicationEvent(EventApplicationDidChangeStatusBarFrame);
|
||||
processApplicationEvent(EventApplicationDidChangeStatusBarFrame, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidChangeStatusBarOrientation) ) {
|
||||
processApplicationEvent(EventApplicationDidChangeStatusBarOrientation);
|
||||
processApplicationEvent(EventApplicationDidChangeStatusBarOrientation, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidFinishLaunching) ) {
|
||||
processApplicationEvent(EventApplicationDidFinishLaunching);
|
||||
processApplicationEvent(EventApplicationDidFinishLaunching, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidHide:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidHide) ) {
|
||||
processApplicationEvent(EventApplicationDidHide);
|
||||
processApplicationEvent(EventApplicationDidHide, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidResignActiveNotification:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidResignActiveNotification) ) {
|
||||
processApplicationEvent(EventApplicationDidResignActiveNotification);
|
||||
processApplicationEvent(EventApplicationDidResignActiveNotification, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidUnhide:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidUnhide) ) {
|
||||
processApplicationEvent(EventApplicationDidUnhide);
|
||||
processApplicationEvent(EventApplicationDidUnhide, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidUpdate:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationDidUpdate) ) {
|
||||
processApplicationEvent(EventApplicationDidUpdate);
|
||||
processApplicationEvent(EventApplicationDidUpdate, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationWillBecomeActive:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationWillBecomeActive) ) {
|
||||
processApplicationEvent(EventApplicationWillBecomeActive);
|
||||
processApplicationEvent(EventApplicationWillBecomeActive, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationWillFinishLaunching) ) {
|
||||
processApplicationEvent(EventApplicationWillFinishLaunching);
|
||||
processApplicationEvent(EventApplicationWillFinishLaunching, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationWillHide:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationWillHide) ) {
|
||||
processApplicationEvent(EventApplicationWillHide);
|
||||
processApplicationEvent(EventApplicationWillHide, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationWillResignActive:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationWillResignActive) ) {
|
||||
processApplicationEvent(EventApplicationWillResignActive);
|
||||
processApplicationEvent(EventApplicationWillResignActive, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationWillTerminate:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationWillTerminate) ) {
|
||||
processApplicationEvent(EventApplicationWillTerminate);
|
||||
processApplicationEvent(EventApplicationWillTerminate, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationWillUnhide:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationWillUnhide) ) {
|
||||
processApplicationEvent(EventApplicationWillUnhide);
|
||||
processApplicationEvent(EventApplicationWillUnhide, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationWillUpdate:(NSNotification *)notification {
|
||||
if( hasListeners(EventApplicationWillUpdate) ) {
|
||||
processApplicationEvent(EventApplicationWillUpdate);
|
||||
processApplicationEvent(EventApplicationWillUpdate, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,8 @@ func (w *Event) Context() *ApplicationEventContext {
|
||||
|
||||
func NewApplicationEvent(id int) *Event {
|
||||
return &Event{
|
||||
Id: uint(id),
|
||||
Id: uint(id),
|
||||
ctx: newApplicationEventContext(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,8 +50,6 @@ func (e *WailsEvent) Cancel() {
|
||||
e.Cancelled = true
|
||||
}
|
||||
|
||||
var commonEvents = make(chan *Event)
|
||||
|
||||
func (e WailsEvent) ToJSON() string {
|
||||
marshal, err := json.Marshal(&e)
|
||||
if err != nil {
|
||||
|
||||
@@ -11,6 +11,8 @@ var commonApplicationEventMap = map[events.ApplicationEventType]events.Applicati
|
||||
|
||||
func (m *macosApp) setupCommonEvents() {
|
||||
for sourceEvent, targetEvent := range commonApplicationEventMap {
|
||||
sourceEvent := sourceEvent
|
||||
targetEvent := targetEvent
|
||||
m.parent.On(sourceEvent, func(event *Event) {
|
||||
event.Id = uint(targetEvent)
|
||||
applicationEvents <- event
|
||||
|
||||
@@ -10,6 +10,8 @@ var commonApplicationEventMap = map[events.ApplicationEventType]events.Applicati
|
||||
|
||||
func (m *windowsApp) setupCommonEvents() {
|
||||
for sourceEvent, targetEvent := range commonApplicationEventMap {
|
||||
sourceEvent := sourceEvent
|
||||
targetEvent := targetEvent
|
||||
m.parent.On(sourceEvent, func(event *Event) {
|
||||
event.Id = uint(targetEvent)
|
||||
applicationEvents <- event
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#ifndef _events_h
|
||||
#define _events_h
|
||||
|
||||
extern void processApplicationEvent(unsigned int);
|
||||
extern void processApplicationEvent(unsigned int, void* data);
|
||||
extern void processWindowEvent(unsigned int, unsigned int);
|
||||
|
||||
#define EventApplicationDidBecomeActive 1024
|
||||
|
||||
@@ -60,7 +60,7 @@ var eventsH = `//go:build darwin
|
||||
#ifndef _events_h
|
||||
#define _events_h
|
||||
|
||||
extern void processApplicationEvent(unsigned int);
|
||||
extern void processApplicationEvent(unsigned int, void* data);
|
||||
extern void processWindowEvent(unsigned int, unsigned int);
|
||||
|
||||
$$CHEADEREVENTS
|
||||
@@ -177,7 +177,7 @@ func main() {
|
||||
if strings.HasPrefix(event, "Application") {
|
||||
applicationDelegateEvents.WriteString(`- (void)` + delegateEventFunction + `:(NSNotification *)notification {
|
||||
if( hasListeners(Event` + eventTitle + `) ) {
|
||||
processApplicationEvent(Event` + eventTitle + `);
|
||||
processApplicationEvent(Event` + eventTitle + `, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user