Support IsDarkMode in application event context. Fix bug with event mapping.

This commit is contained in:
Lea Anthony
2023-09-15 20:10:09 +10:00
parent b49f135e31
commit 86354e9fc0
8 changed files with 39 additions and 37 deletions
+1 -1
View File
@@ -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!")
+8 -9
View File
@@ -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);
}
}
+2 -3
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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);
}
}