@@ -369,13 +369,38 @@ def OnPreKeyEvent(self, browser, event, eventHandle,
369369 print ("[wxpython.py] KeyboardHandler::OnPreKeyEvent()" )
370370
371371 def OnKeyEvent (self , browser , event , eventHandle ):
372+ if event ["type" ] == cefpython .KEYEVENT_KEYUP :
373+ # OnKeyEvent is called twice for F5/Esc keys, with event
374+ # type KEYEVENT_RAWKEYDOWN and KEYEVENT_KEYUP.
375+ # Normal characters a-z should have KEYEVENT_CHAR.
376+ return False
372377 print ("[wxpython.py] KeyboardHandler::OnKeyEvent()" )
373- print (" native_key_code = %s" % event ["native_key_code" ])
378+ print (" type=%s" % event ["type" ])
379+ print (" modifiers=%s" % event ["modifiers" ])
380+ print (" windows_key_code=%s" % event ["windows_key_code" ])
381+ print (" native_key_code=%s" % event ["native_key_code" ])
382+ print (" is_system_key=%s" % event ["is_system_key" ])
383+ print (" character=%s" % event ["character" ])
384+ print (" unmodified_character=%s" % event ["unmodified_character" ])
385+ print (" focus_on_editable_field=%s" \
386+ % event ["focus_on_editable_field" ])
374387 if platform .system () == "Linux" :
375- # F5 = 71
388+ # F5
376389 if event ["native_key_code" ] == 71 :
377- print ("[wxpython.py] F5 pressed! Reloading page.." )
390+ print ("[wxpython.py] F5 pressed, calling" \
391+ " browser.ReloadIgnoreCache()" )
378392 browser .ReloadIgnoreCache ()
393+ return True
394+ # Escape
395+ if event ["native_key_code" ] == 9 :
396+ print ("[wxpython.py] Esc pressed, calling browser.StopLoad()" )
397+ browser .StopLoad ()
398+ return True
399+ elif platform .system () == "Windows" :
400+ # F5 todo
401+ # Escape todo
402+ pass
403+ return False
379404
380405 # -------------------------------------------------------------------------
381406 # RequestHandler
@@ -522,6 +547,13 @@ def OnLoadError(self, browser, frame, errorCode, errorTextList, failedUrl):
522547 print (" error code = %s" % errorCode )
523548 print (" error text = %s" % errorTextList [0 ])
524549 print (" failed url = %s" % failedUrl )
550+ # Handle ERR_ABORTED error code, to handle the following cases:
551+ # 1. Esc key was pressed which calls browser.StopLoad() in OnKeyEvent
552+ # 2. Download of a file was aborted
553+ if errorCode == cefpython .ERR_ABORTED :
554+ print ("[wxpython.py] LoadHandler::OnLoadError(): Ignoring load" \
555+ " error: Esc was pressed or file download was aborted" )
556+ return ;
525557 customErrorMessage = "My custom error message!"
526558 frame .LoadUrl ("data:text/html,%s" % customErrorMessage )
527559
@@ -656,7 +688,10 @@ def GetSources():
656688 # to work. It affects renderer processes, when this option
657689 # is set to True. It will force a separate renderer process
658690 # for each browser created using CreateBrowserSync.
659- "unique_request_context_per_browser" : True
691+ "unique_request_context_per_browser" : True ,
692+ # Downloads are handled automatically. A default SaveAs file
693+ # dialog provided by OS will be displayed.
694+ "downloads_enabled" : True ,
660695 }
661696
662697 # Browser settings. You may have different settings for each
0 commit comments