From d29658759a1343995f0d8b163d7fe445dd904b81 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 9 Nov 2014 14:47:02 +0100 Subject: [PATCH] * nsterm.h (EmacsScroller): judge returns bool. * nsterm.m (ns_set_vertical_scroll_bar): Release bar. (ns_judge_scroll_bars): Only set removed if judge returns true. (judge): Returns bool == condemned. Remove self from window. (setPosition:portion:whole:): Remove raise SIGIO. Fixes: debbugs:18757 --- src/ChangeLog | 9 +++++++++ src/nsterm.h | 2 +- src/nsterm.m | 18 +++++++++--------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 7b595b5f9e9..0f9ef11c9d7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2014-11-09 Jan Djärv + + * nsterm.h (EmacsScroller): judge returns bool. + + * nsterm.m (ns_set_vertical_scroll_bar): Release bar. + (ns_judge_scroll_bars): Only set removed if judge returns true. + (judge): Returns bool == condemned. Remove self from window. + (setPosition:portion:whole:): Remove raise SIGIO (Bug#18757). + 2014-11-08 Jan Djärv * nsterm.m (init): Replace OSX 10.9 check with IMPL_COCOA. diff --git a/src/nsterm.h b/src/nsterm.h index cc5ec0d014b..1c3fda82649 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -422,7 +422,7 @@ typedef float EmacsCGFloat; - repeatScroll: (NSTimer *)sender; - condemn; - reprieve; -- judge; +- (bool)judge; @end diff --git a/src/nsterm.m b/src/nsterm.m index 605baff00b2..9415922c6c9 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -3853,6 +3853,7 @@ ns_set_vertical_scroll_bar (struct window *window, bar = XNS_SCROLL_BAR (window->vertical_scroll_bar); [bar removeFromSuperview]; wset_vertical_scroll_bar (window, Qnil); + [bar release]; } ns_clear_frame_area (f, sb_left, top, width, height); unblock_input (); @@ -3951,8 +3952,8 @@ ns_judge_scroll_bars (struct frame *f) { view = [subviews objectAtIndex: i]; if (![view isKindOfClass: [EmacsScroller class]]) continue; - [view judge]; - removed = YES; + if ([view judge]) + removed = YES; } if (removed) @@ -7189,9 +7190,10 @@ if (cols > 0 && rows > 0) } -- judge +-(bool)judge { NSTRACE (judge); + bool ret = condemned; if (condemned) { EmacsView *view; @@ -7200,11 +7202,14 @@ if (cols > 0 && rows > 0) view = (EmacsView *)FRAME_NS_VIEW (frame); if (view != nil) view->scrollbarsNeedingUpdate++; + if (window) + wset_vertical_scroll_bar (window, Qnil); + window = 0; [self removeFromSuperview]; [self release]; unblock_input (); } - return self; + return ret; } @@ -7259,11 +7264,6 @@ if (cols > 0 && rows > 0) #endif } - /* Events may come here even if the event loop is not running. - If we don't enter the event loop, the scroll bar will not update. - So send SIGIO to ourselves. */ - if (apploopnr == 0) raise (SIGIO); - return self; } -- 2.39.5