mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-14 14:45:49 +01:00
Better Checked implementation
This commit is contained in:
parent
ee50170374
commit
1830c64c79
4 changed files with 25 additions and 0 deletions
|
|
@ -56,6 +56,7 @@ void AppendSubmenu(void* parent, void* child);
|
|||
void AppendRole(void *inctx, void *inMenu, int role);
|
||||
void SetAsApplicationMenu(void *inctx, void *inMenu);
|
||||
void UpdateApplicationMenu(void *inctx);
|
||||
void SetMenuItemChecked(void* nsMenuItem, int checked);
|
||||
|
||||
/* Tray Menu */
|
||||
void* NewNSStatusItem(const char* label);
|
||||
|
|
|
|||
|
|
@ -165,6 +165,10 @@ void ToggleMaximise(void* inctx) {
|
|||
);
|
||||
}
|
||||
|
||||
void SetMenuItemChecked(void* nsMenuItem, int checked) {
|
||||
[(NSMenuItem*)nsMenuItem setState:(checked == 0 ? NSOffState : NSOnState)];
|
||||
}
|
||||
|
||||
const char* GetSize(void *inctx) {
|
||||
WailsContext *ctx = (__bridge WailsContext*) inctx;
|
||||
NSRect frame = [ctx.mainWindow frame];
|
||||
|
|
|
|||
|
|
@ -67,6 +67,10 @@ type MenuItem struct {
|
|||
radioGroupMembers []*MenuItem
|
||||
}
|
||||
|
||||
func (m *MenuItem) SetChecked(value bool) {
|
||||
C.SetMenuItemChecked(m.nsmenuitem, bool2Cint(value))
|
||||
}
|
||||
|
||||
func (m *NSMenu) AddMenuItem(menuItem *menu.MenuItem) *MenuItem {
|
||||
c := NewCalloc()
|
||||
defer c.Free()
|
||||
|
|
@ -83,6 +87,7 @@ func (m *NSMenu) AddMenuItem(menuItem *menu.MenuItem) *MenuItem {
|
|||
|
||||
result.id = createMenuItemID(result)
|
||||
result.nsmenuitem = C.AppendMenuItem(m.context, m.nsmenu, c.String(menuItem.Label), key, modifier, bool2Cint(menuItem.Disabled), bool2Cint(menuItem.Checked), C.int(result.id))
|
||||
menuItem.Impl = result
|
||||
return result
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@ import (
|
|||
"github.com/wailsapp/wails/v2/pkg/menu/keys"
|
||||
)
|
||||
|
||||
type MenuItemImpl interface {
|
||||
SetChecked(bool)
|
||||
}
|
||||
|
||||
// MenuItem represents a menuitem contained in a menu
|
||||
type MenuItem struct {
|
||||
// Label is what appears as the menu text
|
||||
|
|
@ -53,6 +57,9 @@ type MenuItem struct {
|
|||
|
||||
// Used for locking when removing elements
|
||||
removeLock sync.Mutex
|
||||
|
||||
// Implementation of the runtime methods
|
||||
Impl MenuItemImpl
|
||||
}
|
||||
|
||||
// Parent returns the parent of the menu item.
|
||||
|
|
@ -216,6 +223,14 @@ func (m *MenuItem) insertItemAtIndex(index int, target *MenuItem) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (m *MenuItem) SetChecked(b bool) {
|
||||
if m.Checked != b {
|
||||
println("here!!!!!")
|
||||
m.Checked = b
|
||||
m.Impl.SetChecked(b)
|
||||
}
|
||||
}
|
||||
|
||||
// Text is a helper to create basic Text menu items
|
||||
func Text(label string, accelerator *keys.Accelerator, click Callback) *MenuItem {
|
||||
return &MenuItem{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue