From 260e98849d27ffd980628cce322e809352b6ea89 2017-01-12 21:06:50 From: Matthias Bussonnier Date: 2017-01-12 21:06:50 Subject: [PATCH] Always run the OS X loop even if no windows. Otherwise this can trigger infinite Python-Icon-In-Dock bouncing. See #10137. I will guess that this is because application on OS X may not have windows and still need to process events. It may be that an alternative is to run the loop only once the first time, but I'm unsure. at_least_once = False def inputhook(context): """Inputhook for Cocoa (NSApp)""" NSApp = _NSApp() window_count = msg( msg(NSApp, n('windows')), n('count') ) if not window_count and not at_least_once: at_least_once = True return _stop_on_read(context.fileno()) msg(NSApp, n('run')) if not _triggered.is_set(): # app closed without firing callback, # probably due to last window being closed. # Run the loop manually in this case, # since there may be events still to process (#9734) CoreFoundation.CFRunLoopRun() Closes #10137 --- diff --git a/IPython/terminal/pt_inputhooks/osx.py b/IPython/terminal/pt_inputhooks/osx.py index efa8854..53f4e38 100644 --- a/IPython/terminal/pt_inputhooks/osx.py +++ b/IPython/terminal/pt_inputhooks/osx.py @@ -127,12 +127,6 @@ def _stop_on_read(fd): def inputhook(context): """Inputhook for Cocoa (NSApp)""" NSApp = _NSApp() - window_count = msg( - msg(NSApp, n('windows')), - n('count') - ) - if not window_count: - return _stop_on_read(context.fileno()) msg(NSApp, n('run')) if not _triggered.is_set():