Compare commits

...

5 Commits

Author SHA1 Message Date
Travis McLane c808d513ac [linux] events related 2023-11-27 09:25:21 -06:00
Travis McLane 08faf0d1fa [linux] process window close events
- this triggers the event properly but does not seem
  to actually close the window although it will be deleted
  from the Application itself.  What is supposed to actually
  close the window?
2023-11-27 09:25:21 -06:00
Travis McLane f1739138c3 [linux] generate events.common.ApplicationStarted 2023-11-27 09:25:21 -06:00
Travis McLane 84023d543a ensure setupCommonEvents is called 2023-11-27 09:25:21 -06:00
Travis McLane 69e492beb1 [events] move 'setupCommonEvents' to application
the platform specific parts stay behind
2023-11-27 09:25:21 -06:00
9 changed files with 689 additions and 679 deletions
+13
View File
@@ -427,6 +427,7 @@ func (a *App) NewSystemTray() *SystemTray {
}
func (a *App) Run() error {
a.setupCommonEvents()
// Setup panic handler
defer processPanicHandlerRecover()
@@ -791,6 +792,18 @@ func (a *App) handleWindowKeyEvent(event *windowKeyEvent) {
window.HandleKeyEvent(event.acceleratorString)
}
func (a *App) setupCommonEvents() {
// commonApplicationEventMap is defined in events_common_*.go (platform specific)
for sourceEvent, targetEvent := range commonApplicationEventMap {
sourceEvent := sourceEvent
targetEvent := targetEvent
a.On(sourceEvent, func(event *Event) {
event.Id = uint(targetEvent)
applicationEvents <- event
})
}
}
func (a *App) AssetServerHandler() func(rw http.ResponseWriter, req *http.Request) {
return a.assets.ServeHTTP
}
-8
View File
@@ -3,7 +3,6 @@
package application
import (
"fmt"
"log"
"os"
"strings"
@@ -104,13 +103,6 @@ func (m *linuxApp) setApplicationMenu(menu *Menu) {
}
func (m *linuxApp) run() error {
// Add a hook to the ApplicationDidFinishLaunching event
// FIXME: add Wails specific events - i.e. Shouldn't platform specific ones be translated to Wails events?
m.parent.On(events.Mac.ApplicationDidFinishLaunching, func(evt *Event) {
// Do we need to do anything now?
fmt.Println("events.Mac.ApplicationDidFinishLaunching received!")
})
m.monitorThemeChanges()
return appRun(m.application)
}
@@ -8,14 +8,3 @@ var commonApplicationEventMap = map[events.ApplicationEventType]events.Applicati
events.Mac.ApplicationDidFinishLaunching: events.Common.ApplicationStarted,
events.Mac.ApplicationDidChangeTheme: events.Common.ThemeChanged,
}
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
View File
@@ -0,0 +1,10 @@
//go:build linux
package application
import "github.com/wailsapp/wails/v3/pkg/events"
var commonApplicationEventMap = map[events.ApplicationEventType]events.ApplicationEventType{
events.Linux.ApplicationStarted: events.Common.ApplicationStarted,
events.Linux.SystemThemeChanged: events.Common.ThemeChanged,
}
@@ -8,14 +8,3 @@ var commonApplicationEventMap = map[events.ApplicationEventType]events.Applicati
events.Windows.SystemThemeChanged: events.Common.ThemeChanged,
events.Windows.ApplicationStarted: events.Common.ApplicationStarted,
}
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
})
}
}
+23 -19
View File
@@ -69,9 +69,11 @@ extern void onDragNDrop(
guint info,
guint time,
gpointer data);
extern gboolean windowDeleteHandler(GtkWidget *widget, GdkEvent *event, gpointer user_data);
extern gboolean onKeyPressEvent (GtkWidget *widget, GdkEventKey *event, gpointer user_data);
extern void onProcessRequest(void *request, gpointer user_data);
extern void sendMessageToBackend(WebKitUserContentManager *contentManager, WebKitJavascriptResult *result, void *data);
void webviewLoadChanged(WebKitWebView *web_view, WebKitLoadEvent load_event, gpointer data);
// exported below (end)
static void signal_connect(void *widget, char *event, void *cb, void* data) {
@@ -179,7 +181,7 @@ func dispatchOnMainThreadCallback(callbackID C.uint) {
//export activateLinux
func activateLinux(data pointer) {
// NOOP: Callback for now
applicationEvents <- newApplicationEvent(events.Linux.ApplicationStarted)
}
func isOnMainThread() bool {
@@ -899,36 +901,38 @@ func windowSetURL(webview pointer, uri string) {
C.free(unsafe.Pointer(target))
}
//export emit
func emit(we *C.WindowEvent) {
window := globalApplication.getWindowForID(uint(we.id))
if window != nil {
windowEvents <- &windowEvent{
WindowID: window.ID(),
EventID: uint(events.WindowEventType(we.event)),
}
//export windowDeleteHandler
func windowDeleteHandler(window *C.GtkWidget, event *C.GdkEvent, data unsafe.Pointer) C.gboolean {
id := uint(*((*C.uint)(data)))
windowEvents <- &windowEvent{
WindowID: id,
EventID: uint(events.WindowEventType(events.Common.WindowClosing)),
}
// stop propagation
return C.gboolean(1)
}
//export webviewLoadChanged
func webviewLoadChanged(web_view *C.WebKitWebView, load_event C.WebKitLoadEvent, data unsafe.Pointer) {
if load_event == C.WEBKIT_LOAD_FINISHED {
//applicationEvents <- newApplicationEvent(events.Linux.ApplicationStarted)
}
}
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),
}
C.signal_connect(unsafe.Pointer(window), event, C.emit, unsafe.Pointer(&wEvent))
C.signal_connect(unsafe.Pointer(window), event, C.windowDeleteHandler, unsafe.Pointer(&windowId))
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))
*/
event = C.CString("load-changed")
defer C.free(unsafe.Pointer(event))
C.signal_connect(unsafe.Pointer(webview), event, C.webviewLoadChanged, unsafe.Pointer(&windowId))
id := C.uint(windowId)
event = C.CString("button-press-event")
C.signal_connect(unsafe.Pointer(webview), event, C.onButtonEvent, unsafe.Pointer(&id))
+515 -505
View File
File diff suppressed because it is too large Load Diff
+125 -125
View File
@@ -6,132 +6,132 @@
extern void processApplicationEvent(unsigned int, void* data);
extern void processWindowEvent(unsigned int, unsigned int);
#define EventApplicationDidBecomeActive 1024
#define EventApplicationDidChangeBackingProperties 1025
#define EventApplicationDidChangeEffectiveAppearance 1026
#define EventApplicationDidChangeIcon 1027
#define EventApplicationDidChangeOcclusionState 1028
#define EventApplicationDidChangeScreenParameters 1029
#define EventApplicationDidChangeStatusBarFrame 1030
#define EventApplicationDidChangeStatusBarOrientation 1031
#define EventApplicationDidFinishLaunching 1032
#define EventApplicationDidHide 1033
#define EventApplicationDidResignActiveNotification 1034
#define EventApplicationDidUnhide 1035
#define EventApplicationDidUpdate 1036
#define EventApplicationWillBecomeActive 1037
#define EventApplicationWillFinishLaunching 1038
#define EventApplicationWillHide 1039
#define EventApplicationWillResignActive 1040
#define EventApplicationWillTerminate 1041
#define EventApplicationWillUnhide 1042
#define EventApplicationWillUpdate 1043
#define EventApplicationDidChangeTheme 1044
#define EventApplicationShouldHandleReopen 1045
#define EventWindowDidBecomeKey 1046
#define EventWindowDidBecomeMain 1047
#define EventWindowDidBeginSheet 1048
#define EventWindowDidChangeAlpha 1049
#define EventWindowDidChangeBackingLocation 1050
#define EventWindowDidChangeBackingProperties 1051
#define EventWindowDidChangeCollectionBehavior 1052
#define EventWindowDidChangeEffectiveAppearance 1053
#define EventWindowDidChangeOcclusionState 1054
#define EventWindowDidChangeOrderingMode 1055
#define EventWindowDidChangeScreen 1056
#define EventWindowDidChangeScreenParameters 1057
#define EventWindowDidChangeScreenProfile 1058
#define EventWindowDidChangeScreenSpace 1059
#define EventWindowDidChangeScreenSpaceProperties 1060
#define EventWindowDidChangeSharingType 1061
#define EventWindowDidChangeSpace 1062
#define EventWindowDidChangeSpaceOrderingMode 1063
#define EventWindowDidChangeTitle 1064
#define EventWindowDidChangeToolbar 1065
#define EventWindowDidChangeVisibility 1066
#define EventWindowDidDeminiaturize 1067
#define EventWindowDidEndSheet 1068
#define EventWindowDidEnterFullScreen 1069
#define EventWindowDidEnterVersionBrowser 1070
#define EventWindowDidExitFullScreen 1071
#define EventWindowDidExitVersionBrowser 1072
#define EventWindowDidExpose 1073
#define EventWindowDidFocus 1074
#define EventWindowDidMiniaturize 1075
#define EventWindowDidMove 1076
#define EventWindowDidOrderOffScreen 1077
#define EventWindowDidOrderOnScreen 1078
#define EventWindowDidResignKey 1079
#define EventWindowDidResignMain 1080
#define EventWindowDidResize 1081
#define EventWindowDidUpdate 1082
#define EventWindowDidUpdateAlpha 1083
#define EventWindowDidUpdateCollectionBehavior 1084
#define EventWindowDidUpdateCollectionProperties 1085
#define EventWindowDidUpdateShadow 1086
#define EventWindowDidUpdateTitle 1087
#define EventWindowDidUpdateToolbar 1088
#define EventWindowDidUpdateVisibility 1089
#define EventWindowShouldClose 1090
#define EventWindowWillBecomeKey 1091
#define EventWindowWillBecomeMain 1092
#define EventWindowWillBeginSheet 1093
#define EventWindowWillChangeOrderingMode 1094
#define EventWindowWillClose 1095
#define EventWindowWillDeminiaturize 1096
#define EventWindowWillEnterFullScreen 1097
#define EventWindowWillEnterVersionBrowser 1098
#define EventWindowWillExitFullScreen 1099
#define EventWindowWillExitVersionBrowser 1100
#define EventWindowWillFocus 1101
#define EventWindowWillMiniaturize 1102
#define EventWindowWillMove 1103
#define EventWindowWillOrderOffScreen 1104
#define EventWindowWillOrderOnScreen 1105
#define EventWindowWillResignMain 1106
#define EventWindowWillResize 1107
#define EventWindowWillUnfocus 1108
#define EventWindowWillUpdate 1109
#define EventWindowWillUpdateAlpha 1110
#define EventWindowWillUpdateCollectionBehavior 1111
#define EventWindowWillUpdateCollectionProperties 1112
#define EventWindowWillUpdateShadow 1113
#define EventWindowWillUpdateTitle 1114
#define EventWindowWillUpdateToolbar 1115
#define EventWindowWillUpdateVisibility 1116
#define EventWindowWillUseStandardFrame 1117
#define EventMenuWillOpen 1118
#define EventMenuDidOpen 1119
#define EventMenuDidClose 1120
#define EventMenuWillSendAction 1121
#define EventMenuDidSendAction 1122
#define EventMenuWillHighlightItem 1123
#define EventMenuDidHighlightItem 1124
#define EventMenuWillDisplayItem 1125
#define EventMenuDidDisplayItem 1126
#define EventMenuWillAddItem 1127
#define EventMenuDidAddItem 1128
#define EventMenuWillRemoveItem 1129
#define EventMenuDidRemoveItem 1130
#define EventMenuWillBeginTracking 1131
#define EventMenuDidBeginTracking 1132
#define EventMenuWillEndTracking 1133
#define EventMenuDidEndTracking 1134
#define EventMenuWillUpdate 1135
#define EventMenuDidUpdate 1136
#define EventMenuWillPopUp 1137
#define EventMenuDidPopUp 1138
#define EventMenuWillSendActionToItem 1139
#define EventMenuDidSendActionToItem 1140
#define EventWebViewDidStartProvisionalNavigation 1141
#define EventWebViewDidReceiveServerRedirectForProvisionalNavigation 1142
#define EventWebViewDidFinishNavigation 1143
#define EventWebViewDidCommitNavigation 1144
#define EventWindowFileDraggingEntered 1145
#define EventWindowFileDraggingPerformed 1146
#define EventWindowFileDraggingExited 1147
#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 1148
#define MAX_EVENTS 1152
#endif
+3
View File
@@ -1,4 +1,7 @@
linux:ActivateFocus
linux:ApplicationStarted
linux:SystemThemeChanged
linux:WindowClosing
mac:ApplicationDidBecomeActive
mac:ApplicationDidChangeBackingProperties
mac:ApplicationDidChangeEffectiveAppearance