mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-04 01:00:21 +08:00
Avoid adding duplicate menuitems (windows)
Previously, when calling `.SetHidden(false)` on a menu item that was not hidden, a duplicate menu item was created.
This commit is contained in:
parent
5fb1a14c36
commit
35cc7fd569
@ -46,7 +46,7 @@ func main() {
|
|||||||
|
|
||||||
// Hidden menu item that can be unhidden
|
// Hidden menu item that can be unhidden
|
||||||
hidden := myMenu.Add("I was hidden").SetHidden(true)
|
hidden := myMenu.Add("I was hidden").SetHidden(true)
|
||||||
myMenu.Add("Toggle hidden menu").OnClick(func(ctx *application.Context) {
|
myMenu.Add("Toggle the hidden menu").OnClick(func(ctx *application.Context) {
|
||||||
hidden.SetHidden(!hidden.Hidden())
|
hidden.SetHidden(!hidden.Hidden())
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -2,11 +2,12 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
_ "embed"
|
_ "embed"
|
||||||
|
"log"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
"github.com/wailsapp/wails/v3/pkg/application"
|
"github.com/wailsapp/wails/v3/pkg/application"
|
||||||
"github.com/wailsapp/wails/v3/pkg/events"
|
"github.com/wailsapp/wails/v3/pkg/events"
|
||||||
"github.com/wailsapp/wails/v3/pkg/icons"
|
"github.com/wailsapp/wails/v3/pkg/icons"
|
||||||
"log"
|
|
||||||
"runtime"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var windowShowing bool
|
var windowShowing bool
|
||||||
@ -52,6 +53,12 @@ func main() {
|
|||||||
|
|
||||||
systemTray := app.NewSystemTray()
|
systemTray := app.NewSystemTray()
|
||||||
menu := app.NewMenu()
|
menu := app.NewMenu()
|
||||||
|
// Hidden menu item that can be unhidden
|
||||||
|
hidden := menu.Add("I was hidden").SetHidden(true)
|
||||||
|
menu.Add("Toggle the hidden menu").OnClick(func(ctx *application.Context) {
|
||||||
|
hidden.SetHidden(!hidden.Hidden())
|
||||||
|
menu.Update()
|
||||||
|
})
|
||||||
menu.Add("Quit").OnClick(func(data *application.Context) {
|
menu.Add("Quit").OnClick(func(data *application.Context) {
|
||||||
app.Quit()
|
app.Quit()
|
||||||
})
|
})
|
||||||
|
@ -24,8 +24,8 @@ type windowsMenuItem struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *windowsMenuItem) setHidden(hidden bool) {
|
func (m *windowsMenuItem) setHidden(hidden bool) {
|
||||||
m.hidden = hidden
|
if hidden && !m.hidden {
|
||||||
if m.hidden {
|
m.hidden = true
|
||||||
// iterate the parent items and find the menu item before us
|
// iterate the parent items and find the menu item before us
|
||||||
for i, item := range m.parent.items {
|
for i, item := range m.parent.items {
|
||||||
if item == m.menuItem {
|
if item == m.menuItem {
|
||||||
@ -41,7 +41,8 @@ func (m *windowsMenuItem) setHidden(hidden bool) {
|
|||||||
// m.pos = w32.GetMenuItemPosition(m.hMenu, uint32(m.id))
|
// m.pos = w32.GetMenuItemPosition(m.hMenu, uint32(m.id))
|
||||||
// Remove from parent menu
|
// Remove from parent menu
|
||||||
w32.RemoveMenu(m.hMenu, m.id, w32.MF_BYCOMMAND)
|
w32.RemoveMenu(m.hMenu, m.id, w32.MF_BYCOMMAND)
|
||||||
} else {
|
} else if !hidden && m.hidden {
|
||||||
|
m.hidden = false
|
||||||
// Add to parent menu
|
// Add to parent menu
|
||||||
// Get the position of the item before us
|
// Get the position of the item before us
|
||||||
var pos int
|
var pos int
|
||||||
|
Loading…
Reference in New Issue
Block a user