-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/115413/
-----------------------------------------------------------

Review request for Okular.


Bugs: 319870
    http://bugs.kde.org/show_bug.cgi?id=319870


Repository: okular


Description
-------

This implements https://bugs.kde.org/show_bug.cgi?id=319870.

This patch is largely inspired by a firefox extension, called "SmoothWheel".

This patch only affects the behaviour of mouse wheel, not the scroll bar.  This 
is because in order to make the scroll bar have smooth scroll feature, we need 
to totally rewrite QScrollBar and QScrollArea, which is a too big task for me.

It provides following parameter to control the behavior the smooth scrolling:
1.  FPS (Frames per second): control the fluency of the smooth scrolling.
2.  Duration:  How long does it take to finish a mouse wheel scroll.
3.  SmoothMode:  The function of time t and the scroll speed s: s = f(t).  
Suppose t is defined at [-m, +m], and a, b, c, d are come constant:
   I.  CONSTANT:  f(t) = c
  II.  LINEAR:    f(t) = (m - |t|) * c
 III.  QUADRATIC: f(t) = a - b*t^2
  IV.  COSINE:    f(t) = (cos(c*t) + 1)/d

   a, b, c, d are determined by equation \integral_{-m}^{+m} f(t) dt = 1.

4.  Acceration:  Dynamic change the step size:  when a user scroll his mouse 
frequently,  we will increase its step size so that it can enjoy a faster 
scroll.
5.  Big Step Modifier:  When user press a modifier (by default, Alt) key and 
scroll his wheel, the step size will be bigger (by default, 5 times).
6.  Small Step Modifier:  When user press a modifier (by default, Shift) key 
and scroll his wheel, the step size will be smaller (by default, 1/5).

I hope all these settings will be exposed to the user finally.  I will 
implement the configuration UI after 

https://git.reviewboard.kde.org/r/115335

is merged.  Should I open a new configuration page since this will occupy some 
space?  Anyway, that should be relatively easy since all the interfaces are 
implemented.


Diffs
-----

  ui/qsmoothscrollarea.cpp PRE-CREATION 
  ui/qsmoothscrollarea.h PRE-CREATION 
  ui/pageview.h 9c15af6 
  ui/pageview.cpp 65967bf 
  CMakeLists.txt 63d2922 

Diff: https://git.reviewboard.kde.org/r/115413/diff/


Testing
-------


Thanks,

Yichao Zhou

_______________________________________________
Okular-devel mailing list
Okular-devel@kde.org
https://mail.kde.org/mailman/listinfo/okular-devel

Reply via email to