]> git.eshelyaron.com Git - emacs.git/commitdiff
* nsterm.h (EmacsScroller): judge returns bool.
authorJan Djärv <jan.h.d@swipnet.se>
Sun, 9 Nov 2014 13:47:02 +0000 (14:47 +0100)
committerJan Djärv <jan.h.d@swipnet.se>
Sun, 9 Nov 2014 13:47:02 +0000 (14:47 +0100)
* 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
src/nsterm.h
src/nsterm.m

index 7b595b5f9e9fcffc1fc268570f76bdf4846cee5e..0f9ef11c9d7ec73057ad68f56cc20d3dacb94ba7 100644 (file)
@@ -1,3 +1,12 @@
+2014-11-09  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * 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  <jan.h.d@swipnet.se>
 
        * nsterm.m (init): Replace OSX 10.9 check with IMPL_COCOA.
index cc5ec0d014bbbd1daf4a6eb3ba3d8a0f159213ae..1c3fda82649ef542fbe82244cda9ee16f519ee13 100644 (file)
@@ -422,7 +422,7 @@ typedef float EmacsCGFloat;
 - repeatScroll: (NSTimer *)sender;
 - condemn;
 - reprieve;
-- judge;
+- (bool)judge;
 @end
 
 
index 605baff00b257083b2d5614ca283516b3517dc84..9415922c6c954623d8da9a3661f78d1be42f2d22 100644 (file)
@@ -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;
 }