@@ -156,47 +156,57 @@ cdef class PyBrowser:
156156 free(self .imageBuffer)
157157
158158 cpdef py_void SetClientCallback(self , py_string name, object callback):
159+ IF CEF_VERSION == 1 :
160+ self .SetClientCallback_CEF1(name, callback)
161+ ELIF CEF_VERSION == 3 :
162+ self .SetClientCallback_CEF3(name, callback)
163+
164+ cpdef py_void SetClientCallback_CEF1(self ,
165+ py_string name, object callback):
159166 if not self .allowedClientCallbacks:
160167 # CefLoadHandler.
161168 self .allowedClientCallbacks += [" OnLoadEnd" , " OnLoadError" ,
162169 " OnLoadStart" ]
163-
164170 # CefKeyboardHandler.
165171 self .allowedClientCallbacks += [" OnKeyEvent" ]
166-
167172 # CefV8ContextHandler.
168173 self .allowedClientCallbacks += [" OnContextCreated" ,
169174 " OnContextReleased" ," OnUncaughtException" ]
170-
171175 # CefRequestHandler.
172176 self .allowedClientCallbacks += [" OnBeforeBrowse" ,
173177 " OnBeforeResourceLoad" , " OnResourceRedirect" ,
174178 " OnResourceResponse" , " OnProtocolExecution" ,
175179 " GetDownloadHandler" , " GetAuthCredentials" ,
176180 " GetCookieManager" ]
177-
178181 # CefDisplayHandler.
179182 self .allowedClientCallbacks += [" OnAddressChange" ,
180183 " OnConsoleMessage" , " OnContentsSizeChange" ,
181184 " OnNavStateChange" , " OnStatusMessage" , " OnTitleChange" ,
182185 " OnTooltip" ]
183-
184186 # LifespanHandler.
185187 self .allowedClientCallbacks += [" DoClose" , " OnAfterCreated" ,
186188 " OnBeforeClose" , " RunModal" ]
187-
188189 # RenderHandler
189190 self .allowedClientCallbacks += [" GetViewRect" , " GetScreenRect" ,
190191 " GetScreenPoint" , " OnPopupShow" , " OnPopupSize" ,
191192 " OnPaint" , " OnCursorChange" ]
192-
193193 # DragHandler
194194 self .allowedClientCallbacks += [" OnDragStart" , " OnDragEnter" ]
195-
196195 if name not in self .allowedClientCallbacks:
197196 raise Exception (" Browser.SetClientCallback() failed: unknown "
198197 " callback: %s " % name)
198+ self .clientCallbacks[name] = callback
199199
200+ cpdef py_void SetClientCallback_CEF3(self ,
201+ py_string name, object callback):
202+ if not self .allowedClientCallbacks:
203+ # CefDisplayHandler.
204+ self .allowedClientCallbacks += [" OnLoadingStateChange" ,
205+ " OnAddressChange" , " OnTitleChange" , " OnTooltip" ,
206+ " OnStatusMessage" , " OnConsoleMessage" ]
207+ if name not in self .allowedClientCallbacks:
208+ raise Exception (" Browser.SetClientCallback() failed: unknown "
209+ " callback: %s " % name)
200210 self .clientCallbacks[name] = callback
201211
202212 cpdef py_void SetClientHandler(self , object clientHandler):
0 commit comments