Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a follow-up PR to #3017.
Due to major communication deficiencies (my bad), here is what I intended to mean in #3017 (comment):
The original implementation was great due to its simplicity and absence of fp math. It was easy to understand and thus to maintain. I requested a little change due to an edge case where a single pixel of each border was deemed sufficient to keep the window at its position. I suggested to fix this by simply insetting the borders by a little amount.
Here is a visualization, where the four borders (blue, red, pink, orange) are insetted. The top border (blue) a little less than the others, as the top bar of the window is more important to grab it.
Notice how no repositioning is triggered if the window is just slightly out of bounds (second case).
Explaining this took way longer than adding the four numbers to the existing code. I am very sorry about not being able to transport the message correctly from the beginning.
What is still open for debate is the amount of insetting. @Rexbas suggested in #3017 (comment) to use a variable amount, depending on the window dimensions. E.g. insetting the red, orange and pink border by 50% and only keep the blue border fixed.