5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-04 04:30:55 +08:00

[linux] Add webkit version detection + capabilities

This commit is contained in:
Lea Anthony 2023-11-12 08:21:31 +11:00
parent 1f16655769
commit 0b48c3456b
No known key found for this signature in database
GPG Key ID: 33DAF7BB90A58405
6 changed files with 56 additions and 8 deletions

View File

@ -6,10 +6,6 @@ type Capabilities struct {
HasNativeDrag bool
}
func NewCapabilities(version string) Capabilities {
return newCapabilities(version)
}
func (c Capabilities) AsBytes() []byte {
// JSON encode
result, err := json.Marshal(c)

View File

@ -2,8 +2,12 @@
package capabilities
func newCapabilities(_ string) Capabilities {
import "github.com/wailsapp/wails/v3/internal/operatingsystem"
func NewCapabilities() Capabilities {
c := Capabilities{}
c.HasNativeDrag = false
webkitVersion := operatingsystem.GetWebkitVersion()
c.HasNativeDrag = webkitVersion.IsAtLeast(2, 36, 0)
return c
}

View File

@ -14,7 +14,7 @@ func (v version) IsAtLeast(input string) bool {
return result >= 0
}
func newCapabilities(webview2version string) Capabilities {
func NewCapabilities(version string) Capabilities {
webview2 := version(webview2version)
c := Capabilities{}
c.HasNativeDrag = webview2.IsAtLeast("113.0.0.0")

View File

@ -0,0 +1,40 @@
package operatingsystem
/*
#cgo linux pkg-config: gtk+-3.0 webkit2gtk-4.0 javascriptcoregtk-4.1
#include <webkit2/webkit2.h>
*/
import "C"
import "fmt"
type WebkitVersion struct {
Major uint
Minor uint
Micro uint
}
func GetWebkitVersion() WebkitVersion {
var major, minor, micro C.uint
major = C.webkit_get_major_version()
minor = C.webkit_get_minor_version()
micro = C.webkit_get_micro_version()
return WebkitVersion{
Major: uint(major),
Minor: uint(minor),
Micro: uint(micro),
}
}
func (v WebkitVersion) String() string {
return fmt.Sprintf("v%d.%d.%d", v.Major, v.Minor, v.Micro)
}
func (v WebkitVersion) IsAtLeast(major int, minor int, micro int) bool {
if v.Major != uint(major) {
return v.Major > uint(major)
}
if v.Minor != uint(minor) {
return v.Minor > uint(minor)
}
return v.Micro >= uint(micro)
}

View File

@ -203,5 +203,9 @@ func (a *App) logPlatformInfo() {
return
}
a.info("Platform Info:", info.AsLogSlice()...)
wkVersion := operatingsystem.GetWebkitVersion()
platformInfo := info.AsLogSlice()
platformInfo = append(platformInfo, "Webkit2Gtk", wkVersion)
a.info("Platform Info:", platformInfo...)
}

View File

@ -4,6 +4,7 @@ package application
import (
"fmt"
"github.com/wailsapp/wails/v3/internal/capabilities"
"net/url"
"github.com/wailsapp/wails/v3/pkg/events"
@ -355,6 +356,9 @@ func (w *linuxWebviewWindow) run() {
w.on(eventId)
}
// Register the capabilities
globalApplication.capabilities = capabilities.NewCapabilities()
app := getNativeApplication()
menu := app.getApplicationMenu()