well, unfortunately, there is no easy way to make it work the way players will expect it to work...
I tried to use the built-in Drag and Drop behaviour in your sample, but the gymnastics you have to go through to make sure the other selected objects are pinned to the one being dragged doesn't always make sense...
the problem is that the Drag and Drop behaviour assumes that you will be dragging the object you clicked on as soon as the mouse button goes down, but if you open a folder on your computer and test the subtle nuances of how Drag and Drop works with multiple objects you will see that it can not be determined whether you want to drag or change the selection until after you start moving the mouse or release the mouse button. It goes into a "pending" mode and waits to see what the user will do.
there are actually two different pending situations - if the CTRL key is down and you click on a selected object it needs to wait to see if you start moving the mouse to drag all the objects, or release the button to unselect the one clicked on. The other situation is if the CTRL key is not down and you click on a selected object - now it has to wait to see if you start moving the mouse to drag all the objects, or release the button to clear the selection and just pick the one clicked on.
most people never stop to think about rules like that, but if you don't follow them people will notice that it seems broken and not doing what they expect.
so, I started with your file and basically recreated the example I did earlier - this time without using Touch... There is definitely some complex logic in there but there is no way around it.
I was going to start adding a pop-up menu, but since I don't have a C3 license yet, I can't edit the All_Objects family. You will need to add a sprite to the family to use as the menu background. You need to do this so that you can isolate the menu functionality from the selection/dragging code. (the Mouse code always picks the top instance in the family, if the pop-up menu is not in the family and happens to be over other objects that are in the family, the code will process the click in ways you didn't want...
https://www.rieperts.com/games/forum/DragnDrop.c3p