From d244e9bf0369c630386efbdc69ea123ae1289844 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Sat, 8 Nov 2014 20:40:17 +0100 Subject: [PATCH] * nsterm.m (ns_set_vertical_scroll_bar): Don't call bar setPosition: unless needed (Bug#18757). Fixes: debbugs:18993 --- src/ChangeLog | 2 ++ src/nsterm.m | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1544df0da8c..7b595b5f9e9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -3,6 +3,8 @@ * nsterm.m (init): Replace OSX 10.9 check with IMPL_COCOA. (run): Ditto. Only use non-system event loop if OSX version is exactly 10.9 (Bug#18993). + (ns_set_vertical_scroll_bar): Don't call bar setPosition: unless + needed (Bug#18757). 2014-11-07 Michael Albinus diff --git a/src/nsterm.m b/src/nsterm.m index 190698db1fe..605baff00b2 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -3802,6 +3802,7 @@ ns_set_vertical_scroll_bar (struct window *window, int top, left, height, width, sb_width, sb_left; EmacsScroller *bar; BOOL fringe_extended_p; + BOOL update_p = YES; /* optimization; display engine sends WAY too many of these.. */ if (!NILP (window->vertical_scroll_bar)) @@ -3816,6 +3817,7 @@ ns_set_vertical_scroll_bar (struct window *window, } else view->scrollbarsNeedingUpdate--; + update_p = NO; } } @@ -3869,6 +3871,7 @@ ns_set_vertical_scroll_bar (struct window *window, bar = [[EmacsScroller alloc] initFrame: r window: win]; wset_vertical_scroll_bar (window, make_save_ptr (bar)); + update_p = YES; } else { @@ -3881,10 +3884,12 @@ ns_set_vertical_scroll_bar (struct window *window, if (oldRect.origin.x != r.origin.x) ns_clear_frame_area (f, sb_left, top, width, height); [bar setFrame: r]; + update_p = YES; } } - [bar setPosition: position portion: portion whole: whole]; + if (update_p) + [bar setPosition: position portion: portion whole: whole]; unblock_input (); } -- 2.11.4.GIT