1. Go back to previous page when "Back" is enabled.
2. Quit Browser when "Back" is not enabled.
editorclient,ime,opened, editorclient,ime,closed events should be handled not to process BackSpace Key when focus is on Editor.
Change-Id: I8ee7ab24364aef0662fa4577a5f55497a0836fce
Signed-off-by: sungwon2.han <sungwon2.han@samsung.com>
virtual std::shared_ptr<tizen_browser::tools::BrowserImage> getFavicon() = 0;
/**
+ * @brief back or exit when back key is pressed
+ */
+ virtual void backButtonClicked() const = 0;
+
+ /**
* FavIcon of current page changed
*/
boost::signals2::signal<void (std::shared_ptr<tizen_browser::tools::BrowserImage>)> favIconChanged;
static void app_terminate(void */*app_data*/)
{
+ BROWSER_LOGD("%s\n", __func__);
std::shared_ptr<tizen_browser::base_ui::AbstractMainWindow<Evas_Object>> mainUi =
std::dynamic_pointer_cast
<
add_subdirectory(SimpleURI)
add_subdirectory(StorageService)
add_subdirectory(HistoryService)
-#add_subdirectory(PlatformInputManager)
+add_subdirectory(PlatformInputManager)
add_subdirectory(SessionStorage)
add_subdirectory(BookmarkService)
#include "PlatformInputManager.h"
-#include <X11/Xlib.h>
-#include <utilX.h>
+//#include <X11/Xlib.h>
+//#include <utilX.h>
#include <Ecore.h>
#include <Ecore_Evas.h>
#include <Ecore_Input.h>
m_xWindow = elm_win_xwindow_get(mainWindow);
// This snippet is needed to show mouse pointer all the time, because by default it is hidden after few seconds
- m_atomDevicemgrInputWindow = ecore_x_atom_get(E_PROP_DEVICEMGR_INPUTWIN);
- m_atomAlwaysCursorOn = ecore_x_atom_get(E_PROP_NOT_CURSOR_HIDE);
- if(!ecore_x_window_prop_window_get(ecore_x_window_root_first_get(), m_atomDevicemgrInputWindow, &m_devicemgr_win, 1))
- BROWSER_LOGD("Failed to get device manager input window!");
- ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, __handler_FOCUS_IN, this);
+ //m_atomDevicemgrInputWindow = ecore_x_atom_get(E_PROP_DEVICEMGR_INPUTWIN);
+ //m_atomAlwaysCursorOn = ecore_x_atom_get(E_PROP_NOT_CURSOR_HIDE);
+ //if(!ecore_x_window_prop_window_get(ecore_x_window_root_first_get(), m_atomDevicemgrInputWindow, &m_devicemgr_win, 1))
+ // BROWSER_LOGD("Failed to get device manager input window!");
+ //ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, __handler_FOCUS_IN, this);
}
Eina_Bool PlatformInputManager::__filter(void *data, void */*loop_data*/, int type, void *event)
* For that each arrow key is handled by us.
* Pointer movement is realized in timer to achieve smooth animation of pointer's move.
*/
+/*
if(self->m_pointerModeEnabled) {
wasArrow = true;
if (!keyName.compare("KEY_LEFT")) {
}
else
wasArrow = false;
-
+*/
/**
* If last pressed key was arrow we would like to convert Return key to mouse click
* assuming that user was moving cursor and now want to "click" chosen element.
* In other cases Return key is handled normally allowing for example to accecpt typed url.
*/
+/*
if(!keyName.compare("KEY_ENTER")) {
if(self->m_lastPressedKey == ARROW) {
self->m_lastPressedKey = RETURN;
return EINA_FALSE;
}
}
+*/
self->m_lastPressedKey= OTHER_KEY;
return EINA_FALSE;
}
- if(!keyName.compare("KEY_CHANNELUP")){
+// if(!keyName.compare("KEY_CHANNELUP")){
/**
* Converting ChannelUp Button on remote control and Page Up key on keyboard to mouse's wheel up move.
* This is used to achieve same effect of scrolling web page using mouse, remote control and keyboard.
*/
- self->mouseButtonManipulate(Button4, ButtonPress); // Simulate mouse wheel up movement
- self->mouseButtonManipulate(Button4, ButtonRelease);
- return EINA_FALSE;
- }
+// self->mouseButtonManipulate(Button4, ButtonPress); // Simulate mouse wheel up movement
+// self->mouseButtonManipulate(Button4, ButtonRelease);
+// return EINA_FALSE;
+// }
- if(!keyName.compare("KEY_CHANNELDOWN")){
+// if(!keyName.compare("KEY_CHANNELDOWN")){
/**
* Same as above ChannelDown and Page Down are replaced by mouse's wheel down movement.
*/
- self->mouseButtonManipulate(Button5, ButtonPress); // Simulate mouse wheel down movement
- self->mouseButtonManipulate(Button5, ButtonRelease);
- return EINA_FALSE;
- }
+// self->mouseButtonManipulate(Button5, ButtonPress); // Simulate mouse wheel down movement
+// self->mouseButtonManipulate(Button5, ButtonRelease);
+// return EINA_FALSE;
+// }
if(!keyName.compare("KEY_RETURN"))
self->returnPressed();
self->rightPressed();
else if(!keyName.compare("KEY_ENTER"))
self->enterPressed();
+ else if(!keyName.compare("BackSpace"))
+ self->backPressed();
} else if(type == ECORE_EVENT_KEY_UP) {
M_ASSERT(event);
Ecore_Event_Key *ev = static_cast<Ecore_Event_Key *>(event);
/**
* When arrow key is released thread realizing pointer movement is stopped.
*/
- if(self->m_pointerModeEnabled && (!keyName.compare("KEY_LEFT")||!keyName.compare("KEY_UP")
- || !keyName.compare("KEY_RIGHT")||!keyName.compare("KEY_DOWN"))) {
- if(self->m_mouseMoveTimer) {
- self->m_currentMouseMovementParams.moveMousePointer = false;
- ecore_timer_del(self->m_mouseMoveTimer);
- self->m_mouseMoveTimer = NULL;
- }
- return EINA_FALSE;
- }
+// if(self->m_pointerModeEnabled && (!keyName.compare("KEY_LEFT")||!keyName.compare("KEY_UP")
+// || !keyName.compare("KEY_RIGHT")||!keyName.compare("KEY_DOWN"))) {
+// if(self->m_mouseMoveTimer) {
+// self->m_currentMouseMovementParams.moveMousePointer = false;
+// ecore_timer_del(self->m_mouseMoveTimer);
+// self->m_mouseMoveTimer = NULL;
+// }
+// return EINA_FALSE;
+// }
/**
* If Return key is being released we send event that mouse button was released (in pointer mode).
*/
- if(self->m_lastPressedKey == RETURN && self->m_pointerModeEnabled && !keyName.compare("KEY_ENTER")) {
- self->m_lastPressedKey = OTHER_KEY;
- self->mouseButtonManipulate(Button1, ButtonRelease);
- return EINA_FALSE;
- }
+// if(self->m_lastPressedKey == RETURN && self->m_pointerModeEnabled && !keyName.compare("KEY_ENTER")) {
+// self->m_lastPressedKey = OTHER_KEY;
+// self->mouseButtonManipulate(Button1, ButtonRelease);
+// return EINA_FALSE;
+// }
}
return EINA_TRUE;
}
-
+/*
Eina_Bool PlatformInputManager::mouseMove(void *data)
{
int x, y;
}
return EINA_FALSE;
}
-
-Eina_Bool PlatformInputManager::__handler_FOCUS_IN(void *data, int /*type*/, void */*event*/)
-{
- PlatformInputManager * self = reinterpret_cast<PlatformInputManager *>(data);
- ecore_x_window_prop_window_set(self->m_devicemgr_win, self->m_atomAlwaysCursorOn, &(self->m_xWindow), 1);
- return EINA_TRUE;
-}
-
+*/
+//Eina_Bool PlatformInputManager::__handler_FOCUS_IN(void *data, int /*type*/, void */*event*/)
+//{
+// PlatformInputManager * self = reinterpret_cast<PlatformInputManager *>(data);
+// ecore_x_window_prop_window_set(self->m_devicemgr_win, self->m_atomAlwaysCursorOn, &(self->m_xWindow), 1);
+// return EINA_TRUE;
+//}
+/*
void PlatformInputManager::mouseButtonManipulate(int button, int event_type)
{
XEvent event;
XFlush(display);
}
-
+*/
void PlatformInputManager::setPointerModeEnabled(bool enabled)
{
m_pointerModeEnabled = enabled;
#include <boost/signals2/signal.hpp>
#include <boost/thread/thread.hpp>
#include <Ecore.h>
-#include <Ecore_X.h>
+//#include <Ecore_X.h>
#include <Eina.h>
#include <Elementary.h>
boost::signals2::signal<void ()> enterPressed;
boost::signals2::signal<void ()> leftPressed;
boost::signals2::signal<void ()> rightPressed;
+ boost::signals2::signal<void ()> backPressed;
/**
* @brief Returns current service's name.
include_directories(${CMAKE_SOURCE_DIR}/services/FavoriteService)
include_directories(${CMAKE_SOURCE_DIR}/services/HistoryService)
include_directories(${CMAKE_SOURCE_DIR}/services/BookmarksUI)
-#include_directories(${CMAKE_SOURCE_DIR}/services/PlatformInputManager)
+include_directories(${CMAKE_SOURCE_DIR}/services/PlatformInputManager)
include_directories(${CMAKE_SOURCE_DIR}/services/SessionStorage)
include(FindPkgConfig)
add_dependencies(${PROJECT_NAME} StorageService)
add_dependencies(${PROJECT_NAME} HistoryService)
add_dependencies(${PROJECT_NAME} BookmarksUI)
-#add_dependencies(${PROJECT_NAME} PlatformInputManager)
+add_dependencies(${PROJECT_NAME} PlatformInputManager)
add_dependencies(${PROJECT_NAME} SessionStorage)
target_link_libraries(${PROJECT_NAME} SimpleURI)
target_link_libraries(${PROJECT_NAME} StorageService)
target_link_libraries(${PROJECT_NAME} HistoryService)
target_link_libraries(${PROJECT_NAME} BookmarksUI)
-#target_link_libraries(${PROJECT_NAME} PlatformInputManager)
+target_link_libraries(${PROJECT_NAME} PlatformInputManager)
target_link_libraries(${PROJECT_NAME} SessionStorage)
target_link_libraries(${PROJECT_NAME} ${EFL_LDFLAGS})
}
SimpleUI::~SimpleUI() {
+ BROWSER_LOGD("%s", __func__);
m_sessionService->getStorage()->deleteSession(m_currentSession);
/// \todo Auto-generated destructor stub
evas_object_del(m_window.get());
void SimpleUI::destroyUI()
{
+ BROWSER_LOGD("%s", __func__);
evas_object_del(m_window.get());
}
(tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.historyservice"));
M_ASSERT(m_historyService);
-/*
+
// Platforminputmanager
BROWSER_LOGD("[%s:%d] service: platforminputmanager ", __PRETTY_FUNCTION__, __LINE__);
m_platformInputManager =
M_ASSERT(m_platformInputManager);
m_platformInputManager->init(m_window.get());
m_platformInputManager->returnPressed.connect(boost::bind(&elm_exit));
-*/
+ m_platformInputManager->backPressed.connect(boost::bind(&SimpleUI::onBackPressed, this));
+
createActions();
// left buttons
leftButtonBar = std::make_shared<ButtonBar>(m_mainLayout, "SimpleUI/LeftButtonBar.edj", "left_button_bar");
webTitleBar->removeFavIcon();
webTitleBar->show("Removed from favorites");
}
-/*
+
void SimpleUI::onReturnPressed(MenuButton *m)
{
BROWSER_LOGD("[%s]", __func__);
hidePopup.disconnect_all_slots();
m->hidePopup();
}
-*/
+
+void SimpleUI::onBackPressed()
+{
+ BROWSER_LOGD("[%s]", __func__);
+ m_webEngine->backButtonClicked();
+}
+
void SimpleUI::backEnable(bool enable)
{
m_back->setEnabled(enable);
m_zoomList->setZoom(currentZoomType);
BROWSER_LOGD("Current zoom factor from webkit %d%%", m_webEngine->getZoomFactor());
-// m_platformInputManager->returnPressed.disconnect_all_slots();
-// m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_zoomList.get()));
-// hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_zoomList.get()));
+ m_platformInputManager->returnPressed.disconnect_all_slots();
+ m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_zoomList.get()));
+ hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_zoomList.get()));
m_zoomList->showPopup();
}
m_tabList->tabClicked.connect(boost::bind(&SimpleUI::tabClicked, this, _1));
m_tabList->tabDelete.connect(boost::bind(&SimpleUI::closeTab, this, _1));
-// m_platformInputManager->rightPressed.connect(boost::bind(&TabList::rightPressed, m_tabList.get()));
-// m_platformInputManager->leftPressed.connect(boost::bind(&TabList::leftPressed, m_tabList.get()));
-// m_platformInputManager->enterPressed.connect(boost::bind(&TabList::enterPressed, m_tabList.get()));
+ m_platformInputManager->rightPressed.connect(boost::bind(&TabList::rightPressed, m_tabList.get()));
+ m_platformInputManager->leftPressed.connect(boost::bind(&TabList::leftPressed, m_tabList.get()));
+ m_platformInputManager->enterPressed.connect(boost::bind(&TabList::enterPressed, m_tabList.get()));
}
-// m_platformInputManager->returnPressed.disconnect_all_slots();
-// m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_tabList.get()));
-// hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_tabList.get()));
+ m_platformInputManager->returnPressed.disconnect_all_slots();
+ m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_tabList.get()));
+ hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_tabList.get()));
m_tabList->addItems(m_webEngine->getTabContents());
m_tabList->setCurrentTabId(m_webEngine->currentTabId());
m_tabList->disableNewTabBtn(m_tabList->getItemcCount() >= m_tabLimit);
m_settings->addAction( m_settingDeleteFavorite);
//m_settingPointerMode->toggled.connect(boost::bind(&tizen_browser::base_ui::Settings::setPointerModeEnabled, m_settings.get(), _1));
}
-// m_platformInputManager->returnPressed.disconnect_all_slots();
-// m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_settings.get()));
-// hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_settings.get()));
+ m_platformInputManager->returnPressed.disconnect_all_slots();
+ m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_settings.get()));
+ hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_settings.get()));
m_settingDeleteHistory->setEnabled(m_historyService->getHistoryItemsCount());
m_settingDeleteFavorite->setEnabled(m_favoriteService->countBookmarksAndSubFolders());
m_settings->showPopup();
m_historyList->deleteHistoryItem.connect(boost::bind(&tizen_browser::services::HistoryService::clearURLHistory, m_historyService.get(),_1));
m_historyList->deleteHistoryItem.connect(boost::bind(&SimpleUI::hideHistory, this));
-// m_platformInputManager->rightPressed.connect(boost::bind(&HistoryList::rightPressed, m_historyList.get()));
-// m_platformInputManager->leftPressed.connect(boost::bind(&HistoryList::leftPressed, m_historyList.get()));
-// m_platformInputManager->enterPressed.connect(boost::bind(&HistoryList::enterPressed, m_historyList.get()));
+ m_platformInputManager->rightPressed.connect(boost::bind(&HistoryList::rightPressed, m_historyList.get()));
+ m_platformInputManager->leftPressed.connect(boost::bind(&HistoryList::leftPressed, m_historyList.get()));
+ m_platformInputManager->enterPressed.connect(boost::bind(&HistoryList::enterPressed, m_historyList.get()));
}
-// m_platformInputManager->returnPressed.disconnect_all_slots();
-// m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_historyList.get()));
-// hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_historyList.get()));
+ m_platformInputManager->returnPressed.disconnect_all_slots();
+ m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_historyList.get()));
+ hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_historyList.get()));
m_historyList->addItems(m_historyService->getHistoryItems());
m_historyList->showPopup();
}
#include "SimpleURI.h"
#include "SimpleScroller.h"
#include "WebTitleBar.h"
-//#include "PlatformInputManager.h"
+#include "PlatformInputManager.h"
#include "SessionStorage.h"
#include "SqlStorage.h"
void onNetErrorButtonPressed(PopupButtons, std::shared_ptr<PopupData>);
void onReturnPressed(MenuButton *m);
+ void onBackPressed();
boost::signals2::signal<void ()> hidePopup;
std::shared_ptr<tizen_browser::base_ui::ZoomList> m_zoomList;
std::shared_ptr<tizen_browser::base_ui::TabList> m_tabList;
std::shared_ptr<tizen_browser::base_ui::SearchBox> m_searchBox;
- //std::shared_ptr<tizen_browser::services::PlatformInputManager> m_platformInputManager;
+ std::shared_ptr<tizen_browser::services::PlatformInputManager> m_platformInputManager;
std::shared_ptr<tizen_browser::services::SessionStorage> m_sessionService;
tizen_browser::Session::Session m_currentSession;
std::shared_ptr<Settings> m_settings;
#include <Evas.h>
#include <memory>
#include <BrowserImage.h>
+#include <app.h>
#include "BrowserAssert.h"
#include "BrowserLogger.h"
m_currentWebView->searchOnWebsite(searchString, flags);
}
+void WebKitEngineService::backButtonClicked() const
+{
+ if(isBackEnabled()) {
+ M_ASSERT(m_currentWebView);
+ m_currentWebView->back();
+ } else {
+ app_efl_exit();
+ }
+}
+
} /* end of webkitengine_service */
} /* end of basic_webengine */
} /* end of tizen_browser */
*/
std::shared_ptr<tizen_browser::tools::BrowserImage> getFavicon();
+ /**
+ * @brief back or exit when back key is pressed
+ */
+ void backButtonClicked() const;
+
private:
// callbacks from WebView
void _favIconChanged(std::shared_ptr<tizen_browser::tools::BrowserImage> bi);
evas_object_event_callback_add(m_ewkView, EVAS_CALLBACK_MOUSE_DOWN, __setFocusToEwkView, this);
evas_object_smart_callback_add(m_ewkView, "favicon,changed", onFaviconChaged, this);
+
+ evas_object_smart_callback_add(m_ewkView, "editorclient,ime,closed", __IMEClosed, this);
+ evas_object_smart_callback_add(m_ewkView, "editorclient,ime,opened", __IMEOpened, this);
#endif
}
evas_object_event_callback_del(m_ewkView, EVAS_CALLBACK_MOUSE_DOWN, __setFocusToEwkView);
evas_object_smart_callback_del_full(m_ewkView, "favicon,changed", onFaviconChaged, this);
+
+ evas_object_smart_callback_del_full(m_ewkView, "editorclient,ime,closed", __IMEClosed, this);
+ evas_object_smart_callback_del_full(m_ewkView, "editorclient,ime,opened", __IMEOpened, this);
#endif
}
}
}
+void WebView::__IMEClosed(void* data, Evas_Object*, void*)
+{
+ BROWSER_LOGD("%s", __func__);
+}
+
+void WebView::__IMEOpened(void* data, Evas_Object*, void*)
+{
+ BROWSER_LOGD("%s", __func__);
+}
+
std::string WebView::securityOriginToUri(const Ewk_Security_Origin *origin)
{
std::string protocol = tizen_browser::tools::fromChar(ewk_security_origin_protocol_get(origin));
//from webkit ewk_view
static void onFaviconChaged(void * data, Evas_Object *obj, void *event_info);
+ static void __IMEClosed(void * data, Evas_Object *obj, void *event_info);
+ static void __IMEOpened(void * data, Evas_Object *obj, void *event_info);
+
// confirmation requests
static void __geolocationPermissionRequest(void * data, Evas_Object * obj, void * event_info);
static void __usermediaPermissionRequest(void * data, Evas_Object * obj, void * event_info);