rem: if (event->xbutton.button==WINGsConfiguration.mouseWheelUp) {
add: if (sPtr->flags.horizontal) { wheelDecrement = WINGsConfiguration.mouseWheelDown; wheelIncrement = WINGsConfiguration.mouseWheelUp; } else { wheelDecrement = WINGsConfiguration.mouseWheelUp; wheelIncrement = WINGsConfiguration.mouseWheelDown; }  if (event->xbutton.button == wheelDecrement) {
context: handleActionEvents(XEvent *event, void *data){    Scroller *sPtr = (Scroller*)data;    int id, dd;        /* check if we're really dealing with a scroller, as something     * might have gone wrong in the event dispatching stuff */    CHECK_CLASS(sPtr, WC_Scroller);        id = sPtr->flags.incrDown;    dd = sPtr->flags.decrDown;        switch (event->type) {     case EnterNotify:		break;	     case LeaveNotify:	if (sPtr->timerID) {	    WMDeleteTimerHandler(sPtr->timerID);	    sPtr->timerID = NULL;	}	sPtr->flags.incrDown = 0;	sPtr->flags.decrDown = 0;	break;	     case ButtonPress:        /* FIXME: change Mod1Mask with something else */        if (sPtr->flags.documentFullyVisible)            break;	if (event->xbutton.button==WINGsConfiguration.mouseWheelUp) {            if (event->xbutton.state & ControlMask) {                sPtr->flags.hitPart = WSDecrementPage;            } else if (event->xbutton.state & ShiftMask) {                sPtr->flags.hitPart = WSDecrementLine;            } else {                sPtr->flags.hitPart = WSDecrementWheel;            }	    if (sPtr->action) {		(*sPtr->action)(sPtr, sPtr->clientData);		WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, 				       NULL);	    }	} else if (event->xbutton.button==WINGsConfiguration.mouseWheelDown) {            if (event->xbutton.state & ControlMask) {                sPtr->flags.hitPart = WSIncrementPage;            } else if (event->xbutton.state & ShiftMask) {                sPtr->flags.hitPart = WSIncrementLine;            } else {                sPtr->flags.hitPart = WSIncrementWheel;            }	    if (sPtr->action) {		(*sPtr->action)(sPtr, sPtr->clientData);		WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, 				       NULL);	    }	} else {	    handlePush(sPtr, event->xbutton.x, event->xbutton.y,			   (event->xbutton.state & Mod1Mask)			   ||event->xbutton.button==Button2);	    /* continue scrolling if pushed on the buttons */	    if (sPtr->flags.hitPart == WSIncrementLine		|| sPtr->flags.hitPart == WSDecrementLine) {		sPtr->timerID = WMAddTimerHandler(AUTOSCROLL_INITIAL_DELAY,						      autoScroll, sPtr);	    }	}	break;     case ButtonRelease:	if (sPtr->flags.draggingKnob) {	    if (sPtr->action) {		(*sPtr->action)(sPtr, sPtr->clientData);		WMPostNotificationName(WMScrollerDidScrollNotification, sPtr, 				       NULL);	    }	}	if (sPtr->timerID) {	    WMDeleteTimerHandler(sPtr->timerID);	    sPtr->timerID = NULL;	}	sPtr->flags.incrDown = 0;	sPtr->flags.decrDown = 0;	sPtr->flags.draggingKnob = 0;	break;     case MotionNotify:	handleMotion(sPtr, event->xbutton.x, event->xbutton.y);	if (sPtr->timerID && sPtr->flags.hitPart != WSIncrementLine	    && sPtr->flags.hitPart != WSDecrementLine) {	    WMDeleteTimerHandler(sPtr->timerID);	    sPtr->timerID = NULL;	}	break;    }    if (id != sPtr->flags.incrDown || dd != sPtr->flags.decrDown)	paintScroller(sPtr);}