diff --git a/v3/examples/window/main.go b/v3/examples/window/main.go index ff911b47..fcc0b950 100644 --- a/v3/examples/window/main.go +++ b/v3/examples/window/main.go @@ -294,6 +294,14 @@ func main() { app.InfoDialog().SetTitle(fmt.Sprintf("Screen %s", screen.ID)).SetMessage(msg).Show() }) }) + + printMenu := menu.AddSubmenu("Print") + printMenu.Add("Print").OnClick(func(ctx *application.Context) { + currentWindow(func(w *application.WebviewWindow) { + _ = w.Print() + }) + }) + app.NewWebviewWindowWithOptions(application.WebviewWindowOptions{ Mac: application.MacWindow{ DisableShadow: true, diff --git a/v3/pkg/application/webview_window.go b/v3/pkg/application/webview_window.go index ef7d536a..27f31f90 100644 --- a/v3/pkg/application/webview_window.go +++ b/v3/pkg/application/webview_window.go @@ -65,6 +65,7 @@ type ( nativeWindowHandle() uintptr startDrag() error startResize(border string) error + print() error } ) @@ -889,3 +890,10 @@ func (w *WebviewWindow) startDrag() error { } return invokeSyncWithError(w.impl.startDrag) } + +func (w *WebviewWindow) Print() error { + if w.impl == nil { + return nil + } + return invokeSyncWithError(w.impl.print) +} diff --git a/v3/pkg/application/webview_window_windows.go b/v3/pkg/application/webview_window_windows.go index 1b30361e..c658487d 100644 --- a/v3/pkg/application/webview_window_windows.go +++ b/v3/pkg/application/webview_window_windows.go @@ -62,6 +62,11 @@ type windowsWebviewWindow struct { resizeBorderHeight int32 } +func (w *windowsWebviewWindow) print() error { + w.execJS("window.print();") + return nil +} + func (w *windowsWebviewWindow) startResize(border string) error { if !w32.ReleaseCapture() { return fmt.Errorf("unable to release mouse capture")