Revert "[Workaround] Dummy button that fixes all focus issues on webview" 74/77474/2
authorHye Kyoung Hwang <cookie@samsung.com>
Thu, 30 Jun 2016 02:34:13 +0000 (19:34 -0700)
committerHye Kyoung Hwang <cookie@samsung.com>
Thu, 30 Jun 2016 02:34:16 +0000 (19:34 -0700)
This reverts commit 18fe7f55756c60d67ce993754b7c2ae24e91d364.

Change-Id: If2d019986b410547a4da6b1a2be9b17a538309a0

core/AbstractWebEngine/AbstractWebEngine.h
services/SimpleUI/SimpleUI.cpp
services/WebEngineService/WebEngineService.cpp
services/WebEngineService/WebEngineService.h
services/WebEngineService/WebView.cpp
services/WebEngineService/WebView.h
services/WebPageUI/WebPageUI.cpp
services/WebPageUI/WebPageUI.h

index 5bce6330d75a07ea338576a351d3848032dc6fb4..9ad5f6dd4a7fb7f2100a02b151bd63579879a67d 100644 (file)
@@ -492,6 +492,11 @@ public:
      */
     boost::signals2::signal<void (basic_webengine::WebConfirmationPtr)> confirmationRequest;
 
+    /**
+     * Web Engine area clicked
+     */
+    boost::signals2::signal<void ()> webViewClicked;
+
     /**
      * All links to RSS/Atom channels were gathered from webpage.
      */
index 24aabdb8084395ee67b39bfa03c9309f422c3c80..7da0394f1bc571ae1a55a0d658d69678b4db0d45 100644 (file)
@@ -319,8 +319,6 @@ void SimpleUI::connectUISignals()
     m_webPageUI->showQuickAccess.connect(boost::bind(&SimpleUI::showQuickAccess, this));
     m_webPageUI->hideQuickAccess.connect(boost::bind(&QuickAccess::hideUI, m_quickAccess));
     m_webPageUI->bookmarkManagerClicked.connect(boost::bind(&SimpleUI::showBookmarkManagerUI, this));
-    m_webPageUI->focusWebView.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine<Evas_Object>::setFocus, m_webEngine.get()));
-    m_webPageUI->unfocusWebView.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine<Evas_Object>::clearFocus, m_webEngine.get()));
 #if PROFILE_MOBILE
     m_webPageUI->hideMoreMenu.connect(boost::bind(&SimpleUI::closeMoreMenu, this));
     m_webPageUI->getURIEntry().mobileEntryFocused.connect(boost::bind(&WebPageUI::mobileEntryFocused, m_webPageUI));
@@ -549,6 +547,7 @@ void SimpleUI::connectModelSignals()
     m_webEngine->uriChanged.connect(boost::bind(&SimpleUI::webEngineURLChanged, this, _1));
     m_webEngine->uriChanged.connect(boost::bind(&URIEntry::changeUri, &m_webPageUI->getURIEntry(), _1));
     m_webEngine->downloadStarted.connect(boost::bind(&SimpleUI::downloadStarted, this, _1));
+    m_webEngine->webViewClicked.connect(boost::bind(&URIEntry::clearFocus, &m_webPageUI->getURIEntry()));
     m_webEngine->backwardEnableChanged.connect(boost::bind(&WebPageUI::setBackButtonEnabled, m_webPageUI.get(), _1));
     m_webEngine->forwardEnableChanged.connect(boost::bind(&WebPageUI::setForwardButtonEnabled, m_webPageUI.get(), _1));
     m_webEngine->loadStarted.connect(boost::bind(&SimpleUI::loadStarted, this));
index 29a021fd456897f332d64eae82cc473c5d352273..39386c0de04fe84e6e2ed9fe74578f432b578766 100644 (file)
@@ -119,6 +119,7 @@ void WebEngineService::connectSignals(std::shared_ptr<WebView> webView)
     webView->forwardEnableChanged.connect(boost::bind(&WebEngineService::_forwardEnableChanged, this, _1));
     webView->backwardEnableChanged.connect(boost::bind(&WebEngineService::_backwardEnableChanged, this, _1));
     webView->confirmationRequest.connect(boost::bind(&WebEngineService::_confirmationRequest, this, _1));
+    webView->ewkViewClicked.connect(boost::bind(&WebEngineService::webViewClicked, this));
     webView->IMEStateChanged.connect(boost::bind(&WebEngineService::_IMEStateChanged, this, _1));
     webView->snapshotCaptured.connect(boost::bind(&WebEngineService::_snapshotCaptured, this, _1, _2));
     webView->redirectedWebPage.connect(boost::bind(&WebEngineService::_redirectedWebPage, this, _1, _2));
