void EwkView::handleEvasObjectCalculate(Evas_Object* evasObject) { Ewk_View_Smart_Data* smartData = toSmartData(evasObject); ASSERT(smartData); EwkView* view = toEwkView(smartData); ASSERT(view); smartData->changed.any = false; Evas_Coord x, y, width, height; evas_object_geometry_get(evasObject, &x, &y, &width, &height); if (smartData->changed.position) { smartData->changed.position = false; smartData->view.x = x; smartData->view.y = y; evas_object_move(smartData->image, x, y); } if (smartData->changed.size) { smartData->changed.size = false; smartData->view.w = width; smartData->view.h = height; if (view->page()->drawingArea()) view->page()->drawingArea()->setSize(IntSize(width, height), IntSize()); view->setNeedsSurfaceResize(); view->pageClient()->updateViewportSize(); } }
WKPageRef EwkView::createNewPage(PassRefPtr<EwkUrlRequest>, WKDictionaryRef windowFeatures) { Ewk_View_Smart_Data* sd = smartData(); ASSERT(sd->api); if (!sd->api->window_create) return 0; WKPageRef wkPageRef = wkPage(); RefPtr<EwkWindowFeatures> ewkWindowFeatures = EwkWindowFeatures::create(windowFeatures, this); WKRetainPtr<WKPageConfigurationRef> configuration = adoptWK(WKPageCopyPageConfiguration(wkPageRef)); WKPageConfigurationSetRelatedPage(configuration.get(), wkPageRef); Ref<EwkViewConfiguration> ewkViewConfiguration = EwkViewConfiguration::create(configuration.get()); Evas_Object* newEwkView = sd->api->window_create(sd, &ewkViewConfiguration.get(), ewkWindowFeatures.get()); if (!newEwkView) return 0; EwkView* newViewImpl = toEwkView(newEwkView); ASSERT(newViewImpl); newViewImpl->m_windowFeatures = ewkWindowFeatures; return static_cast<WKPageRef>(WKRetain(newViewImpl->page())); }
Eina_Bool EwkView::handleEwkViewKeyDown(Ewk_View_Smart_Data* smartData, const Evas_Event_Key_Down* downEvent) { bool isFiltered = false; EwkView* self = toEwkView(smartData); if (InputMethodContextEfl* inputMethodContext = self->inputMethodContext()) inputMethodContext->handleKeyDownEvent(downEvent, &isFiltered); self->page()->handleKeyboardEvent(NativeWebKeyboardEvent(downEvent, isFiltered)); return true; }
Eina_Bool EwkView::handleEwkViewMouseUp(Ewk_View_Smart_Data* smartData, const Evas_Event_Mouse_Up* upEvent) { EwkView* self = toEwkView(smartData); self->page()->handleMouseEvent(NativeWebMouseEvent(upEvent, self->webView()->transformFromScene(), self->transformToScreen())); if (InputMethodContextEfl* inputMethodContext = self->inputMethodContext()) inputMethodContext->handleMouseUpEvent(upEvent); return true; }
WKPageRef EwkView::createNewPage(PassRefPtr<EwkUrlRequest>, WKDictionaryRef windowFeatures) { Ewk_View_Smart_Data* sd = smartData(); ASSERT(sd->api); if (!sd->api->window_create) return 0; RefPtr<EwkWindowFeatures> ewkWindowFeatures = EwkWindowFeatures::create(windowFeatures, this); Evas_Object* newEwkView = sd->api->window_create(sd, ewkWindowFeatures.get()); if (!newEwkView) return 0; EwkView* newViewImpl = toEwkView(newEwkView); ASSERT(newViewImpl); newViewImpl->m_windowFeatures = ewkWindowFeatures; return static_cast<WKPageRef>(WKRetain(newViewImpl->page())); }
Eina_Bool EwkView::handleEwkViewMouseMove(Ewk_View_Smart_Data* smartData, const Evas_Event_Mouse_Move* moveEvent) { EwkView* self = toEwkView(smartData); self->page()->handleMouseEvent(NativeWebMouseEvent(moveEvent, self->webView()->transformFromScene(), self->transformToScreen())); return true; }
Eina_Bool EwkView::handleEwkViewMouseWheel(Ewk_View_Smart_Data* smartData, const Evas_Event_Mouse_Wheel* wheelEvent) { EwkView* self = toEwkView(smartData); self->page()->handleWheelEvent(NativeWebWheelEvent(wheelEvent, self->transformFromScene(), self->transformToScreen())); return true; }