Browse Source

Change mousewheel behavior of Fl_Slider and Fl_Dial.

tags/v1.3.1000
Jonathan Moore Liles 12 years ago
parent
commit
7d4ce9ed0a
2 changed files with 33 additions and 29 deletions
  1. +13
    -29
      src/Fl_Dial.cxx
  2. +20
    -0
      src/Fl_Slider.cxx

+ 13
- 29
src/Fl_Dial.cxx View File

@@ -110,36 +110,20 @@ Fl_Dial::handle ( int m )
{
if ( this != Fl::belowmouse() )
return 0;

int steps = 16;

if ( Fl::event_ctrl() )
steps = 128;

float step = fabs( maximum() - minimum() ) / (float)steps;

float d = ((float)Fl::event_dy()) * step;

double v = value() + d;

if (Fl::e_dy==0)
return 0;
const int steps = Fl::event_ctrl() ? 128 : 16;
const float step = fabs( maximum() - minimum() ) / (float)steps;
int dy = Fl::e_dy;
/* slider is in 'upside down' configuration, invert meaning of mousewheel */
if ( maximum() > minimum() )
{
if ( v < minimum() )
v = minimum();
else if ( v > maximum() )
v = maximum();
}
else
{
if ( v > minimum() )
v = minimum();
else if ( v < maximum() )
v = maximum();
}

value( v );
do_callback();

dy = 0 - dy;
handle_drag(clamp(value() + step * dy));
return 1;
}
}


+ 20
- 0
src/Fl_Slider.cxx View File

@@ -350,6 +350,26 @@ int Fl_Slider::handle(int event, int X, int Y, int W, int H) {
case FL_ENTER :
case FL_LEAVE :
return 1;
case FL_MOUSEWHEEL :
{
if ( this != Fl::belowmouse() )
return 0;
if (Fl::e_dy==0)
return 0;
const int steps = Fl::event_ctrl() ? 128 : 16;
const float step = fabs( maximum() - minimum() ) / (float)steps;

int dy = Fl::e_dy;

/* slider is in 'upside down' configuration, invert meaning of mousewheel */
if ( minimum() > maximum() )
dy = 0 - dy;

handle_drag(clamp(value() + step * dy));
return 1;
}
default:
return 0;
}


Loading…
Cancel
Save