@@ -145,6 +146,7 @@ void WebEngineService::disconnectSignals(std::shared_ptr<WebView> webView)
     webView->forwardEnableChanged.disconnect(boost::bind(&WebEngineService::_forwardEnableChanged, this, _1));
     webView->backwardEnableChanged.disconnect(boost::bind(&WebEngineService::_backwardEnableChanged, this, _1));
     webView->confirmationRequest.disconnect(boost::bind(&WebEngineService::_confirmationRequest, this, _1));
+    webView->ewkViewClicked.disconnect(boost::bind(&WebEngineService::webViewClicked, this));
     webView->IMEStateChanged.disconnect(boost::bind(&WebEngineService::_IMEStateChanged, this, _1));
     webView->redirectedWebPage.disconnect(boost::bind(&WebEngineService::_redirectedWebPage, this, _1, _2));
 #if PROFILE_MOBILE
@@ -669,6 +671,11 @@ std::shared_ptr<tizen_browser::tools::BrowserImage> WebEngineService::getFavicon
         return std::make_shared<tizen_browser::tools::BrowserImage>();
 }
 
+void WebEngineService::webViewClicked()
+{
+    AbstractWebEngine::webViewClicked();
+}
+
 #if PROFILE_MOBILE
 void WebEngineService::setWebViewSettings(std::shared_ptr<WebView> webView) {
     webView->ewkSettingsAutoFittingSet(m_settings[WebEngineSettings::PAGE_OVERVIEW]);
index f673a669cfc89ff7c8de4cb5ae9b0eefff4d2884..3da197a4ea315d57be3a585573d420f6106ee540 100644 (file)
@@ -236,6 +236,7 @@ private:
     void _IMEStateChanged(bool);
     void _snapshotCaptured(std::shared_ptr<tizen_browser::tools::BrowserImage> snapshot, tools::SnapshotType snapshot_type);
     void _redirectedWebPage(const std::string& oldUrl, const std::string& newUrl);
+    void webViewClicked();
     void _setCertificatePem(const std::string& uri, const std::string& pem);
     void _setWrongCertificatePem(const std::string& uri, const std::string& pem);
 #if PROFILE_MOBILE
index d696605e8223b99834e2689545e69a259ce1920d..081f5c50210280960e4b355ba62c53a9f42ae105 100755 (executable)
@@ -229,6 +229,7 @@ void WebView::registerCallbacks()
     evas_object_smart_callback_add(m_ewkView, "request,certificate,confirm", __requestCertificationConfirm, this);
     evas_object_smart_callback_add(m_ewkView, "ssl,certificate,changed", __setCertificatePem, this);
 
+    evas_object_event_callback_add(m_ewkView, EVAS_CALLBACK_MOUSE_DOWN, __setFocusToEwkView, this);
     evas_object_smart_callback_add(m_ewkView, "icon,received", __faviconChanged, this);
 
     evas_object_smart_callback_add(m_ewkView, "editorclient,ime,closed", __IMEClosed, this);
@@ -268,6 +269,7 @@ void WebView::unregisterCallbacks()
 #endif
     evas_object_smart_callback_del_full(m_ewkView, "request,certificate,confirm", __requestCertificationConfirm, this);
 
+    evas_object_event_callback_del(m_ewkView, EVAS_CALLBACK_MOUSE_DOWN, __setFocusToEwkView);
     evas_object_smart_callback_del_full(m_ewkView, "icon,received", __faviconChanged, this);
 
     evas_object_smart_callback_del_full(m_ewkView, "editorclient,ime,closed", __IMEClosed, this);
@@ -842,6 +844,16 @@ void WebView::__screenshotCaptured(Evas_Object* image, void* data)
     snapshot_data->web_view->snapshotCaptured(std::make_shared<tools::BrowserImage>(image), snapshot_data->snapshot_type);
 }
 
+void WebView::__setFocusToEwkView(void * data, Evas * /* e */, Evas_Object * /* obj */, void * /* event_info */)
+{
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+
+    WebView * self = reinterpret_cast<WebView *>(data);
+
+    if(!self->hasFocus())
+        self->ewkViewClicked();
+}
+
 void WebView::__newWindowRequest(void *data, Evas_Object *, void *out)
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
index dd5d40076c1823469d1be92e195e7fe037c708b1..588333135e6600548afd1a1297e15de0bd18d62c 100644 (file)
@@ -284,6 +284,8 @@ public:
 
     boost::signals2::signal<void (WebConfirmationPtr)> confirmationRequest;
 
