GNU bug report logs -
#16856
24.3.50; Cursor leaves garbage in fringe (and a request: width of fringes + scroll bar should be full characters)
Previous Next
Reported by: Anders Lindgren <andlind <at> gmail.com>
Date: Sun, 23 Feb 2014 21:41:02 UTC
Severity: normal
Tags: unreproducible
Found in version 24.3.50
Done: Anders Lindgren <andlind <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #40 received at 16856 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hi!
I gave this patch a try.
It works well, the ns port now behaves like the win32 and gtk+ parts of
Emacs.
Do you want me to push it to master?
-- Anders
Ps. When the text area doesn't partially overlap a column, the cursor can
be drawn in the fringe. It's a bit unfortunate that when it do overlap,
only the part of the cursor in the text area is drawn. A worst case
scenario is that only a single pixel of the cursor is visible. An ideal
solution would be to draw the cursor partially in the text area and
partially in the fringe, but without leaving garbage behind when moved.
However, this is nothing that we can solve here and now as it would require
change to all emacs ports and possibly the core system.
On Tue, May 17, 2016 at 11:14 PM, Alan Third <alan <at> idiocy.org> wrote:
> src/nsterm.m (ns_draw_window_cursor): Reduce clip area from ANY_AREA to
> TEXT_AREA. (bug#16856)
> ---
> src/nsterm.m | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/src/nsterm.m b/src/nsterm.m
> index 1d48c04..5eb4c8f 100644
> --- a/src/nsterm.m
> +++ b/src/nsterm.m
> @@ -2873,9 +2873,8 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar
> cursors.
> r.size.height = h;
> r.size.width = w->phys_cursor_width;
>
> - /* TODO: only needed in rare cases with last-resort font in HELLO..
> - should we do this more efficiently? */
> - ns_clip_to_row (w, glyph_row, ANY_AREA, NO); /* do ns_focus(f, &r, 1);
> if remove */
> + /* Prevent the cursor from being drawn outside the text area. */
> + ns_clip_to_row (w, glyph_row, TEXT_AREA, NO); /* do ns_focus(f, &r, 1);
> if remove */
>
>
> face = FACE_FROM_ID (f, phys_cursor_glyph->face_id);
> --
>
> I believe this fixes it.
>
> --
> Alan Third
>
[Message part 2 (text/html, inline)]
This bug report was last modified 7 years and 192 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.