protected override bool OnScrollEvent (EventScroll evnt) { var alloc = Allocation; double dx, dy; evnt.GetPageScrollPixelDeltas (alloc.Width, alloc.Height, out dx, out dy); if (dx != 0.0 && hScrollBar.Visible) hAdjustment.AddValueClamped (dx); if (dy != 0.0 && vScrollBar.Visible) vAdjustment.AddValueClamped (dy); return (dx != 0.0 || dy != 0.0) || base.OnScrollEvent (evnt); }
// FIXME: if the editors have different adjustment ranges, the pixel deltas // don't really feel quite right since they're applied after scaling via the // linked adjustment protected override bool OnScrollEvent (EventScroll evnt) { //using the size of an editor for the calculations means pixel deltas apply better var alloc = editors[0].Allocation; double dx, dy; evnt.GetPageScrollPixelDeltas (alloc.Width, alloc.Height, out dx, out dy); if (dx != 0.0 && hAdjustment.PageSize < (hAdjustment.Upper - hAdjustment.Lower)) hAdjustment.AddValueClamped (dx / (alloc.Width / hAdjustment.PageSize)); if (dy != 0.0 && vAdjustment.PageSize < (vAdjustment.Upper - vAdjustment.Lower)) vAdjustment.AddValueClamped (dy / (alloc.Height / vAdjustment.PageSize)); return (dx != 0.0 || dy != 0.0) || base.OnScrollEvent (evnt); }