diff --git a/v3/pkg/application/dialogs.go b/v3/pkg/application/dialogs.go index 0b50a40b1..66fe0cd50 100644 --- a/v3/pkg/application/dialogs.go +++ b/v3/pkg/application/dialogs.go @@ -179,7 +179,7 @@ type OpenFileDialogOptions struct { TreatsFilePackagesAsDirectories bool AllowsOtherFileTypes bool Filters []FileFilter - Window Window + Window *WebviewWindow Title string Message string @@ -205,7 +205,7 @@ type OpenFileDialogStruct struct { message string buttonText string directory string - window Window + window *WebviewWindow impl openFileDialogImpl } @@ -246,7 +246,7 @@ func (d *OpenFileDialogStruct) TreatsFilePackagesAsDirectories(treatsFilePackage } func (d *OpenFileDialogStruct) AttachToWindow(window Window) *OpenFileDialogStruct { - d.window = window + d.window = window.(*WebviewWindow) return d } diff --git a/v3/pkg/application/dialogs_darwin.go b/v3/pkg/application/dialogs_darwin.go index c5a398090..133d4d3bf 100644 --- a/v3/pkg/application/dialogs_darwin.go +++ b/v3/pkg/application/dialogs_darwin.go @@ -507,7 +507,7 @@ func (m *macosSaveFileDialog) show() (string, error) { nsWindow := unsafe.Pointer(nil) if m.dialog.window != nil { // get NSWindow from window - nsWindow = (m.dialog.window).(*WebviewWindow).impl.(*macosWebviewWindow).nsWindow + nsWindow, _ = m.dialog.window.NativeWindowHandle() } C.showSaveFileDialog(C.uint(m.dialog.id), C.bool(m.dialog.canCreateDirectories), diff --git a/v3/pkg/application/dialogs_linux.go b/v3/pkg/application/dialogs_linux.go index f1147830d..b64734549 100644 --- a/v3/pkg/application/dialogs_linux.go +++ b/v3/pkg/application/dialogs_linux.go @@ -2,16 +2,16 @@ package application func (m *linuxApp) showAboutDialog(title string, message string, icon []byte) { window := globalApplication.getWindowForID(m.getCurrentWindowID()) - var parent pointer + var parent uintptr if window != nil { - parent = (window.(*WebviewWindow).impl).(*linuxWebviewWindow).window + parent, _ = window.(*WebviewWindow).NativeWindowHandle() } about := newMessageDialog(InfoDialogType) about.SetTitle(title). SetMessage(message). SetIcon(icon) runQuestionDialog( - parent, + pointer(parent), about, ) } @@ -23,12 +23,12 @@ type linuxDialog struct { func (m *linuxDialog) show() { windowId := getNativeApplication().getCurrentWindowID() window := globalApplication.getWindowForID(windowId) - var parent pointer + var parent uintptr if window != nil { - parent = (window.(*WebviewWindow).impl).(*linuxWebviewWindow).window + parent, _ = window.(*WebviewWindow).NativeWindowHandle() } - response := runQuestionDialog(parent, m.dialog) + response := runQuestionDialog(pointer(parent), m.dialog) if response >= 0 && response < len(m.dialog.Buttons) { button := m.dialog.Buttons[response] if button.Callback != nil { diff --git a/v3/pkg/application/dialogs_windows.go b/v3/pkg/application/dialogs_windows.go index b8fbd0e21..93baf6a76 100644 --- a/v3/pkg/application/dialogs_windows.go +++ b/v3/pkg/application/dialogs_windows.go @@ -3,11 +3,12 @@ package application import ( + "path/filepath" + "strings" + "github.com/wailsapp/wails/v3/internal/go-common-file-dialog/cfd" "github.com/wailsapp/wails/v3/pkg/w32" "golang.org/x/sys/windows" - "path/filepath" - "strings" ) func (m *windowsApp) showAboutDialog(title string, message string, icon []byte) { diff --git a/v3/pkg/application/linux_cgo.go b/v3/pkg/application/linux_cgo.go index a7c2d19c3..97b66fdcf 100644 --- a/v3/pkg/application/linux_cgo.go +++ b/v3/pkg/application/linux_cgo.go @@ -1044,7 +1044,7 @@ func runOpenFileDialog(dialog *OpenFileDialogStruct) ([]string, error) { window := nilPointer if dialog.window != nil { - window = (dialog.window.(*WebviewWindow).impl).(*linuxWebviewWindow).window + window = (dialog.window.impl).(*linuxWebviewWindow).window } buttonText := dialog.buttonText diff --git a/v3/pkg/application/messageprocessor_dialog.go b/v3/pkg/application/messageprocessor_dialog.go index 38ab484e5..12d4495e5 100644 --- a/v3/pkg/application/messageprocessor_dialog.go +++ b/v3/pkg/application/messageprocessor_dialog.go @@ -102,7 +102,7 @@ func (m *MessageProcessor) processDialogMethod(method int, rw http.ResponseWrite } var detached = args.Bool("Detached") if detached == nil || !*detached { - options.Window = window + options.Window = window.(*WebviewWindow) } dialog := OpenFileDialogWithOptions(&options)