Ultralight icon indicating copy to clipboard operation
Ultralight copied to clipboard

Application crashes when using FireMouseEvent (Plattform: Windows)

Open TheNilusss opened this issue 3 years ago • 3 comments

When i use a FireMouseEvent like this:

MouseEvent evt; evt.type = ultralight::MouseEvent::kType_MouseDown; evt.x = curserPos.x; evt.y = curserPos.y; evt.button = ultralight::MouseEvent::kButton_Left; m_view->FireMouseEvent(evt);

The application crashes when i click on Text or empty space. When i click on a button everything works fine. The Nullpointerexception comes from WebCore.dll

The crashes comes only when i use ultralight::MouseEvent::kButton_Left;

This is so essential for the usage of this framework, pls fix this.

Plattform: Windows Usage: Integration in my Game

Here is my Example HTML: "

Hoverable Buttons

Use the :hover selector to change the style of the button when you move the mouse over it.

Tip: Use the transition-duration property to determine the speed of the "hover" effect:

<button class="button button1">Green<button class="button button2">Blue<button class="button button3">Red<button class="button button4">Gray<button class="button button5">Black"

TheNilusss avatar Sep 14 '22 20:09 TheNilusss

I'll need more information to reproduce-- is this with latest bins (eg, v1.3 at these links) or is this with v1.2?

Also, please repaste your code as a GitHub Gist and copy the link here.

adamjs avatar Sep 14 '22 20:09 adamjs

I use this version: ultralight-sdk-1.2.1-win-x64

The commands are executed in the following order:

Variable Names:

RefPtr<Renderer> m_renderer;
RefPtr<View> m_view;

Config

static void Init() {
	Config config;
	config.resource_path = "./resources/";
	config.use_gpu_renderer = false;
	config.device_scale = 1.0;
	Platform::instance().set_config(config);
}

static void InitPlatform() {
	Platform::instance().set_font_loader(GetPlatformFontLoader());
	Platform::instance().set_file_system(GetPlatformFileSystem("."));
	Platform::instance().set_logger(GetDefaultLogger("ultralight.log"));
}

1 Initialisation

	Init();
	InitPlatform();
	
	m_renderer = Renderer::Create();
	m_view = m_renderer->CreateView(2560, 1440, true,nullptr);
	m_view->LoadHTML("<html><head><style>.button {background-color: #4CAF50; /* Green */border: none;color: white;padding: 16px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px 2px;transition-duration: 0.4s;cursor: pointer;}.button1 {background-color: white; color: black; border: 2px solid #4CAF50;}.button1:hover {background-color: #4CAF50;color: white;}.button2 {background-color: white; color: black; border: 2px solid #008CBA;}.button2:hover {background-color: #008CBA;color: white;}.button3 {background-color: white; color: black; border: 2px solid #f44336;}.button3:hover {background-color: #f44336;color: white;}.button4 {background-color: white;color: black;border: 2px solid #e7e7e7;}.button4:hover {background-color: #e7e7e7;}.button5 {background-color: white;color: black;border: 2px solid #555555;}.button5:hover {background-color: #555555;color: white;}.button5:active {box-shadow: box-shadow:7px 6px 28px 1px rgba(0, 0, 0, 0.24);transform: translateY(4px);}</style></head><body><h2>Hoverable Buttons</h2><p>Use the :hover selector to change the style of the button when you move the mouse over it.</p><p><strong>Tip:</strong> Use the transition-duration property to determine the speed of the \"hover\" effect:</p><button class=\"button button1\">Green</button><button class=\"button button2\">Blue</button><button class=\"button button3\">Red</button><button class=\"button button4\">Gray</button><button class=\"button button5\">Black</button></body></html>");
	m_view->Focus();

2 Game Loop: Each Frame

2.1 Handle

	MouseEvent evt;
	evt.type = ultralight::MouseEvent::kType_MouseMoved;
	evt.x = m_pmanagerGUI->getCurser()->getguipos().x;
	evt.y = m_pmanagerGUI->getCurser()->getguipos().y;
	evt.button = ultralight::MouseEvent::kButton_Left;
	m_view->FireMouseEvent(evt);

	m_renderer->Update();

2.2 Render

	m_renderer->Render();

Graphics and animations works fine.

TheNilusss avatar Sep 14 '22 21:09 TheNilusss

Typical symptom of missing resources/icudt67l.dat, check if resources folder contain this file. If it does, but still is considered missing, remember that "." in GetPlatformFileSystem call is relative to current working directory, not MyApplication.exe the best way (not the best one) would be to use GetPlatformFileSystem(Path.GetDirectory(GetThisExecutablePath())) instead, but you'll have to find ways to get executable's path and it's parent directory by yourself (I'm not in the state of searching it by myself)

"the best" way would be to implement custom filesystem that reads embedded to .exe data.

SupinePandora43 avatar Sep 16 '22 17:09 SupinePandora43