Disable shadow effect on webview scrolling
authorYunchan Cho <yunchan.cho@samsung.com>
Sat, 22 Jun 2013 03:45:17 +0000 (12:45 +0900)
committerYunchan Cho <yunchan.cho@samsung.com>
Sat, 22 Jun 2013 04:21:02 +0000 (13:21 +0900)
[Issue#] DCM-2010
[Problem] shadow effect on webview is display as default by webkit
[Cause] Recently, webkit has applied shadow effect to every webview as default
[Solution] For this, webkit provides new API to disable shadow effect.
           AppBox plugin lets shadow effect be diabled using the following webkit API as default
           EAPI Eina_Bool ewk_settings_edge_effect_enabled_set(Ewk_Settings* settings, Eina_Bool enable)

Change-Id: Iea8a1dc8985b598025d494580744b161ed031f55

src/Plugin/AppBoxPlugin/AppBoxRenderView.cpp
src/Plugin/AppBoxPlugin/AppBoxRenderView.h

index 4069f0a..4fb908a 100644 (file)
@@ -25,6 +25,7 @@
 #include <Ecore.h>
 #include <ewk_view.h>
 #include <ewk_context.h>
+#include <ewk_settings.h>
 #include <livebox-service.h>
 #include <i_runnable_widget_object.h>
 #include <core_module.h>
@@ -166,10 +167,8 @@ AppBoxRenderView::WrtCorePtr AppBoxRenderView::createWrtCore(
     cbs->webCrash = DPL::MakeDelegate(this, &AppBoxRenderView::crashWebProcessCallback);
     wrt->SetUserDelegates(cbs);
 
-    // To support transparent background
-    evas_object_color_set(wrt->GetCurrentWebview(), 0, 0, 0, 0);
-    //evas_object_layer_set(wrt->GetCurrentWebview(), EVAS_LAYER_MAX);
-
+    // set basic webview setting
+    setWebViewBasicSetting(wrt->GetCurrentWebview());
     // To know starting point for updating buffer
     evas_object_smart_callback_add(
             wrt->GetCurrentWebview(),
@@ -342,7 +341,6 @@ Evas_Object* AppBoxRenderView::getCurrentSnapShot()
     LogD("enter");
     clearSnapShot();
     m_snapshot = m_renderBuffer->getSnapshot();
-    //evas_object_layer_set(m_snapshot, EVAS_LAYER_MAX);
 
     return m_snapshot;
 }
@@ -351,7 +349,6 @@ void AppBoxRenderView::clearSnapShot()
 {
     LogD("enter");
     if (m_snapshot) {
-        //evas_object_layer_set(m_snapshot, EVAS_LAYER_MIN);
         evas_object_del(m_snapshot);
         m_snapshot = NULL;
     }
@@ -402,6 +399,21 @@ void AppBoxRenderView::stopRenderBox()
     }
 }
 
+void AppBoxRenderView::setWebViewBasicSetting(Evas_Object* webview)
+{
+    LogD("enter");
+
+    if (!webview) {
+        return;
+    }
+    Ewk_Settings* setting = ewk_view_settings_get(webview);
+    // disable shadow effect on scrolling
+    ewk_settings_edge_effect_enabled_set(setting, EINA_FALSE);
+    // To support transparent background
+    evas_object_color_set(webview, 0, 0, 0, 0);
+    ewk_view_visibility_set(webview, EINA_TRUE);
+}
+
 Eina_Bool AppBoxRenderView::fireRenderTimerCallback(void* data)
 {
     LogD("enter");
@@ -485,9 +497,6 @@ void AppBoxRenderView::createWindowAfterCallback(Evas_Object* parent, Evas_Objec
 {
     LogD("enter");
 
-    // To support transparent background
-    evas_object_color_set(child, 0, 0, 0, 0);
-
     if (m_pdHelper) {
         Evas* parentCanvas = evas_object_evas_get(parent);
         Evas* childCanvas = evas_object_evas_get(child);
@@ -501,7 +510,7 @@ void AppBoxRenderView::createWindowAfterCallback(Evas_Object* parent, Evas_Objec
         }
     }
 
-    ewk_view_visibility_set(child, EINA_TRUE);
+    setWebViewBasicSetting(child);
     evas_object_show(child);
 }
 
index 2194d98..8a36821 100644 (file)
@@ -64,6 +64,7 @@ class AppBoxRenderView: public IRenderView {
 
         WrtCorePtr createWrtCore(
                 std::string& startUrl, Evas_Object* win, EwkContextPtr ewkContext);
+        void setWebViewBasicSetting(Evas_Object* webview);
         void destroyWrtCore(WrtCorePtr wrt);
         void destroyBoxWrtCore();
         void destroyPdWrtCore();