Update windowSetupSignalHandlers & linux events

This commit is contained in:
Lea Anthony
2024-02-04 12:42:00 +11:00
committed by Travis McLane
parent 4467a1ffa2
commit bfa53dfd6c
12 changed files with 626 additions and 506 deletions
@@ -155,6 +155,9 @@ export const EventTypes = {
},
Linux: {
SystemThemeChanged: "linux:SystemThemeChanged",
WindowLoadChanged: "linux:WindowLoadChanged",
WindowDeleteEvent: "linux:WindowDeleteEvent",
ApplicationStartup: "linux:ApplicationStartup",
},
Common: {
ApplicationStarted: "common:ApplicationStarted",
@@ -155,6 +155,9 @@ export declare const EventTypes: {
},
Linux: {
SystemThemeChanged: string,
WindowLoadChanged: string,
WindowDeleteEvent: string,
ApplicationStartup: string,
},
Common: {
ApplicationStarted: string,
@@ -4,7 +4,6 @@
extern bool hasListeners(unsigned int);
extern bool shouldQuitApplication();
extern void cleanup();
@implementation AppDelegate
- (void)dealloc
{
+9
View File
@@ -2,6 +2,7 @@
package application
import "C"
import (
"fmt"
"log"
@@ -213,3 +214,11 @@ func (a *App) logPlatformInfo() {
a.info("Platform Info:", platformInfo...)
}
//export processWindowEvent
func processWindowEvent(windowID C.uint, eventID C.uint) {
windowEvents <- &windowEvent{
WindowID: uint(windowID),
EventID: uint(eventID),
}
}
+60 -33
View File
@@ -58,8 +58,10 @@ typedef struct WindowEvent {
// exported below
void activateLinux(gpointer data);
extern void emit(WindowEvent* data);
extern gboolean handleDeleteEvent(GtkWidget*, GdkEvent*, uintptr_t);
extern void handleLoadChanged(WebKitWebView*, WebKitLoadEvent, uintptr_t);
void handleClick(void*);
extern gboolean onButtonEvent(GtkWidget *widget, GdkEventButton *event, gpointer user_data);
extern gboolean onButtonEvent(GtkWidget *widget, GdkEventButton *event, uintptr_t user_data);
extern void onDragNDrop(
void *target,
GdkDragContext* context,
@@ -69,7 +71,7 @@ extern void onDragNDrop(
guint info,
guint time,
gpointer data);
extern gboolean onKeyPressEvent (GtkWidget *widget, GdkEventKey *event, gpointer user_data);
extern gboolean onKeyPressEvent (GtkWidget *widget, GdkEventKey *event, uintptr_t user_data);
extern void onProcessRequest(void *request, gpointer user_data);
extern void sendMessageToBackend(WebKitUserContentManager *contentManager, WebKitJavascriptResult *result, void *data);
// exported below (end)
@@ -145,6 +147,31 @@ static int GetNumScreens(){
*/
import "C"
// Calloc handles alloc/dealloc of C data
type Calloc struct {
pool []unsafe.Pointer
}
// NewCalloc creates a new allocator
func NewCalloc() Calloc {
return Calloc{}
}
// String creates a new C string and retains a reference to it
func (c Calloc) String(in string) *C.char {
result := C.CString(in)
c.pool = append(c.pool, unsafe.Pointer(result))
return result
}
// Free frees all allocated C memory
func (c Calloc) Free() {
for _, str := range c.pool {
C.free(str)
}
c.pool = []unsafe.Pointer{}
}
type windowPointer *C.GtkWindow
type identifier C.uint
type pointer unsafe.Pointer
@@ -910,36 +937,36 @@ func emit(we *C.WindowEvent) {
}
}
func windowSetupSignalHandlers(windowId uint, window, webview pointer, emit func(e events.WindowEventType)) {
event := C.CString("delete-event")
defer C.free(unsafe.Pointer(event))
wEvent := C.WindowEvent{
id: C.uint(windowId),
event: C.uint(events.Common.WindowClosing),
//export handleDeleteEvent
func handleDeleteEvent(widget *C.GtkWidget, event *C.GdkEvent, data C.uintptr_t) C.gboolean {
processWindowEvent(C.uint(data), C.uint(events.Linux.WindowDeleteEvent))
return C.gboolean(0)
}
//export handleLoadChanged
func handleLoadChanged(webview *C.WebKitWebView, event C.WebKitLoadEvent, data C.uintptr_t) {
switch event {
case C.WEBKIT_LOAD_FINISHED:
processWindowEvent(C.uint(data), C.uint(events.Linux.WindowLoadChanged))
}
C.signal_connect(unsafe.Pointer(window), event, C.emit, unsafe.Pointer(&wEvent))
}
func windowSetupSignalHandlers(windowId uint, window, webview pointer, emit func(e events.WindowEventType)) {
c := NewCalloc()
defer c.Free()
winID := unsafe.Pointer(uintptr(C.uint(windowId)))
// Set up the window close event
C.signal_connect(unsafe.Pointer(window), c.String("delete-event"), C.handleDeleteEvent, winID)
C.signal_connect(unsafe.Pointer(webview), c.String("load-changed"), C.handleLoadChanged, winID)
contentManager := C.webkit_web_view_get_user_content_manager((*C.WebKitWebView)(webview))
event = C.CString("script-message-received::external")
defer C.free(unsafe.Pointer(event))
C.signal_connect(unsafe.Pointer(contentManager), event, C.sendMessageToBackend, nil)
/*
event = C.CString("load-changed")
defer C.free(unsafe.Pointer(event))
C.signal_connect(webview, event, C.webviewLoadChanged, unsafe.Pointer(&w.parent.id))
*/
id := C.uint(windowId)
event = C.CString("button-press-event")
C.signal_connect(unsafe.Pointer(webview), event, C.onButtonEvent, unsafe.Pointer(&id))
C.free(unsafe.Pointer(event))
event = C.CString("button-release-event")
defer C.free(unsafe.Pointer(event))
C.signal_connect(unsafe.Pointer(webview), event, C.onButtonEvent, unsafe.Pointer(&id))
event = C.CString("key-press-event")
defer C.free(unsafe.Pointer(event))
C.signal_connect(unsafe.Pointer(webview), event, C.onKeyPressEvent, unsafe.Pointer(&id))
C.signal_connect(unsafe.Pointer(contentManager), c.String("script-message-received::external"), C.sendMessageToBackend, nil)
C.signal_connect(unsafe.Pointer(webview), c.String("button-press-event"), C.onButtonEvent, winID)
C.signal_connect(unsafe.Pointer(webview), c.String("button-release-event"), C.onButtonEvent, winID)
C.signal_connect(unsafe.Pointer(webview), c.String("key-press-event"), C.onKeyPressEvent, winID)
}
func windowShowDevTools(webview pointer) {
@@ -1004,13 +1031,13 @@ func windowMove(window pointer, x, y int) {
// FIXME Change this to reflect mouse button!
//
//export onButtonEvent
func onButtonEvent(_ *C.GtkWidget, event *C.GdkEventButton, data unsafe.Pointer) C.gboolean {
func onButtonEvent(_ *C.GtkWidget, event *C.GdkEventButton, data C.uintptr_t) C.gboolean {
// Constants (defined here to be easier to use with purego)
GdkButtonPress := C.GDK_BUTTON_PRESS // 4
Gdk2ButtonPress := C.GDK_2BUTTON_PRESS // 5 for double-click
GdkButtonRelease := C.GDK_BUTTON_RELEASE // 7
windowId := uint(*((*C.uint)(data)))
windowId := uint(C.uint(data))
window := globalApplication.getWindowForID(windowId)
if window == nil {
return C.gboolean(0)
@@ -1068,8 +1095,8 @@ func onDragNDrop(target unsafe.Pointer, context *C.GdkDragContext, x C.gint, y C
}
//export onKeyPressEvent
func onKeyPressEvent(widget *C.GtkWidget, event *C.GdkEventKey, userData unsafe.Pointer) C.gboolean {
windowID := uint(*((*C.uint)(userData)))
func onKeyPressEvent(widget *C.GtkWidget, event *C.GdkEventKey, userData C.uintptr_t) C.gboolean {
windowID := uint(C.uint(userData))
accelerator, ok := getKeyboardState(event)
if !ok {
return C.gboolean(1)
@@ -6,6 +6,7 @@ import (
"fmt"
"github.com/wailsapp/wails/v3/internal/assetserver"
"github.com/wailsapp/wails/v3/internal/capabilities"
"github.com/wailsapp/wails/v3/internal/runtime"
"github.com/wailsapp/wails/v3/pkg/events"
)
@@ -395,6 +396,7 @@ func (w *linuxWebviewWindow) run() {
w.minimise()
case WindowStateFullscreen:
w.fullscreen()
case WindowStateNormal:
}
startURL, err := assetserver.GetStartURL(w.parent.options.URL)
@@ -414,6 +416,9 @@ func (w *linuxWebviewWindow) run() {
w.execJS(js)
}
})
w.parent.RegisterHook(events.Linux.WindowLoadChanged, func(e *WindowEvent) {
w.execJS(runtime.Core())
})
if w.parent.options.HTML != "" {
w.setHTML(w.parent.options.HTML)
}
+349 -340
View File
File diff suppressed because it is too large Load Diff
+3
View File
@@ -1,4 +1,7 @@
linux:SystemThemeChanged
linux:WindowLoadChanged
linux:WindowDeleteEvent
linux:ApplicationStartup
mac:ApplicationDidBecomeActive
mac:ApplicationDidChangeBackingProperties
mac:ApplicationDidChangeEffectiveAppearance
+125 -125
View File
@@ -6,132 +6,132 @@
extern void processApplicationEvent(unsigned int, void* data);
extern void processWindowEvent(unsigned int, unsigned int);
#define EventApplicationDidBecomeActive 1025
#define EventApplicationDidChangeBackingProperties 1026
#define EventApplicationDidChangeEffectiveAppearance 1027
#define EventApplicationDidChangeIcon 1028
#define EventApplicationDidChangeOcclusionState 1029
#define EventApplicationDidChangeScreenParameters 1030
#define EventApplicationDidChangeStatusBarFrame 1031
#define EventApplicationDidChangeStatusBarOrientation 1032
#define EventApplicationDidFinishLaunching 1033
#define EventApplicationDidHide 1034
#define EventApplicationDidResignActiveNotification 1035
#define EventApplicationDidUnhide 1036
#define EventApplicationDidUpdate 1037
#define EventApplicationWillBecomeActive 1038
#define EventApplicationWillFinishLaunching 1039
#define EventApplicationWillHide 1040
#define EventApplicationWillResignActive 1041
#define EventApplicationWillTerminate 1042
#define EventApplicationWillUnhide 1043
#define EventApplicationWillUpdate 1044
#define EventApplicationDidChangeTheme 1045
#define EventApplicationShouldHandleReopen 1046
#define EventWindowDidBecomeKey 1047
#define EventWindowDidBecomeMain 1048
#define EventWindowDidBeginSheet 1049
#define EventWindowDidChangeAlpha 1050
#define EventWindowDidChangeBackingLocation 1051
#define EventWindowDidChangeBackingProperties 1052
#define EventWindowDidChangeCollectionBehavior 1053
#define EventWindowDidChangeEffectiveAppearance 1054
#define EventWindowDidChangeOcclusionState 1055
#define EventWindowDidChangeOrderingMode 1056
#define EventWindowDidChangeScreen 1057
#define EventWindowDidChangeScreenParameters 1058
#define EventWindowDidChangeScreenProfile 1059
#define EventWindowDidChangeScreenSpace 1060
#define EventWindowDidChangeScreenSpaceProperties 1061
#define EventWindowDidChangeSharingType 1062
#define EventWindowDidChangeSpace 1063
#define EventWindowDidChangeSpaceOrderingMode 1064
#define EventWindowDidChangeTitle 1065
#define EventWindowDidChangeToolbar 1066
#define EventWindowDidChangeVisibility 1067
#define EventWindowDidDeminiaturize 1068
#define EventWindowDidEndSheet 1069
#define EventWindowDidEnterFullScreen 1070
#define EventWindowDidEnterVersionBrowser 1071
#define EventWindowDidExitFullScreen 1072
#define EventWindowDidExitVersionBrowser 1073
#define EventWindowDidExpose 1074
#define EventWindowDidFocus 1075
#define EventWindowDidMiniaturize 1076
#define EventWindowDidMove 1077
#define EventWindowDidOrderOffScreen 1078
#define EventWindowDidOrderOnScreen 1079
#define EventWindowDidResignKey 1080
#define EventWindowDidResignMain 1081
#define EventWindowDidResize 1082
#define EventWindowDidUpdate 1083
#define EventWindowDidUpdateAlpha 1084
#define EventWindowDidUpdateCollectionBehavior 1085
#define EventWindowDidUpdateCollectionProperties 1086
#define EventWindowDidUpdateShadow 1087
#define EventWindowDidUpdateTitle 1088
#define EventWindowDidUpdateToolbar 1089
#define EventWindowDidUpdateVisibility 1090
#define EventWindowShouldClose 1091
#define EventWindowWillBecomeKey 1092
#define EventWindowWillBecomeMain 1093
#define EventWindowWillBeginSheet 1094
#define EventWindowWillChangeOrderingMode 1095
#define EventWindowWillClose 1096
#define EventWindowWillDeminiaturize 1097
#define EventWindowWillEnterFullScreen 1098
#define EventWindowWillEnterVersionBrowser 1099
#define EventWindowWillExitFullScreen 1100
#define EventWindowWillExitVersionBrowser 1101
#define EventWindowWillFocus 1102
#define EventWindowWillMiniaturize 1103
#define EventWindowWillMove 1104
#define EventWindowWillOrderOffScreen 1105
#define EventWindowWillOrderOnScreen 1106
#define EventWindowWillResignMain 1107
#define EventWindowWillResize 1108
#define EventWindowWillUnfocus 1109
#define EventWindowWillUpdate 1110
#define EventWindowWillUpdateAlpha 1111
#define EventWindowWillUpdateCollectionBehavior 1112
#define EventWindowWillUpdateCollectionProperties 1113
#define EventWindowWillUpdateShadow 1114
#define EventWindowWillUpdateTitle 1115
#define EventWindowWillUpdateToolbar 1116
#define EventWindowWillUpdateVisibility 1117
#define EventWindowWillUseStandardFrame 1118
#define EventMenuWillOpen 1119
#define EventMenuDidOpen 1120
#define EventMenuDidClose 1121
#define EventMenuWillSendAction 1122
#define EventMenuDidSendAction 1123
#define EventMenuWillHighlightItem 1124
#define EventMenuDidHighlightItem 1125
#define EventMenuWillDisplayItem 1126
#define EventMenuDidDisplayItem 1127
#define EventMenuWillAddItem 1128
#define EventMenuDidAddItem 1129
#define EventMenuWillRemoveItem 1130
#define EventMenuDidRemoveItem 1131
#define EventMenuWillBeginTracking 1132
#define EventMenuDidBeginTracking 1133
#define EventMenuWillEndTracking 1134
#define EventMenuDidEndTracking 1135
#define EventMenuWillUpdate 1136
#define EventMenuDidUpdate 1137
#define EventMenuWillPopUp 1138
#define EventMenuDidPopUp 1139
#define EventMenuWillSendActionToItem 1140
#define EventMenuDidSendActionToItem 1141
#define EventWebViewDidStartProvisionalNavigation 1142
#define EventWebViewDidReceiveServerRedirectForProvisionalNavigation 1143
#define EventWebViewDidFinishNavigation 1144
#define EventWebViewDidCommitNavigation 1145
#define EventWindowFileDraggingEntered 1146
#define EventWindowFileDraggingPerformed 1147
#define EventWindowFileDraggingExited 1148
#define EventApplicationDidBecomeActive 1028
#define EventApplicationDidChangeBackingProperties 1029
#define EventApplicationDidChangeEffectiveAppearance 1030
#define EventApplicationDidChangeIcon 1031
#define EventApplicationDidChangeOcclusionState 1032
#define EventApplicationDidChangeScreenParameters 1033
#define EventApplicationDidChangeStatusBarFrame 1034
#define EventApplicationDidChangeStatusBarOrientation 1035
#define EventApplicationDidFinishLaunching 1036
#define EventApplicationDidHide 1037
#define EventApplicationDidResignActiveNotification 1038
#define EventApplicationDidUnhide 1039
#define EventApplicationDidUpdate 1040
#define EventApplicationWillBecomeActive 1041
#define EventApplicationWillFinishLaunching 1042
#define EventApplicationWillHide 1043
#define EventApplicationWillResignActive 1044
#define EventApplicationWillTerminate 1045
#define EventApplicationWillUnhide 1046
#define EventApplicationWillUpdate 1047
#define EventApplicationDidChangeTheme 1048
#define EventApplicationShouldHandleReopen 1049
#define EventWindowDidBecomeKey 1050
#define EventWindowDidBecomeMain 1051
#define EventWindowDidBeginSheet 1052
#define EventWindowDidChangeAlpha 1053
#define EventWindowDidChangeBackingLocation 1054
#define EventWindowDidChangeBackingProperties 1055
#define EventWindowDidChangeCollectionBehavior 1056
#define EventWindowDidChangeEffectiveAppearance 1057
#define EventWindowDidChangeOcclusionState 1058
#define EventWindowDidChangeOrderingMode 1059
#define EventWindowDidChangeScreen 1060
#define EventWindowDidChangeScreenParameters 1061
#define EventWindowDidChangeScreenProfile 1062
#define EventWindowDidChangeScreenSpace 1063
#define EventWindowDidChangeScreenSpaceProperties 1064
#define EventWindowDidChangeSharingType 1065
#define EventWindowDidChangeSpace 1066
#define EventWindowDidChangeSpaceOrderingMode 1067
#define EventWindowDidChangeTitle 1068
#define EventWindowDidChangeToolbar 1069
#define EventWindowDidChangeVisibility 1070
#define EventWindowDidDeminiaturize 1071
#define EventWindowDidEndSheet 1072
#define EventWindowDidEnterFullScreen 1073
#define EventWindowDidEnterVersionBrowser 1074
#define EventWindowDidExitFullScreen 1075
#define EventWindowDidExitVersionBrowser 1076
#define EventWindowDidExpose 1077
#define EventWindowDidFocus 1078
#define EventWindowDidMiniaturize 1079
#define EventWindowDidMove 1080
#define EventWindowDidOrderOffScreen 1081
#define EventWindowDidOrderOnScreen 1082
#define EventWindowDidResignKey 1083
#define EventWindowDidResignMain 1084
#define EventWindowDidResize 1085
#define EventWindowDidUpdate 1086
#define EventWindowDidUpdateAlpha 1087
#define EventWindowDidUpdateCollectionBehavior 1088
#define EventWindowDidUpdateCollectionProperties 1089
#define EventWindowDidUpdateShadow 1090
#define EventWindowDidUpdateTitle 1091
#define EventWindowDidUpdateToolbar 1092
#define EventWindowDidUpdateVisibility 1093
#define EventWindowShouldClose 1094
#define EventWindowWillBecomeKey 1095
#define EventWindowWillBecomeMain 1096
#define EventWindowWillBeginSheet 1097
#define EventWindowWillChangeOrderingMode 1098
#define EventWindowWillClose 1099
#define EventWindowWillDeminiaturize 1100
#define EventWindowWillEnterFullScreen 1101
#define EventWindowWillEnterVersionBrowser 1102
#define EventWindowWillExitFullScreen 1103
#define EventWindowWillExitVersionBrowser 1104
#define EventWindowWillFocus 1105
#define EventWindowWillMiniaturize 1106
#define EventWindowWillMove 1107
#define EventWindowWillOrderOffScreen 1108
#define EventWindowWillOrderOnScreen 1109
#define EventWindowWillResignMain 1110
#define EventWindowWillResize 1111
#define EventWindowWillUnfocus 1112
#define EventWindowWillUpdate 1113
#define EventWindowWillUpdateAlpha 1114
#define EventWindowWillUpdateCollectionBehavior 1115
#define EventWindowWillUpdateCollectionProperties 1116
#define EventWindowWillUpdateShadow 1117
#define EventWindowWillUpdateTitle 1118
#define EventWindowWillUpdateToolbar 1119
#define EventWindowWillUpdateVisibility 1120
#define EventWindowWillUseStandardFrame 1121
#define EventMenuWillOpen 1122
#define EventMenuDidOpen 1123
#define EventMenuDidClose 1124
#define EventMenuWillSendAction 1125
#define EventMenuDidSendAction 1126
#define EventMenuWillHighlightItem 1127
#define EventMenuDidHighlightItem 1128
#define EventMenuWillDisplayItem 1129
#define EventMenuDidDisplayItem 1130
#define EventMenuWillAddItem 1131
#define EventMenuDidAddItem 1132
#define EventMenuWillRemoveItem 1133
#define EventMenuDidRemoveItem 1134
#define EventMenuWillBeginTracking 1135
#define EventMenuDidBeginTracking 1136
#define EventMenuWillEndTracking 1137
#define EventMenuDidEndTracking 1138
#define EventMenuWillUpdate 1139
#define EventMenuDidUpdate 1140
#define EventMenuWillPopUp 1141
#define EventMenuDidPopUp 1142
#define EventMenuWillSendActionToItem 1143
#define EventMenuDidSendActionToItem 1144
#define EventWebViewDidStartProvisionalNavigation 1145
#define EventWebViewDidReceiveServerRedirectForProvisionalNavigation 1146
#define EventWebViewDidFinishNavigation 1147
#define EventWebViewDidCommitNavigation 1148
#define EventWindowFileDraggingEntered 1149
#define EventWindowFileDraggingPerformed 1150
#define EventWindowFileDraggingExited 1151
#define MAX_EVENTS 1149
#define MAX_EVENTS 1152
#endif
+22
View File
@@ -0,0 +1,22 @@
//go:build linux
package events
/*
#include "events_linux.h"
#include <stdlib.h>
#include <stdbool.h>
bool hasListener[MAX_EVENTS] = {false};
void registerListener(unsigned int event) {
hasListener[event] = true;
}
bool hasListeners(unsigned int event) {
//return hasListener[event];
return true;
}
*/
import "C"
+17
View File
@@ -0,0 +1,17 @@
//go:build linux
#ifndef _events_h
#define _events_h
extern void processApplicationEvent(unsigned int, void* data);
extern void processWindowEvent(unsigned int, unsigned int);
#define EventSystemThemeChanged 1024
#define EventWindowLoadChanged 1025
#define EventWindowDeleteEvent 1026
#define EventApplicationStartup 1027
#define MAX_EVENTS 1028
#endif
+30 -7
View File
@@ -61,7 +61,19 @@ $$EVENTTOJS}
`
var eventsH = `//go:build darwin
var darwinEventsH = `//go:build darwin
#ifndef _events_h
#define _events_h
extern void processApplicationEvent(unsigned int, void* data);
extern void processWindowEvent(unsigned int, unsigned int);
$$CHEADEREVENTS
#endif`
var linuxEventsH = `//go:build linux
#ifndef _events_h
#define _events_h
@@ -108,10 +120,11 @@ func main() {
linuxEventsDecl := bytes.NewBufferString("")
linuxEventsValues := bytes.NewBufferString("")
linuxCHeaderEvents := bytes.NewBufferString("")
macEventsDecl := bytes.NewBufferString("")
macEventsValues := bytes.NewBufferString("")
cHeaderEvents := bytes.NewBufferString("")
macCHeaderEvents := bytes.NewBufferString("")
windowDelegateEvents := bytes.NewBufferString("")
applicationDelegateEvents := bytes.NewBufferString("")
webviewDelegateEvents := bytes.NewBufferString("")
@@ -137,6 +150,7 @@ func main() {
var id int
// var maxLinuxEvents int
var maxMacEvents int
var maxLinuxEvents int
var line []byte
// Loop over each line in the file
for id, line = range bytes.Split(eventNames, []byte{'\n'}) {
@@ -179,7 +193,8 @@ func main() {
linuxJSEvents.WriteString("\t\t" + event + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
linuxTSEvents.WriteString("\t\t" + event + ": string,\n")
eventToJS.WriteString("\t" + strconv.Itoa(id) + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
//maxLinuxEvents = id
maxLinuxEvents = id
linuxCHeaderEvents.WriteString("#define Event" + eventTitle + " " + strconv.Itoa(id) + "\n")
case "mac":
eventType := "ApplicationEventType"
if strings.HasPrefix(event, "Window") {
@@ -192,7 +207,7 @@ func main() {
macEventsValues.WriteString("\t\t" + event + ": " + strconv.Itoa(id) + ",\n")
macJSEvents.WriteString("\t\t" + event + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
macTSEvents.WriteString("\t\t" + event + ": string,\n")
cHeaderEvents.WriteString("#define Event" + eventTitle + " " + strconv.Itoa(id) + "\n")
macCHeaderEvents.WriteString("#define Event" + eventTitle + " " + strconv.Itoa(id) + "\n")
eventToJS.WriteString("\t" + strconv.Itoa(id) + ": \"" + strings.TrimSpace(string(line)) + "\",\n")
maxMacEvents = id
if ignoreEvent {
@@ -258,7 +273,8 @@ func main() {
}
}
cHeaderEvents.WriteString("\n#define MAX_EVENTS " + strconv.Itoa(maxMacEvents+1) + "\n")
macCHeaderEvents.WriteString("\n#define MAX_EVENTS " + strconv.Itoa(maxMacEvents+1) + "\n")
linuxCHeaderEvents.WriteString("\n#define MAX_EVENTS " + strconv.Itoa(maxLinuxEvents+1) + "\n")
// Save the eventsGo template substituting the values and decls
templateToWrite := strings.ReplaceAll(eventsGo, "$$LINUXEVENTSDECL", linuxEventsDecl.String())
@@ -296,13 +312,20 @@ func main() {
panic(err)
}
// Save the eventsH template substituting the values and decls
templateToWrite = strings.ReplaceAll(eventsH, "$$CHEADEREVENTS", cHeaderEvents.String())
// Save the darwinEventsH template substituting the values and decls
templateToWrite = strings.ReplaceAll(darwinEventsH, "$$CHEADEREVENTS", macCHeaderEvents.String())
err = os.WriteFile("../../pkg/events/events_darwin.h", []byte(templateToWrite), 0644)
if err != nil {
panic(err)
}
// Save the linuxEventsH template substituting the values and decls
templateToWrite = strings.ReplaceAll(linuxEventsH, "$$CHEADEREVENTS", linuxCHeaderEvents.String())
err = os.WriteFile("../../pkg/events/events_linux.h", []byte(templateToWrite), 0644)
if err != nil {
panic(err)
}
// Load the window_delegate.m file
windowDelegate, err := os.ReadFile("../../pkg/application/webview_window_darwin.m")
if err != nil {