I have an external monitor attached to my laptop via HDMI. The monitor is mounted above my laptop so they are positioned in a vertical format. If my laptop is the primary screen, then I can't drag any windows to the above monitor - they stop when they hit the task bar. And if I make my external monitor the primary, then when I detach my laptop, it doesn't adjust to being the only monitor (all the wing panel and task bar etc... stay on the external monitor) leaving me unable to do anything.
(This might be a bug, but on my system, Loki's Displays settings do not naturally let users stack screens atop each other, either with the secondary directly above the primary or vice versa, though I can futz around with it to make it work.)
Not being able to drag the window through the menu bar is likely by design—that would be a confusing scenario when the menu bar goes solid. So let's fix your second scenario, where you set the external monitor (the one on top) as the primary. Firstly, that your laptop's monitor does not regain control as the primary when the external is disconnected, so I reported it as a bug you can follow here.
Until it's patched, you'll have to either change the setting manually in your Displays settings or run a command as needed to reset your connected monitor as the primary:
- If you're ever out of options (nothing to click on) and need a terminal, press Ctrl+Alt+F1, which should bring up a TTY screen. (Press Ctrl+Alt+F7 to return.)
xrandr -qto see all connected monitors and pick the one you want to target (not sure what it would be called for an internal screen [report back?] but mine is "HDMI-0", for instance)
xrandr --output HDMI-0 --primaryto set a specific screen (HDMI-0) as the primary
I'll report back when the bug is addressed.