topic "macOS menu support";
[i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class]
[l288;2 $$2,2#27521748481378242620020725143825:desc]
[0 $$3,0#96390100711032703541132217272105:end]
[H6;0 $$4,0#05600065144404261032431302351956:begin]
[i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:item]
[l288;a4;*@5;1 $$6,6#70004532496200323422659154056402:requirement]
[l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param]
[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam]
[b42;2 $$9,9#13035079074754324216151401829390:normal]
[2 $$0,0#00000000000000000000000000000000:Default]
[{_}%EN-US 
[ {{10000@(113.42.0) [s0; [*@7;4 macOS menu support]]}}&]
[s0; &]
[s0; U`+`+ applications without changes to support macOS application 
menu will run with menu inside the window.&]
[s0; &]
[s0; To properly support macOS menu, application needs to provide 
different code for macOS (conditional compilation depending on 
PLATFORM`_COCOA macro). Usually, the changes are minimal, e.g. 
in Uword application the only change is&]
[s0; &]
[s0;l320; [*C #ifdef PLATFORM`_COCOA]&]
[s0;l320; [*C     SetMainMenu(`[`=`](Bar`& bar) `{ MainMenu(bar); `});]&]
[s0;l320; [*C #else]&]
[s0;l320; [*C     AddFrame(menubar);]&]
[s0;l320; [*C #endif]&]
[s0; &]
[s0; replacing the call to AddFrame to add the main menu bar with 
the call to TopWindow`::SetMainMenu.&]
[s0; &]
[s0; Other possibility is to omit AddFrame when PLATFORM`_COCOA is 
defined and change menu setting code (which is called on any 
main menu changes) to something like&]
[s0; &]
[s0; [*C #ifdef PLATFORM`_COCOA]&]
[s0; [*C -|SetMainMenu(`[`=`](Bar`& bar) `{ MainMenu(bar); `});]&]
[s0; [*C #else]&]
[s0; [*C -|menubar.Set(`[`=`](Bar`& bar) `{ MainMenu(bar); `});]&]
[s0; [*C #endif]&]
[s0; &]
[s0; Another MacOS feature is the dock menu. This can be set using 
TopWindow`::WhenDockMenu.&]
[s0; &]
[s0;%- &]
[ {{10000F(128)G(128)@1 [s0; [* TopWindow members for macOS style menu support]]}}&]
[s3;%- &]
[s5;:Upp`:`:TopWindow`:`:WhenDockMenu:%- [_^topic`:`/`/Core`/src`/Function`_en`-us`#Upp`:`:Event^ E
vent]<[_^topic`:`/`/CtrlLib`/src`/Bar`_en`-us`#Bar`:`:class^ Bar][@(0.0.255) `&]>_[* Wh
enDockMenu]&]
[s2; Represents application dock menu. Gets called if TopWindow is 
on top and user invokes the dock menu for application (e.g. by 
right`-click on application icon).&]
[s3; &]
[s4;%- &]
[s5;:Upp`:`:TopWindow`:`:SetMainMenu`(Upp`:`:Event`<Upp`:`:Bar`&`>`):%- [@(0.0.255) voi
d]_[* SetMainMenu]([_^topic`:`/`/Core`/src`/Function`_en`-us`#Upp`:`:Event^ Event]<[_^topic`:`/`/CtrlLib`/src`/Bar`_en`-us`#Bar`:`:class^ B
ar][@(0.0.255) `&]>_[*@3 menu])&]
[s2; Sets the main application menu. This menu will be active if 
given top level TopWindow is on the top.&]
[s0; ]]