@@ -939,20 +939,22 @@ private void CreateAndShowContextMenu(MouseEventArgs? m, Design? rightClicked)
939939 var setPropsItems = setProps . Select ( ToMenuItem ) . ToArray ( ) ;
940940 bool hasPropsItems = setPropsItems . Any ( ) ;
941941
942- var all = new List < MenuItem > ( ) ;
942+ var all = new List < MenuItemv2 > ( ) ;
943943
944944 // only add the set properties category if there are some
945945 if ( hasPropsItems )
946946 {
947- all . Add ( new MenuBarItem ( name , setPropsItems )
947+ all . Add ( new MenuItemv2 ( )
948948 {
949+ Title = name ,
949950 Action = ( ) =>
950951 {
951952 if ( selected . Length == 1 || rightClicked != null )
952953 {
953954 this . ShowEditProperties ( rightClicked ?? selected [ 0 ] ) ;
954955 }
955956 } ,
957+ SubMenu = new Menuv2 ( setPropsItems )
956958 } ) ;
957959 }
958960
@@ -970,7 +972,7 @@ private void CreateAndShowContextMenu(MouseEventArgs? m, Design? rightClicked)
970972 // Add categories first
971973 all . Insert (
972974 hasPropsItems ? 1 : 0 ,
973- new MenuBarItem ( g . Key , g . ToArray ( ) ) ) ;
975+ new MenuBarItemv2 ( g . Key , g . ToArray ( ) ) ) ;
974976 }
975977 }
976978
@@ -980,18 +982,17 @@ private void CreateAndShowContextMenu(MouseEventArgs? m, Design? rightClicked)
980982 return ;
981983 }
982984
983- var menu = new ContextMenu ( ) ;
984- menu . SetMenuItems ( new MenuBarItem ( all . ToArray ( ) ) ) ;
985-
985+ var menu = new PopoverMenu ( all . ToArray ( ) ) ;
986+ Point position ;
986987 if ( m != null )
987988 {
988- menu . Position = m . Position ;
989+ position = m . Position ;
989990 }
990991 else
991992 {
992993 var d = SelectionManager . Instance . Selected . FirstOrDefault ( ) ?? this . viewBeingEdited ;
993994 var pt = d . View . ContentToScreen ( new Point ( 0 , 0 ) ) ;
994- menu . Position = new Point ( pt . X , pt . Y ) ;
995+ position = new Point ( pt . X , pt . Y ) ;
995996 }
996997
997998 this . menuOpen = true ;
@@ -1002,18 +1003,19 @@ private void CreateAndShowContextMenu(MouseEventArgs? m, Design? rightClicked)
10021003 m . Handled = true ;
10031004 }
10041005
1006+
10051007 // TODO: rly? you have to pass it its own menu items!?
1006- menu . Show ( menu . MenuItems ) ;
1007- menu . MenuBar . MenuAllClosed += ( _ , _ ) =>
1008+ menu . MakeVisible ( position ) ;
1009+ menu . Accepted += ( _ , _ ) =>
10081010 {
10091011 this . menuOpen = false ;
10101012 SelectionManager . Instance . LockSelection = false ;
10111013 } ;
10121014 }
10131015
1014- private static MenuItem ToMenuItem ( IOperation operation )
1016+ private static MenuItemv2 ToMenuItem ( IOperation operation )
10151017 {
1016- return new MenuItem ( operation . ToString ( ) , string . Empty , ( ) => Try ( ( ) => OperationManager . Instance . Do ( operation ) ) ) ;
1018+ return new MenuItemv2 ( operation . ToString ( ) , string . Empty , ( ) => Try ( ( ) => OperationManager . Instance . Do ( operation ) ) ) ;
10171019
10181020 static void Try ( Action action )
10191021 {
0 commit comments