5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-04 22:40:02 +08:00
wails/v3/pkg/application/messageprocessor_contextmenu.go
Lea Anthony 3d93c83920 Added menu cloning.
Introduced the ability to clone a menu, along with its submenus, in Linux-based web applications to create a full deep copy. This fixes reusing the application menu for window menus.
2024-03-06 11:42:19 -06:00

50 lines
973 B
Go

package application
import (
"net/http"
)
type ContextMenuData struct {
Id string `json:"id"`
X int `json:"x"`
Y int `json:"y"`
Data any `json:"data"`
}
func (d ContextMenuData) clone() *ContextMenuData {
return &ContextMenuData{
Id: d.Id,
X: d.X,
Y: d.Y,
Data: d.Data,
}
}
const (
ContextMenuOpen = 0
)
var contextmenuMethodNames = map[int]string{
ContextMenuOpen: "Open",
}
func (m *MessageProcessor) processContextMenuMethod(method int, rw http.ResponseWriter, _ *http.Request, window Window, params QueryParams) {
switch method {
case ContextMenuOpen:
var data ContextMenuData
err := params.ToStruct(&data)
if err != nil {
m.httpError(rw, "error parsing contextmenu message: %s", err.Error())
return
}
window.OpenContextMenu(&data)
m.ok(rw)
default:
m.httpError(rw, "Unknown contextmenu method: %d", method)
}
m.Info("Runtime Call:", "method", "ContextMenu."+contextmenuMethodNames[method])
}