# HG changeset patch # User YAMAMOTO Mitsuharu # Date 1140691390 0 # Node ID eb6e7cc98bbfd17cfc4b0c9a9f044b175d7a541d # Parent 5431a1e834cc59496ba395690fbb6efedbc0342a (x_set_toolkit_scroll_bar_thumb): Don't set control values if control is not visible or values are not changed. diff -r 5431a1e834cc -r eb6e7cc98bbf src/macterm.c --- a/src/macterm.c Thu Feb 23 10:13:23 2006 +0000 +++ b/src/macterm.c Thu Feb 23 10:43:10 2006 +0000 @@ -4529,7 +4529,7 @@ int portion, position, whole; { ControlHandle ch = SCROLL_BAR_CONTROL_HANDLE (bar); - int value, viewsize, maximum, visible_p; + int value, viewsize, maximum; if (whole == 0 || XINT (bar->track_height) == 0) value = 0, viewsize = 1, maximum = 0; @@ -4542,16 +4542,20 @@ BLOCK_INPUT; - /* Temporarily hide the scroll bar to avoid multiple redraws. */ - visible_p = IsControlVisible (ch); - SetControlVisibility (ch, false, false); - - SetControl32BitMinimum (ch, 0); - SetControl32BitMaximum (ch, maximum); - SetControl32BitValue (ch, value); - SetControlViewSize (ch, viewsize); - - SetControlVisibility (ch, visible_p, true); + if (IsControlVisible (ch) + && (GetControlViewSize (ch) != viewsize + || GetControl32BitValue (ch) != value + || GetControl32BitMaximum (ch) != maximum)) + { + /* Temporarily hide the scroll bar to avoid multiple redraws. */ + SetControlVisibility (ch, false, false); + + SetControl32BitMaximum (ch, maximum); + SetControl32BitValue (ch, value); + SetControlViewSize (ch, viewsize); + + SetControlVisibility (ch, true, true); + } UNBLOCK_INPUT; }