Jules - here are some suggested fixes for some niggles I have with the WebBrowserComponent.
Niggle 1
On Windows the ActiveX browser won't take the focus if you give the focus to it's containing component. This means that you can't mousewheel to scroll unless you click inside the browser first. This can be sorted by adding a focusGained method to the pimpl and executing the following:
// Activates UI of ActiveX browser control IOleObject* oleObject = (IOleObject*)browser->queryInterface (&__uuidof (IOleObject)); IOleWindow* oleWindow = (IOleWindow*)browser->queryInterface (&__uuidof (IOleWindow)); IOleClientSite* pActiveSite = nullptr; // Assign nullptr to avoid warning if (oleObject != nullptr && oleWindow != nullptr && oleObject->GetClientSite (&pActiveSite) == S_OK) { HWND hwnd; oleWindow->GetWindow (&hwnd); oleObject->DoVerb (OLEIVERB_UIACTIVATE, NULL, pActiveSite, 0, hwnd, NULL); } if (pActiveSite != nullptr) pActiveSite->Release (); if (oleObject != nullptr) oleObject->Release (); if (oleWindow != nullptr) oleWindow->Release ();
This doesn't seem to be an issue on OS X, and iOS/Android require touching to scroll so it shouldn't be a problem there either.
Niggle 2
The other inconsistency is that on Windows you can execute javascript code with the goToUrl() method but you can't do this on Mac. The attached .mm file uses WebView:stringByEvaluatingJavaScriptFromString to sort this out. I've tested this on OS X but not on iOS.