add patch
[framework/osp/web.git] / src / controls / FWebCtrl_Web.cpp
index 74782d2..09b71aa 100755 (executable)
@@ -42,6 +42,7 @@
 #include <FUi_CoordinateSystemUtils.h>
 #include <FUi_AccessibilityContainer.h>
 #include <FUi_AccessibilityElement.h>
+#include <FUi_UiEventManager.h>
 #include <FUi_IAccessibilityFocusHandler.h>
 #include <FUi_IAccessibilityListener.h>
 #include <FUi_Math.h>
@@ -342,6 +343,7 @@ _Web::_Web(void)
        , __edgeType(WEB_EDGE_NONE)
        , __pTextElement(null)
        , __previousTouchedPosition(0.0f, 0.0f)
+       , __isFullScreenEntered(false)
 {
        SetBackgroundColor(Color(0, 0, 0, 0));
 }
@@ -349,6 +351,11 @@ _Web::_Web(void)
 
 _Web::~_Web(void)
 {
+       _UiEventManager* pManager = _UiEventManager::GetInstance();
+       SysAssertf(pManager, "Failed to get ui evnet manager.");
+
+       pManager->RemoveKeyEventListener(*this);
+
        RemoveGestureListener();
 }
 
@@ -374,6 +381,11 @@ _Web::CreateWebN(void)
        r = pWeb->InitializeGestureStates();
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
 
+       _UiEventManager* pManager = _UiEventManager::GetInstance();
+       SysAssertf(pManager, "Failed to get ui evnet manager.");
+
+       pManager->AddKeyEventListener(*pWeb.get());
+
        return pWeb.release();
 }
 
@@ -694,6 +706,8 @@ _Web::SetEdgeReachedEvent(_WebEdgeType type)
 bool
 _Web::OnTouchPressed(const _Control& source, const _TouchInfo& touchInfo)
 {
+       evas_object_focus_set(GetWebNativeNode(), EINA_TRUE);
+
        if (__pEflWebkit.get())
        {
                __edgeType = WEB_EDGE_NONE;
@@ -1142,4 +1156,30 @@ _Web::GetEvasTouchState(TouchStatus touchStatus)
 }
 
 
+void
+_Web::SetFullScreenEntered(bool isFullScreenEntered)
+{
+       __isFullScreenEntered = isFullScreenEntered;
+}
+
+
+bool
+_Web::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
+{
+       if (__isFullScreenEntered)
+       {
+               if (keyInfo.GetKeyCode() == _KEY_ESC || keyInfo.GetKeyCode() == _KEY_BACK)
+               {
+                       __isFullScreenEntered = false;
+
+                       ewk_view_fullscreen_exit(GetWebNativeNode());
+
+                       return true;
+               }
+       }
+
+       return false;
+}
+
+
 }}} // Tizen::Web::Controls