WebView* createPlatformWebView(void) { WebView* webView = WebView::createInstance(); SDL_Rect rect = { 0, 0, 800, 600 }; s_screen = createSDLWindow(rect.w, rect.h); webView->setViewWindow(s_screen); webView->initWithFrame(rect, NULL, NULL); s_webView = webView; return webView; }
void waitEventUntilLoaded() { SDL_Event event; SDL_GetEventFilter(); SDL_Surface* scr; bool quit = false; while (!quit) { if (SDL_PollEvent(&event) != 0) { switch (event.type) { case SDL_ACTIVEEVENT: if(event.active.gain == 1 && event.active.state == 2) { SDL_Rect rect = {0, 0, 800, 600}; s_webView->addToDirtyRegion(rect); } SDL_ExposeEvent ev; s_webView->onExpose(ev); break; case SDL_KEYDOWN: s_webView->onKeyDown(event.key); break; case SDL_KEYUP: s_webView->onKeyUp(event.key); break; case SDL_MOUSEMOTION: s_webView->onMouseMotion(event.motion); break; case SDL_MOUSEBUTTONDOWN: if(event.button.button == SDL_BUTTON_WHEELUP || event.button.button == SDL_BUTTON_WHEELDOWN) s_webView->onScroll(event.button); else s_webView->onMouseButtonDown(event.button); break; case SDL_MOUSEBUTTONUP: if(event.button.button == SDL_BUTTON_WHEELUP || event.button.button == SDL_BUTTON_WHEELDOWN) { s_webView->onScroll(event.button); } else s_webView->onMouseButtonUp(event.button); break; case SDL_VIDEORESIZE: scr = createSDLWindow(event.resize.w, event.resize.h); s_webView->setViewWindow(scr); s_webView->onResize(event.resize); SDL_FreeSurface(s_screen); s_screen = scr; break; case SDL_VIDEOEXPOSE: s_webView->onExpose(event.expose); break; case SDL_USEREVENT: s_webView->onUserEvent(event.user); break; case SDL_SYSWMEVENT: break; case SDL_QUIT: quit = true; break; default: ; } } else { s_webView->fireWebKitThreadEvents(); s_webView->fireWebKitTimerEvents(); } quit = !s_webView->isLoading(); } }
void WindowService::initialize() { m_sdlWindow = createSDLWindow(); m_sdlGLContext = createSDLGLContext(); }