xadh00m
19-08-2010 16:05:07
Hi,
Because I´m still not fixed if we should switch to Berkelium or still work with Awesomium I created a small patch for MyGUI to be able to use Awesomium 1.5.1 which contains some minor API changes (and is free for non-commercial use).
This patch is used against the tagged MyGUI3.0 version. I have not tested it thoroughly yet but the basic functionality seems to work fine...
xad
PS: Since the MyGUI team maintains the Berkelium and Awesomium plugin in their repository I would appreciate if they would update both plugins with the patches provided.
Because I´m still not fixed if we should switch to Berkelium or still work with Awesomium I created a small patch for MyGUI to be able to use Awesomium 1.5.1 which contains some minor API changes (and is free for non-commercial use).
Index: AwesomiumWidget.cpp
===================================================================
--- AwesomiumWidget.cpp (revision 3283)
+++ AwesomiumWidget.cpp (working copy)
@@ -162,7 +162,7 @@
}
#if defined(_WIN32)
- void AwesomiumWidget::onChangeCursor(const HCURSOR& cursor)
+ void AwesomiumWidget::onChangeCursor(Awesomium::WebView* caller, const HCURSOR& cursor)
{
static HCURSOR arrow_cursor = ::LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW));
static HCURSOR beam_cursor = ::LoadCursor(NULL, MAKEINTRESOURCE(IDC_IBEAM));
@@ -194,7 +194,7 @@
}
#endif
- void AwesomiumWidget::onChangeKeyboardFocus(bool isFocused)
+ void AwesomiumWidget::onChangeKeyboardFocus(Awesomium::WebView* caller, bool isFocused)
{
if (isFocused)
MyGUI::InputManager::getInstance().setKeyFocusWidget(this);
Index: AwesomiumWidget.h
===================================================================
--- AwesomiumWidget.h (revision 3283)
+++ AwesomiumWidget.h (working copy)
@@ -63,17 +63,19 @@
virtual void onKeySetFocus(MyGUI::Widget* _old);
// WebViewListener 1.0.8
- virtual void onBeginNavigation(const std::string& url, const std::wstring& frameName) { }
- virtual void onBeginLoading(const std::string& url, const std::wstring& frameName, int statusCode, const std::wstring& mimeType) { }
- virtual void onFinishLoading() { }
- virtual void onCallback(const std::string& name, const Awesomium::JSArguments& args) { }
- virtual void onReceiveTitle(const std::wstring& title, const std::wstring& frameName) { }
- virtual void onChangeTooltip(const std::wstring& tooltip) { }
+ virtual void onBeginNavigation(Awesomium::WebView* caller, const std::string& url, const std::wstring& frameName) { }
+ virtual void onBeginLoading(Awesomium::WebView* caller, const std::string& url, const std::wstring& frameName, int statusCode, const std::wstring& mimeType) { }
+ virtual void onFinishLoading(Awesomium::WebView* caller) { }
+ virtual void onCallback(Awesomium::WebView* caller, const std::wstring& objectName, const std::wstring& callbackName, const Awesomium::JSArguments& args) { }
+ virtual void onReceiveTitle(Awesomium::WebView* caller, const std::wstring& title, const std::wstring& frameName) { }
+ virtual void onChangeTooltip(Awesomium::WebView* caller, const std::wstring& tooltip) { }
+
#if defined(_WIN32)
- virtual void onChangeCursor(const HCURSOR& cursor);
+ virtual void onChangeCursor(Awesomium::WebView* caller, const HCURSOR& cursor);
#endif
- virtual void onChangeKeyboardFocus(bool isFocused);
- virtual void onChangeTargetURL(const std::string& url) { }
+ virtual void onChangeKeyboardFocus(Awesomium::WebView* caller, bool isFocused);
+ virtual void onChangeTargetURL(Awesomium::WebView* caller, const std::string& url) { }
+ virtual void onOpenExternalLink(Awesomium::WebView* caller, const std::string& url, const std::wstring& source) { }
private:
size_t mOldCursor;
Index: AwesomiumWidgetFactory.cpp
===================================================================
--- AwesomiumWidgetFactory.cpp (revision 3283)
+++ AwesomiumWidgetFactory.cpp (working copy)
@@ -9,6 +9,7 @@
#include "MyGUI_Gui.h"
#include "MyGUI_InputManager.h"
#include "MyGUI_FactoryManager.h"
+#include "WebKeyboardEvent.h"
namespace Awesomium
{
@@ -17,7 +18,7 @@
AwesomiumWidgetFactory::AwesomiumWidgetFactory() :
mKeyboardHook(0)
{
- msCore = new Awesomium::WebCore(Awesomium::LOG_VERBOSE);
+ msCore = new Awesomium::WebCore();
mKeyboardHook = new KeyboardHook(this);
MyGUI::FactoryManager::getInstance().registerFactory<Awesomium::AwesomiumWidget>("Widget");
@@ -50,7 +51,10 @@
{
AwesomiumWidget* awidget = widget->castType<AwesomiumWidget>(false);
if (awidget)
- awidget->getControl()->injectKeyboardEvent(hwnd, msg, wParam, lParam);
+ {
+ Awesomium::WebKeyboardEvent wke(msg, wParam, lParam);
+ awidget->getControl()->injectKeyboardEvent(wke);
+ }
}
}
This patch is used against the tagged MyGUI3.0 version. I have not tested it thoroughly yet but the basic functionality seems to work fine...
xad
PS: Since the MyGUI team maintains the Berkelium and Awesomium plugin in their repository I would appreciate if they would update both plugins with the patches provided.