On July 26, 2010 04:50:04 am fons(a)kokkinizita.net wrote:
On Sun, Jul 25, 2010 at 04:55:10PM -0700, Niels Mayer
wrote:
On Sun, Jul 25, 2010 at 3:23 PM,
<fons(a)kokkinizita.net> wrote:
- The analog gain sliders behave strangly. They
seem to 'detent'
on the scale marks, it's quite impossible to set a value *near*
a scale mark while at the same time the resulotion halfway
between scale marks seems to be OK.
This is a side effect of routines I added to draw markings in the
scale widgets. GTK automatically auto-detents at the markings -- it's
certainly not what I wanted. (See volume.c: e.g.
draw_24bit_attenuator_scale_markings(), draw_dac_scale_markings() &
draw_dac_scale_markings() called out of
envy24control.c:create_analog_volume()).
I just don't believe that GTK can't create a slider without these
detents (which don't work well either). It would be utterly broken.
Try using such a fader for any real audio work.
Tested: Oh dear. I see what you guys mean now.
It's not hysteresis I was seeing, per se, but a desire for the
slider to snap to the marker detents.
Which is caused by adding the marks to the sliders in the first place.
Possible fixes:
1) Draw the markings as a completely separate entity
from the sliders. We don't necessarily need tick marks,
but we get to still keep the handy page up/down snaps,
as they are part of gtk_adjustment etc.
2) Sub-class gtk_scale, and by necessity gtk_vscale.
I could take a stab at it. But do we want this?
I think 1) is the best attempt for now.
Let me take a look at how to draw them on their own.
They must expand when the the sliders expand, of course.
So maybe a bunch of labels inside an expanding vbox.
Tim.