forked from e16/e16
1
0
Fork 0

Make dialog sliders behave when using mouse wheel (Tres Melton).

SVN revision: 15215
This commit is contained in:
Kim Woelders 2005-06-09 15:40:14 +00:00
parent 77175630fc
commit 3fa45c933c
1 changed files with 40 additions and 1 deletions

View File

@ -2255,7 +2255,46 @@ DialogEventMouseDown(Dialog * d, XEvent * ev)
break;
case DITEM_SLIDER:
if (win == di->item.slider.base_win)
if ((ev->xbutton.button == 2) ||
(ev->xbutton.button == 4) || (ev->xbutton.button == 5))
{
int wheel_jump = di->item.slider.jump / 2;
if (!wheel_jump)
wheel_jump++;
if (ev->xbutton.button == 5)
{
di->item.slider.val -= wheel_jump;
if (di->item.slider.val < di->item.slider.lower)
di->item.slider.val = di->item.slider.lower;
}
else if (ev->xbutton.button == 4)
{
di->item.slider.val += wheel_jump;
if (di->item.slider.val > di->item.slider.upper)
di->item.slider.val = di->item.slider.upper;
}
else
{
if (di->item.slider.horizontal)
{
di->item.slider.val = ev->xbutton.x *
(di->item.slider.upper - di->item.slider.lower) /
di->w;
}
else
{
di->item.slider.val = ((di->h - ev->xbutton.y) *
(di->item.slider.upper -
di->item.slider.lower) / di->h);
}
}
if (di->item.slider.val_ptr)
*di->item.slider.val_ptr = di->item.slider.val;
if (di->func)
(di->func) (d, di->val, di->data);
}
else if (win == di->item.slider.base_win)
{
if (di->item.slider.horizontal)
{