+    boost::signals2::signal<void ()> ewkViewClicked;
+
     boost::signals2::signal<void (bool)> IMEStateChanged;
 
     boost::signals2::signal<void ()> switchToWebPage;
@@ -302,6 +304,7 @@ private:
     void unregisterCallbacks();
     void setupEwkSettings();
 
+    static void __setFocusToEwkView(void * data, Evas * e, Evas_Object * obj, void * event_info);
     static void __newWindowRequest(void * data, Evas_Object *, void *out);
     static void __closeWindowRequest(void * data, Evas_Object *, void *);
 
index 9fc4e470226eb683615e2e20d353dd694180ecbc..7190498d0703b520a5447142943ba0d6c84ca906 100755 (executable)
@@ -198,7 +198,7 @@ void WebPageUI::setMainContent(Evas_Object* content)
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
     M_ASSERT(content);
     hideWebView();
-    elm_object_part_content_set(m_dummy_button, "overlay", content);
+    elm_object_part_content_set(m_mainLayout, "web_view", content);
 #if PROFILE_MOBILE && GESTURE
     elm_gesture_layer_attach(m_gestureLayer, content);
 #endif
@@ -421,17 +421,6 @@ void WebPageUI::createLayout()
     evas_object_size_hint_weight_set(m_mainLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
     elm_layout_file_set(m_mainLayout, edjePath("WebPageUI/WebPageUI.edj").c_str(), "main_layout");
 
-    m_dummy_button = elm_bg_add(m_mainLayout);
-    evas_object_size_hint_align_set(m_dummy_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
-    evas_object_size_hint_weight_set(m_dummy_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-    elm_object_focus_allow_set(m_dummy_button, EINA_TRUE);
-    elm_object_focus_set(m_dummy_button, EINA_TRUE);
-    evas_object_show(m_dummy_button);
-    elm_object_part_content_set(m_mainLayout, "web_view", m_dummy_button);
-
-    evas_object_smart_callback_add(m_dummy_button, "focused", _dummy_button_focused, this);
-    evas_object_smart_callback_add(m_dummy_button, "unfocused", _dummy_button_unfocused, this);
-
     createErrorLayout();
     createPrivateLayout();
     createActions();
@@ -473,20 +462,6 @@ void WebPageUI::createLayout()
 #endif
 }
 
-void WebPageUI::_dummy_button_focused(void *data, Evas_Object *, void *)
-{
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-    WebPageUI* webPageUI = static_cast<WebPageUI*>(data);
-    webPageUI->focusWebView();
-}
-
-void WebPageUI::_dummy_button_unfocused(void *data, Evas_Object *, void *)
-{
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-    WebPageUI* webPageUI = static_cast<WebPageUI*>(data);
-    webPageUI->unfocusWebView();
-}
-
 void WebPageUI::createErrorLayout()
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
@@ -612,7 +587,7 @@ void WebPageUI::hideWebView()
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
 
     evas_object_hide(elm_object_part_content_get(m_mainLayout, "web_view"));
-    elm_object_part_content_unset(m_mainLayout, "overlay");
+    elm_object_part_content_unset(m_mainLayout, "web_view");
 }
 
 void WebPageUI::setErrorButtons()
index 66a7019f5052c00100d8f474da0d97e488f11133..33db8af13b072d9d70849af0a225163aa17c762e 100644 (file)
@@ -112,15 +112,11 @@ public:
     boost::signals2::signal<void ()> hideQuickAccess;
     boost::signals2::signal<void ()> showQuickAccess;
     boost::signals2::signal<void ()> bookmarkManagerClicked;
-    boost::signals2::signal<void ()> focusWebView;
-    boost::signals2::signal<void ()> unfocusWebView;
 
 private:
     static void faviconClicked(void* data, Evas_Object* obj, const char* emission, const char* source);
     static Eina_Bool _cb_down_pressed_on_urlbar(void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info);
     static void _bookmark_manager_clicked(void * data, Evas_Object *, void *);
-    static void _dummy_button_focused(void *data, Evas_Object *, void *);
-    static void _dummy_button_unfocused(void *data, Evas_Object *, void *);
 #if PROFILE_MOBILE
     static void _more_menu_background_clicked(void* data, Evas_Object*, const char*, const char*);
     static void _content_clicked(void * data, Evas_Object *, void *);
@@ -161,7 +157,6 @@ private:
 
     Evas_Object* m_parent;
     Evas_Object* m_mainLayout;
-    Evas_Object* m_dummy_button;
     Evas_Object* m_errorLayout;
     Evas_Object* m_privateLayout;
     Evas_Object* m_bookmarkManagerButton;