From e74b443b15738c029b5e96a3489288aa46f30d2b Mon Sep 17 00:00:00 2001 From: Albert Malewski Date: Tue, 27 Oct 2015 16:06:30 +0100 Subject: [PATCH] Fixed navigating using 'Backspace' key [Issue] https://bugs.tizen.org/jira/browse/TT-238 [Problem] WebPageUI is closed when 'Backspace' button is used in URIEntry. [Solution] Added condition in onBackPressed function that prevents closing WebPageUI when cursor if URIEntry is focused. [Verify] 1. Tab Manager > New Tab > press 'Backspace' key > Obs Quick access should be closed. 2. Load a web page > Set focus on URIEntry > press 'Backspace' WebPageUI should not be closed. 3. Tab Manager > New Incognito tab > Press 'Backspace' key > Obs Browser shoud not crash Change-Id: I0fb51f949ced56641d3f8f57b053d0c0e1e339c8 --- core/AbstractWebEngine/AbstractWebEngine.h | 7 ++++++- services/QuickAccess/QuickAccess.cpp | 3 +++ services/QuickAccess/QuickAccess.h | 1 + services/SimpleUI/SimpleUI.cpp | 13 +++++++++---- services/WebKitEngineService/WebKitEngineService.cpp | 5 ++++- services/WebKitEngineService/WebKitEngineService.h | 2 +- services/WebKitEngineService/WebView.h | 2 ++ 7 files changed, 26 insertions(+), 7 deletions(-) diff --git a/core/AbstractWebEngine/AbstractWebEngine.h b/core/AbstractWebEngine/AbstractWebEngine.h index bbbc8d8..0957164 100644 --- a/core/AbstractWebEngine/AbstractWebEngine.h +++ b/core/AbstractWebEngine/AbstractWebEngine.h @@ -276,7 +276,7 @@ public: /** * @brief back or exit when back key is pressed */ - virtual void backButtonClicked() const = 0; + virtual void backButtonClicked() = 0; /** * @brief Switch current view to mobile mode @@ -403,6 +403,11 @@ public: * \param bool true if IME is opened, false otherwise */ boost::signals2::signal IMEStateChanged; + + /** + * Switch view to actual web page + */ + boost::signals2::signal switchToWebPage; }; } /* end of basic_webengine */ diff --git a/services/QuickAccess/QuickAccess.cpp b/services/QuickAccess/QuickAccess.cpp index e39ff1e..8288e9b 100644 --- a/services/QuickAccess/QuickAccess.cpp +++ b/services/QuickAccess/QuickAccess.cpp @@ -499,6 +499,9 @@ void QuickAccess::backButtonClicked() { if (m_detailPopup.isVisible()) { m_detailPopup.hide(); + } else { + hideUI(); + switchViewToWebPage(); } } diff --git a/services/QuickAccess/QuickAccess.h b/services/QuickAccess/QuickAccess.h index 5418b38..d89d4e9 100644 --- a/services/QuickAccess/QuickAccess.h +++ b/services/QuickAccess/QuickAccess.h @@ -59,6 +59,7 @@ public: boost::signals2::signal mostVisitedClicked; boost::signals2::signal bookmarkClicked; boost::signals2::signal bookmarkManagerClicked; + boost::signals2::signal switchViewToWebPage; static const int MAX_THUMBNAIL_WIDTH; static const int MAX_THUMBNAIL_HEIGHT; diff --git a/services/SimpleUI/SimpleUI.cpp b/services/SimpleUI/SimpleUI.cpp index f810ddd..08e511f 100644 --- a/services/SimpleUI/SimpleUI.cpp +++ b/services/SimpleUI/SimpleUI.cpp @@ -266,6 +266,7 @@ void SimpleUI::connectUISignals() m_quickAccess->mostVisitedClicked.connect(boost::bind(&SimpleUI::onMostVisitedClicked, this)); m_quickAccess->bookmarkClicked.connect(boost::bind(&SimpleUI::onBookmarkButtonClicked, this)); m_quickAccess->bookmarkManagerClicked.connect(boost::bind(&SimpleUI::showBookmarkManagerUI, this)); + m_quickAccess->switchViewToWebPage.connect(boost::bind(&SimpleUI::switchViewToWebPage, this)); M_ASSERT(m_tabUI.get()); m_tabUI->closeTabUIClicked.connect(boost::bind(&SimpleUI::closeTabUI, this)); @@ -407,6 +408,7 @@ void SimpleUI::connectModelSignals() m_webEngine->tabClosed.connect(boost::bind(&SimpleUI::tabClosed,this,_1)); m_webEngine->IMEStateChanged.connect(boost::bind(&SimpleUI::setwvIMEStatus, this, _1)); m_webEngine->titleChanged.connect(boost::bind(&WebPageUI::setPageTitle, m_webPageUI.get(), _1)); + m_webEngine->switchToWebPage.connect(boost::bind(&SimpleUI::switchViewToWebPage, this)); m_favoriteService->bookmarkAdded.connect(boost::bind(&SimpleUI::onBookmarkAdded, this,_1)); m_favoriteService->bookmarkDeleted.connect(boost::bind(&SimpleUI::onBookmarkRemoved, this, _1)); @@ -429,6 +431,7 @@ void SimpleUI::switchViewToWebPage() if(m_webEngine->isSuspended()) m_webEngine->resume(); m_webPageUI->switchViewToWebPage(m_webEngine->getLayout(), m_webEngine->getURI(), m_webEngine->getTitle()); + m_webPageUI->toIncognito(m_webEngine->isPrivateMode(m_webEngine->currentTabId())); } void SimpleUI::switchToTab(const tizen_browser::basic_webengine::TabId& tabId) @@ -615,10 +618,12 @@ void SimpleUI::onBackPressed() m_tabUI->onBackKey(); } else if (m_webPageUI->stateEquals(WPUState::QUICK_ACCESS)) { m_quickAccess->backButtonClicked(); - } else if ((m_viewManager->topOfStack() == m_webPageUI.get()) && !m_webPageUI->getURIEntry().hasFocus() && !m_wvIMEStatus) { - m_webEngine->backButtonClicked(); - } else { - m_viewManager->popTheStack(); + } else if (!m_webPageUI->getURIEntry().hasFocus() && !m_wvIMEStatus) { + if ((m_viewManager->topOfStack() == m_webPageUI.get())) { + m_webEngine->backButtonClicked(); + } else { + m_viewManager->popTheStack(); + } } } diff --git a/services/WebKitEngineService/WebKitEngineService.cpp b/services/WebKitEngineService/WebKitEngineService.cpp index a451fac..2f99ada 100644 --- a/services/WebKitEngineService/WebKitEngineService.cpp +++ b/services/WebKitEngineService/WebKitEngineService.cpp @@ -513,11 +513,14 @@ void WebKitEngineService::_IMEStateChanged(bool enable) IMEStateChanged(enable); } -void WebKitEngineService::backButtonClicked() const +void WebKitEngineService::backButtonClicked() { M_ASSERT(m_currentWebView); if (isBackEnabled()) { m_currentWebView->back(); + } else if (m_currentWebView->isPrivateMode()) { + closeTab(); + switchToWebPage(); } else { app_efl_exit(); } diff --git a/services/WebKitEngineService/WebKitEngineService.h b/services/WebKitEngineService/WebKitEngineService.h index beb9053..5faadb3 100644 --- a/services/WebKitEngineService/WebKitEngineService.h +++ b/services/WebKitEngineService/WebKitEngineService.h @@ -169,7 +169,7 @@ public: /** * @brief back or exit when back key is pressed */ - void backButtonClicked() const; + void backButtonClicked(); void switchToMobileMode(); void switchToDesktopMode(); diff --git a/services/WebKitEngineService/WebView.h b/services/WebKitEngineService/WebView.h index f73919a..4cce9db 100644 --- a/services/WebKitEngineService/WebView.h +++ b/services/WebKitEngineService/WebView.h @@ -170,6 +170,8 @@ public: boost::signals2::signal IMEStateChanged; + boost::signals2::signal switchToWebPage; + private: void registerCallbacks(); void unregisterCallbacks(); -- 2.7.4