diff --git a/docs/changelog.rst b/docs/changelog.rst index 1e4ff572f..ce4782d84 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -15,6 +15,9 @@ To update |kitty|, :doc:`follow the instructions `. :opt:`window_margin_width` and keeping :opt:`draw_minimal_borders` on (:iss:`3017`) +- Fix selections created by dragging upwards not being auto-cleared when + screen contents change (:pull:`3028`) + 0.19.1 [2020-10-06] ------------------- diff --git a/kitty/screen.c b/kitty/screen.c index ac87c12c0..11f01fc12 100644 --- a/kitty/screen.c +++ b/kitty/screen.c @@ -373,8 +373,10 @@ selection_has_screen_line(const Selections *selections, const int y) { for (size_t i = 0; i < selections->count; i++) { const Selection *s = selections->items + i; if (!is_selection_empty(s)) { - int top = (int)s->start.y - s->start_scrolled_by; - int bottom = (int)s->end.y - s->end_scrolled_by; + int start = (int)s->start.y - s->start_scrolled_by; + int end = (int)s->end.y - s->end_scrolled_by; + int top = MIN(start, end); + int bottom = MAX(start, end); if (top <= y && y <= bottom) return true; } }