public virtual bool SetBounds(float x, float y, float width, float height) {
if (bounds.X != x || bounds.Y != y || bounds.Width != width || bounds.Height != height) {
bounds.X = x;
bounds.Y = y;
bounds.Width = width;
bounds.Height = height;
InternalUpdateBounds(x, y, width, height);
InvalidatePaint();
SignalBoundsChanged();
// Don't put any invalidating code here or else nodes with volatile bounds will
// create a soft infinite loop (calling Control.BeginInvoke()) when they validate
// their bounds.
return true;
}
return false;
}