##// END OF EJS Templates
Always run the OS X loop even if no windows....
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

File last commit:

r21934:c0fffd17
r23167:260e9884
Show More
gtk3.py
12 lines | 255 B | text/x-python | PythonLexer
"""prompt_toolkit input hook for GTK 3
"""
from gi.repository import Gtk, GLib
def _main_quit(*args, **kwargs):
Gtk.main_quit()
return False
def inputhook(context):
GLib.io_add_watch(context.fileno(), GLib.IO_IN, _main_quit)
Gtk.main()