rxhanson / Rectangle

Move and resize windows on macOS with keyboard shortcuts and snap areas
https://rectangleapp.com
Other
25.6k stars 767 forks source link

Better support for Portrait displays #112

Open gingerbeardman opened 4 years ago

gingerbeardman commented 4 years ago

I run a display that works in Landscape and Portrait and I switch depending on my workflow.

It would be great if the Rectangle functions that operate on "Halves" and "Thirds" of the screen could do so on the longest edge. That way I could organise in thirds horizontally when in landscape, and vertically when in portrait.

This feature would just be extra logic in the app, and would be transparent to most users.

Thanks for you consideration!

Currently, horizontal thirds on a portrait display do not work as expected, due to many apps minimum window width being larger than 1/3 the width of my display.

If you implement a feature in a fork that you would like to get rolled into Rectangle, pull requests are still welcome but are not guaranteed to be accepted.

If you'd accept this feature request then I would be happy to try to implement it.

rxhanson commented 4 years ago

I'm actually not 100% sure what you're looking to change as I do not use displays in portrait mode, but I'd definitely lean toward accepting a pull request to fix the issues that you're experiencing. Thanks for checking up front.

Thirds should be properly handling portrait orientation, except it is admittedly strange behavior that the drag to snap edges are still the ones for landscape. See getMouseHotSpot in SnappingManager if that's what you are looking to fix there. If thirds aren't doing anything for portrait, then somethings wrong.

Halves don't handle portrait orientation. Being that I'm not a portrait mode user, my initial thought was that some users might still prefer halves done the way they are currently? Perhaps this is a feature that would be best done with a flag that could be set via Terminal.

rxhanson commented 4 years ago

Oh yeah, and on thirds not working due to minimum width > display width, could you post a screenshot? Of course, there's no way to make a window width smaller than it's minimum, but maybe there's something we can do?

gingerbeardman commented 4 years ago

My suggestion can be summarised as follows: portions of the screen should be calculated relative to longest edge, rather than being calculated assuming width is longest edge.

I appreciate there are also many smaller issues relating to landscape assumptions, but these are less of an issue for me at this point.

With the minimum width > 1/3 of display width, the window is aligned to the start of the third, and is cropped by the right edge of the display.

2 screens:

rxhanson commented 4 years ago

Ah ok, I think I see what you mean here. When you have portrait mode, you would expect the window on the right to be adjusted to stay on the screen but it is not doing that. Is that right?