On 07/28/2018 08:29 AM, John Coppens wrote:
> On Sat, 28 Jul 2018 07:42:16 -0400
> Reuben Rissler <sil...@emypeople.net> wrote:
> 
>>> Thanks for the suggestion. Believe it or not, I had just arrived at
>>> that same solution! I first tried to use GLib.timeout_add(), and
>>> that worked too, if the time was larger than 300 - 400 ms, which is
>>> on the verge of annoying. I then tried idle_add(), and I guess that
>>> makes the 300-400ms 'built-in'.
>>>
>> How many lines of text do you have? With 500 - 700 lines of text, my 
>> scrolling is instantaneous. The scroll feature itself has a 'soft'
>> stop, but that is quite acceptable for me, as it is easier to adjust
>> my eyes to the change.
> 
> Reuben,
> 
> The code I'm using to test is short (about 250 lines). I'm using the system
> to single step program execution, so I will do many steps. The problem at 
> the moment is when loading the program, and scrolling to the start of
> the program (the 'reset' position), but I see that the slowing down delay
> is quite visible even when scrolling just one line with the arrow keys.
> 
> I have some Gtk-2 programs where the delay is not apparent. Maybe this
> is configurable?
> 
> John
> 
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
> 

John,

  Maybe we can trade help. There are actually two functions you can use to
scroll the window to insure a text mark (usually the 'insert' mark) is visible
within your view, e.g.

(the following is from a find/replace widget I made)
https://github.com/drankinatty/gtkwrite/blob/master/gtk_findreplace.c#L920

            /* scroll window to mark to insure match is visible */
#ifndef TOMARK
            gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (app->view),
                                        app->last_pos, 0.0, TRUE, 0.95, 0.8);
#else
            gtk_text_view_scroll_mark_onscreen (GTK_TEXT_VIEW (app->view),
                                                app->last_pos);
#endif

  The gtk_text_view_scroll_to_mark give you finer control over how far from
the bottom/top of your view the mark is displayed, the
gtk_text_view_scroll_mark_onscreen just makes sure it is visible (but
generally does a fine job) I left a #define in the code when I wrote it so I
could compare the behavior of each. I use the gtk_text_view_scroll_to_mark by
default. Both give instantaneous performance, even in a longer file (for me
that is 2000 - 5000 lines)

  Also note it is called from 'btnreplace_activate'
https://github.com/drankinatty/gtkwrite/blob/master/gtk_findreplace.c#L1001

and the scroll is wrapped within begin/end user action to prevent any
selection bound changes being momentarily visible during the find/replace
operation:

  gtk_text_buffer_begin_user_action (buffer);
     (code for gtk_text_view_scroll_to_mark
  gtk_text_buffer_end_user_action (buffer);

  You shouldn't notice any delay when implementing the scroll in any
reasonable size file.

-- 
David C. Rankin, J.D.,P.E.
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to