all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Jan D." <jan.h.d@swipnet.se>
Cc: emacs-devel@gnu.org
Subject: Re: Emacs GTK scroll-bar flickering
Date: Tue, 18 Mar 2003 23:15:04 +0100 (CET)	[thread overview]
Message-ID: <200303182319.h2INJ0bP024745@stubby.bodenonline.com> (raw)
In-Reply-To: <buollzdjj42.fsf@mcspd15.ucom.lsi.nec.co.jp> "from Miles Bader at Mar 18, 2003 03:15:25 pm"

> > Emacs probably changes thumb much more than Gedit, as Gedit counts
> > lines visible, but Emacs counts characters.
> 
> That's not the issue, I think -- with exactly the same file and theme,
> I can drag the scrollbar around in Gedit with _no_ flickering or other
> unpleasant artifacts, whereas emacs flickers like crazy in the same test.

It indeed is the issue.  Where Gedit counts the lines in a file and
the lines shown, Emacs counts characters.

When calculating the size of the thumb, one basically divide lines shown
with total lines in file.  When moving about and adding or
deleting characters that does not change the number of lines in the
file, the thumb size does not change.

When lines aren't available, Emacs uses characters instead.  But
every character added or deleted changes the thumb because the ratio
between total number characters in the file and the number of characters
shown changes.  Thus, Emacs updates the thumb a lot more than a
line based application.  When the scroll bar is bad at updating
for small changes like this, flicker occurs.

> Here's an attempt to be a bit more specific about a case wehre I'm
> seeing the problem:
> 

 [deleted]

Thanks for this test case.  I can see redraws here.  They all come from
the fact that Emacs updates the thumb often.  This is basically a
GTK problem.  Perhaps we can find some way to not update the thumb
so often.


>  (4) The result I see is:
> 
>     (a) Until your typing reaches the end of the line, the scrollbar is
>         quite stable, with no obvious flickering.
> 
>     (b) When the typing reaches the end of the line, and continues onto
>         the next line, the scrollbar starts flickering obviously, and
>         will continue as you type.

For every character you type, Emacs updates the thumb.
Why it does not do that for the first line must have something to do with
the redraw engine.  It happens for all toolkits.
It is even more noticable if you insert some lines of characters by
holding down a letter and then delete them all by holding down DEL.

>         BTW, another odd thing: in the initial scratch-buffer, the
>         scrollbar thumb doesn't extend all the way to the top and the
>         bottom of the scrollbar, even though the entire is clearly
>         visible.

This is by design.  It is so you can scroll with the scroll bar so the
last line of the buffer is at the top of the frame.

	Jan D.

  parent reply	other threads:[~2003-03-18 22:15 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-14  5:39 Emacs GTK scroll-bar flickering Miles Bader
2003-03-14 10:19 ` Kai Großjohann
2003-03-14 11:52   ` Andreas Schwab
2003-03-14 12:44     ` Kai Großjohann
2003-03-14 13:35       ` Miles Bader
2003-03-14 18:46         ` Jan D.
2003-03-14 20:04           ` Stefan Monnier
2003-03-14 20:35             ` Jan D.
2003-03-17  5:58           ` Miles Bader
2003-03-17 23:26             ` Jan D.
2003-03-18  1:33               ` Miles Bader
2003-03-18  5:39                 ` Jan D.
2003-03-18  6:15                   ` Miles Bader
2003-03-18  6:44                     ` Luc Teirlinck
2003-03-18  6:54                       ` Miles Bader
2003-03-18  7:05                         ` Luc Teirlinck
2003-03-18  7:56                           ` Miles Bader
2003-03-18  8:09                             ` Miles Bader
2003-03-19  8:48                           ` Richard Stallman
2003-03-18 22:15                     ` Jan D. [this message]
2003-03-18 22:42                       ` Kevin Rodgers
2003-03-19  6:05                         ` Jan D.
2003-03-18 23:28                       ` Miles Bader
2003-03-19  1:07                         ` Kim F. Storm
2003-03-19  1:26                           ` Miles Bader
2003-03-19 22:27                             ` Jan D.
2003-03-20  1:19                               ` Miles Bader
2003-03-21 19:06                               ` Richard Stallman
2003-03-26 18:17                                 ` Jan D.
2003-03-27  1:22                                   ` Miles Bader
2003-03-27  6:54                                     ` Miles Bader
2003-03-27 22:12                                       ` Richard Stallman
2003-03-28  1:29                                         ` Miles Bader
2003-03-29 18:38                                           ` Richard Stallman
2003-03-27 18:06                                     ` Jan D.
2003-03-27 19:04                                     ` Richard Stallman
2003-03-20  8:45                       ` Richard Stallman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200303182319.h2INJ0bP024745@stubby.bodenonline.com \
    --to=jan.h.d@swipnet.se \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.