, m_URIEntry(new URIEntry())
, m_urlHistoryList(std::make_shared<UrlHistoryList>())
, m_homePageActive(false)
+ , m_webviewLocked(false)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
}
showQuickAccess();
else
m_URIEntry->showPageTitle();
+
+ m_WebPageUIvisible = true;
+
+ elm_object_event_callback_add(m_leftButtonBar->getContent(), _cb_down_pressed_on_urlbar, this);
+ elm_object_event_callback_add(m_rightButtonBar->getContent(), _cb_down_pressed_on_urlbar, this);
+ elm_object_event_callback_add(m_URIEntry->getContent(), _cb_down_pressed_on_urlbar, this);
}
evas_object_hide(m_URIEntry->getContent());
evas_object_hide(elm_object_part_content_get(m_mainLayout, "uri_bar_buttons_left"));
evas_object_hide(elm_object_part_content_get(m_mainLayout, "uri_bar_buttons_right"));
+
+ m_WebPageUIvisible = false;
+
+ elm_object_event_callback_del(m_leftButtonBar->getContent(), _cb_down_pressed_on_urlbar, this);
+ elm_object_event_callback_del(m_rightButtonBar->getContent(), _cb_down_pressed_on_urlbar, this);
+ elm_object_event_callback_del(m_URIEntry->getContent(), _cb_down_pressed_on_urlbar, this);
}
void WebPageUI::loadStarted()
}
}
+Eina_Bool WebPageUI::_cb_down_pressed_on_urlbar(void *data, Evas_Object */*obj*/, Evas_Object */*src*/, Evas_Callback_Type type, void *event_info)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ WebPageUI* self = reinterpret_cast<WebPageUI*>(data);
+ if(type == EVAS_CALLBACK_KEY_DOWN) {
+ Ecore_Event_Key *ev = static_cast<Ecore_Event_Key *>(event_info);
+ const std::string keyName = ev->keyname;
+ if(!keyName.compare("Down")){
+ self->lockWebview();
+ }
+ }
+ return EINA_FALSE;
+}
+
void WebPageUI::setTabsNumber(int tabs)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
}
}
+void WebPageUI::lockWebview()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ if(isWebPageUIvisible()) {
+ if(!isHomePageActive() && !isErrorPageActive()) {
+ elm_object_focus_custom_chain_unset(m_mainLayout);
+ elm_object_focus_custom_chain_append(m_mainLayout, elm_object_part_content_get(m_mainLayout, "web_view"), NULL);
+ m_webviewLocked = true;
+ }
+ }
+}
+
+void WebPageUI::onRedKeyPressed()
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ if(isWebPageUIvisible()) {
+ if(!isHomePageActive()) {
+ if(m_webviewLocked) {
+ refreshFocusChain();
+ m_URIEntry->setFocus();
+ m_webviewLocked = false;
+ }
+ }
+ }
+}
+
void WebPageUI::createLayout()
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
bool isErrorPageActive();
bool isIncognitoPageActive();
bool isHomePageActive() { return m_homePageActive; }
+ bool isWebPageUIvisible() { return m_WebPageUIvisible; }
void toIncognito(bool);
void switchViewToErrorPage();
void switchViewToWebPage(Evas_Object* content, const std::string uri, const std::string title);
void setReloadButtonEnabled(bool enabled) { m_reload->setEnabled(enabled); }
void setStopButtonEnabled(bool enabled) { m_stopLoading->setEnabled(enabled); }
void setMoreMenuButtonEnabled(bool enabled) { m_showMoreMenu->setEnabled(enabled); }
+ void lockWebview();
+ void onRedKeyPressed();
boost::signals2::signal<void ()> backPage;
boost::signals2::signal<void ()> forwardPage;
boost::signals2::signal<void ()> showZoomNavigation;
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);
private:
void createLayout();
std::unique_ptr<URIEntry> m_URIEntry;
UrlHistoryPtr m_urlHistoryList;
bool m_homePageActive;
+ bool m_webviewLocked;
+ bool m_WebPageUIvisible;
sharedAction m_back;
sharedAction m_forward;