From 6c26ee6d2e96dced63798583ee7fca35dafc7fbd Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 12 Jun 2008 19:00:29 +0000 Subject: [PATCH] fix update loop, sticky slider bars --- panda/src/pgui/pgSliderBar.cxx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/panda/src/pgui/pgSliderBar.cxx b/panda/src/pgui/pgSliderBar.cxx index 9c2d55b8f5..bc0c52f80e 100755 --- a/panda/src/pgui/pgSliderBar.cxx +++ b/panda/src/pgui/pgSliderBar.cxx @@ -689,7 +689,17 @@ reposition() { float t = get_ratio(); if (_thumb_button != (PGButton *)NULL) { - _thumb_button->set_transform(TransformState::make_pos((t * _range_x) * _axis + _thumb_start)); + LPoint3f pos = (t * _range_x) * _axis + _thumb_start; + CPT(TransformState) transform = TransformState::make_pos(pos); + CPT(TransformState) orig_transform = _thumb_button->get_transform(); + + // It's important not to update the transform frivolously, or + // we'll get caught in an update loop. + if (transform == orig_transform) { + // No change. + } else if (*transform < *orig_transform || *orig_transform < *transform) { + _thumb_button->set_transform(transform); + } } }