mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-14 14:45:49 +01:00
Add Zoom In/Out & Actual size roles
This commit is contained in:
parent
88f6a3d1b9
commit
da5fa806d7
5 changed files with 116 additions and 9 deletions
|
|
@ -158,12 +158,12 @@ func newRole(role Role) *MenuItem {
|
|||
return newToggleFullscreenMenuItem()
|
||||
case ToggleDevTools:
|
||||
return newToggleDevToolsMenuItem()
|
||||
//case ResetZoom:
|
||||
// return newResetZoomMenuItem()
|
||||
//case ZoomIn:
|
||||
// return newZoomInMenuItem()
|
||||
//case ZoomOut:
|
||||
// return newZoomOutMenuItem()
|
||||
case ResetZoom:
|
||||
return newResetZoomMenuItem()
|
||||
case ZoomIn:
|
||||
return newZoomInMenuItem()
|
||||
case ZoomOut:
|
||||
return newZoomOutMenuItem()
|
||||
|
||||
default:
|
||||
println("No support for role:", role)
|
||||
|
|
|
|||
|
|
@ -601,3 +601,37 @@ func newToggleDevToolsMenuItem() *MenuItem {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
func newResetZoomMenuItem() *MenuItem {
|
||||
// reset zoom menu item
|
||||
return newMenuItem("Actual Size").
|
||||
SetAccelerator("CmdOrCtrl+0").
|
||||
OnClick(func(ctx *Context) {
|
||||
currentWindow := globalApplication.GetCurrentWindow()
|
||||
if currentWindow != nil {
|
||||
currentWindow.ResetZoom()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func newZoomInMenuItem() *MenuItem {
|
||||
return newMenuItem("Zoom In").
|
||||
SetAccelerator("CmdOrCtrl+plus").
|
||||
OnClick(func(ctx *Context) {
|
||||
currentWindow := globalApplication.GetCurrentWindow()
|
||||
if currentWindow != nil {
|
||||
currentWindow.ZoomIn()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func newZoomOutMenuItem() *MenuItem {
|
||||
return newMenuItem("Zoom Out").
|
||||
SetAccelerator("CmdOrCtrl+-").
|
||||
OnClick(func(ctx *Context) {
|
||||
currentWindow := globalApplication.GetCurrentWindow()
|
||||
if currentWindow != nil {
|
||||
currentWindow.ZoomOut()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,9 +86,9 @@ func newViewMenu() *MenuItem {
|
|||
viewMenu.AddRole(ForceReload)
|
||||
viewMenu.AddRole(ToggleDevTools)
|
||||
viewMenu.AddSeparator()
|
||||
//viewMenu.AddRole(ResetZoom)
|
||||
//viewMenu.AddRole(ZoomIn)
|
||||
//viewMenu.AddRole(ZoomOut)
|
||||
viewMenu.AddRole(ResetZoom)
|
||||
viewMenu.AddRole(ZoomIn)
|
||||
viewMenu.AddRole(ZoomOut)
|
||||
viewMenu.AddSeparator()
|
||||
viewMenu.AddRole(ToggleFullscreen)
|
||||
subMenu := newSubMenuItem("View")
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ type windowImpl interface {
|
|||
forceReload()
|
||||
toggleFullscreen()
|
||||
toggleDevTools()
|
||||
resetZoom()
|
||||
zoomIn()
|
||||
zoomOut()
|
||||
}
|
||||
|
||||
type Window struct {
|
||||
|
|
@ -323,3 +326,24 @@ func (w *Window) ToggleDevTools() {
|
|||
}
|
||||
w.impl.toggleDevTools()
|
||||
}
|
||||
|
||||
func (w *Window) ResetZoom() {
|
||||
if w.impl == nil {
|
||||
return
|
||||
}
|
||||
w.impl.resetZoom()
|
||||
}
|
||||
|
||||
func (w *Window) ZoomIn() {
|
||||
if w.impl == nil {
|
||||
return
|
||||
}
|
||||
w.impl.zoomIn()
|
||||
}
|
||||
|
||||
func (w *Window) ZoomOut() {
|
||||
if w.impl == nil {
|
||||
return
|
||||
}
|
||||
w.impl.zoomOut()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -184,6 +184,43 @@ void windowEnableDevTools(void* nsWindow) {
|
|||
});
|
||||
}
|
||||
|
||||
// windowResetZoom
|
||||
void windowResetZoom(void* nsWindow) {
|
||||
// Reset zoom on main thread
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
// Get window delegate
|
||||
WindowDelegate* delegate = (WindowDelegate*)[(NSWindow*)nsWindow delegate];
|
||||
// Reset zoom
|
||||
[delegate.webView setMagnification:1.0];
|
||||
});
|
||||
}
|
||||
|
||||
// windowZoomIn
|
||||
void windowZoomIn(void* nsWindow) {
|
||||
// Zoom in on main thread
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
// Get window delegate
|
||||
WindowDelegate* delegate = (WindowDelegate*)[(NSWindow*)nsWindow delegate];
|
||||
// Zoom in
|
||||
[delegate.webView setMagnification:delegate.webView.magnification + 0.05];
|
||||
});
|
||||
}
|
||||
|
||||
// windowZoomOut
|
||||
void windowZoomOut(void* nsWindow) {
|
||||
// Zoom out on main thread
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
// Get window delegate
|
||||
WindowDelegate* delegate = (WindowDelegate*)[(NSWindow*)nsWindow delegate];
|
||||
// Zoom out
|
||||
if( delegate.webView.magnification > 1.05 ) {
|
||||
[delegate.webView setMagnification:delegate.webView.magnification - 0.05];
|
||||
} else {
|
||||
[delegate.webView setMagnification:1.0];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Execute JS in NSWindow
|
||||
void windowExecJS(void* nsWindow, char* js) {
|
||||
// Execute JS on main thread
|
||||
|
|
@ -489,6 +526,18 @@ type macosWindow struct {
|
|||
// devtools
|
||||
}
|
||||
|
||||
func (w *macosWindow) zoomIn() {
|
||||
C.windowZoomIn(w.nsWindow)
|
||||
}
|
||||
|
||||
func (w *macosWindow) zoomOut() {
|
||||
C.windowZoomOut(w.nsWindow)
|
||||
}
|
||||
|
||||
func (w *macosWindow) resetZoom() {
|
||||
C.windowResetZoom(w.nsWindow)
|
||||
}
|
||||
|
||||
func (w *macosWindow) toggleDevTools() {
|
||||
showDevTools(w.nsWindow)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue