rem: if (!sPtr->flags.continuous && ovalue != sPtr->value && sPtr->action) {
add: if (!sPtr->flags.continuous && sPtr->action) {
context: handleActionEvents(XEvent *event, void *data){    WMSlider *sPtr = (Slider*)data;    int ovalue = sPtr->value;    CHECK_CLASS(data, WC_Slider);    switch (event->type) {     case ButtonPress:	if (getSliderPart(sPtr, event->xbutton.x, event->xbutton.y)==KNOB_PART)	    sPtr->flags.dragging = 1;	else {#ifdef STRICT_NEXT_BEHAVIOUR	    sPtr->flags.dragging = 1;	    sPtr->value = valueForMousePoint(sPtr, event->xmotion.x,					     event->xmotion.y);	    paintSlider(sPtr);#else	    int tmp;	    if (event->xbutton.button == Button2) {		sPtr->flags.dragging = 1;		sPtr->value = valueForMousePoint(sPtr, event->xmotion.x,						 event->xmotion.y);		paintSlider(sPtr);	    } else {		tmp = valueForMousePoint(sPtr, event->xmotion.x,					 event->xmotion.y);		if (tmp < sPtr->value)		    tmp = sPtr->value-1;		else		    tmp = sPtr->value+1;		WMSetSliderValue(sPtr, tmp);	    }#endif	    if (sPtr->flags.continuous && sPtr->action) {		(*sPtr->action)(sPtr, sPtr->clientData);	    }	}	break;     case ButtonRelease:	if (!sPtr->flags.continuous && ovalue != sPtr->value && sPtr->action) {	    (*sPtr->action)(sPtr, sPtr->clientData);	}	sPtr->flags.dragging = 0;	break;     case MotionNotify:	if (sPtr->flags.dragging) {	    sPtr->value = valueForMousePoint(sPtr, event->xmotion.x,					     event->xmotion.y);	    paintSlider(sPtr);	    	    if (sPtr->flags.continuous && sPtr->action) {		(*sPtr->action)(sPtr, sPtr->clientData);	    }	}	break;    }}