mirror of
https://github.com/wavetermdev/wails.git
synced 2026-04-22 15:26:15 -07:00
Update windowSetupSignalHandlers & linux events
This commit is contained in:
committed by
Travis McLane
parent
4467a1ffa2
commit
bfa53dfd6c
@@ -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
|
||||
{
|
||||
|
||||
@@ -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),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,7 @@
|
||||
linux:SystemThemeChanged
|
||||
linux:WindowLoadChanged
|
||||
linux:WindowDeleteEvent
|
||||
linux:ApplicationStartup
|
||||
mac:ApplicationDidBecomeActive
|
||||
mac:ApplicationDidChangeBackingProperties
|
||||
mac:ApplicationDidChangeEffectiveAppearance
|
||||
|
||||
+125
-125
@@ -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
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user