GNU bug report logs -
#63187
30.0.50; Tail of longer lines painted after end of nearby lines on macOS
Previous Next
Reported by: Aaron Jensen <aaronjensen <at> gmail.com>
Date: Sun, 30 Apr 2023 10:11:01 UTC
Severity: normal
Found in version 30.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
On Mon, May 1, 2023 at 9:55 AM Aaron Jensen <aaronjensen <at> gmail.com> wrote:
>
> On Mon, May 1, 2023 at 9:51 AM Eli Zaretskii <eliz <at> gnu.org> wrote:
> >
> > > From: Aaron Jensen <aaronjensen <at> gmail.com>
> > > Date: Mon, 1 May 2023 09:47:50 -0400
> > > Cc: Po Lu <luangruo <at> yahoo.com>, Alan Third <alan <at> idiocy.org>, 63187 <at> debbugs.gnu.org
> > >
> > > {
> > > NSRect srcRect = NSMakeRect (x, from_y, width, height);
> > > NSPoint dest = NSMakePoint (x, to_y);
> > > EmacsView *view = FRAME_NS_VIEW (f);
> > >
> > > [view copyRect:srcRect to:dest];
> > > #ifdef NS_IMPL_COCOA
> > > [view setNeedsDisplayInRect:srcRect];
> > > #endif
> > > }
> > >
> > > Why is the source being marked for redisplay? I would expect the
> > > destination to be marked as such, or am I missing something?
> >
> > IMO, both should be marked for redisplay. Or maybe I don't understand
> > the significance of marking a rectangle for redisplay.
>
> For reference, this is in `ns_scroll_run'. Only the destination is
> changed, right? I imagine the source would be effectively marked when
> it's copied into, so marking the source in this code would be
> redundant, unless I'm missing something?
Also, the previous version of `ns_flush_display' was this:
static void
ns_flush_display (struct frame *f)
/* Force the frame to redisplay. If areas have previously been marked
dirty by setNeedsDisplayInRect (in ns_clip_to_rect), then this will call
draw_rect: which will "expose" those areas. */
{
block_input ();
[FRAME_NS_VIEW (f) displayIfNeeded];
unblock_input ();
}
The displayIfNeeded has been removed and is now ultimately replaced
with stuff I don't understand. After looking at this code, I'm now
wondering if my problem has to do with the fact that I use child
frames for things like completions. I have recollection of the
painting artifacts appearing under areas that child frames are
temporarily covering. Is it possible that somehow those areas aren't
being properly repainted/marked for repainting?
This bug report was last modified 1 year and 364 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.