#if ENABLE(WORKERS)
#define ENABLE_TIZEN_WORKERS 1 /* Jihye Kang(jye.kang@samsung.com) : Use allowUniversalAccessFromFileURLs setting for workers */
#endif
+
+#define ENABLE_TIZEN_HW_MORE_BACK_KEY 1 /* Jongseok Yang(js45.yang@samsung.com), Kwangyong Choi (ky0.choi@samsung.net) : Add support for HW more/back keys */
+
#endif /* OS(TIZEN) */
/* ==== OS() - underlying operating system; only to be used for mandated low-level services like
${TTS_INCLUDE_DIRS}
${Tizen-Location-Manager_INCLUDE_DIRS}
${UIGadget_INCLUDE_DIRS}
+ ${EFL_ASSIST_INCLUDE_DIRS}
)
LIST(APPEND WebKit2_LIBRARIES
#include <EGL/egl.h>
#endif
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+#include <dlfcn.h>
+void* EflAssistHandle = 0;
+#endif
+
using namespace WebCore;
using namespace WebKit;
m_formDatabase->open(FormDatabase::defaultDatabaseDirectoryPath(), FormDatabase::defaultDatabaseFilename());
#endif
#endif
+
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (!EflAssistHandle)
+ EflAssistHandle = dlopen("/usr/lib/libefl-assist.so.0", RTLD_LAZY);
+#endif
}
Ewk_Context::~Ewk_Context()
#include <stdlib.h>
#include <string.h>
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+#include <dlfcn.h>
+#include <efl_assist.h>
+extern void* EflAssistHandle;
+#endif
#if OS(TIZEN) && ENABLE(TIZEN_INPUT_TAG_EXTENSION)
, colorRect(0)
, okButton(0)
, dataListEditField(0)
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ , initial_r(0)
+ , initial_g(0)
+ , initial_b(0)
+#endif
, datetimeLocal(false)
{
evas_object_focus_set(m_ewkView, false);
m_pickerLayout->popup = elm_popup_add(win);
elm_object_part_text_set(m_pickerLayout->popup, "title,text", "Select data list");
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_pickerLayout->popup, EA_CALLBACK_BACK, _data_list_popup_response_cancel_cb, this);
+ }
+#endif
+
m_pickerLayout->layout = elm_layout_add(m_pickerLayout->popup);
elm_layout_file_set(m_pickerLayout->layout, EDJE_DIR"/control.edj","data_list_picker");
evas_object_size_hint_weight_set(m_pickerLayout->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
m_pickerLayout->popup = elm_popup_add(win);
elm_object_part_text_set(m_pickerLayout->popup, "title,text", "Select color");
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ m_pickerLayout->initial_r = r;
+ m_pickerLayout->initial_g = g;
+ m_pickerLayout->initial_b = b;
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_pickerLayout->popup, EA_CALLBACK_BACK, _color_back_cb, this);
+ }
+#endif
+
m_pickerLayout->layout = elm_layout_add(m_pickerLayout->popup);
elm_layout_file_set(m_pickerLayout->layout, EDJE_DIR"/control.edj","color_picker");
evas_object_size_hint_weight_set(m_pickerLayout->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_weight_set(m_pickerLayout->colorRect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(m_pickerLayout->colorRect);
- printf("\n<<<<<<<< r = [%d], g = [%d], b = [%d] >>>>>>>>>>\n", r, g, b);
-
evas_object_color_set(m_pickerLayout->colorRect, r, g, b, 255);
elm_object_part_content_set(m_pickerLayout->layout, "elm.swallow.color_rect", m_pickerLayout->colorRect);
#if ENABLE(ELM_COLORPALLETE)
inputPicker->hideColorPicker();
}
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+void InputPicker::_color_back_cb(void* data, Evas_Object* obj, void* event_info)
+{
+ InputPicker* inputPicker = static_cast<InputPicker*>(data);
+
+ int r = inputPicker->m_pickerLayout->initial_r;
+ int g = inputPicker->m_pickerLayout->initial_g;
+ int b = inputPicker->m_pickerLayout->initial_b;
+ int a = 255;
+ ewk_view_color_picker_color_set(inputPicker->m_ewkView, r, g, b, a);
+
+ inputPicker->hideColorPicker();
+}
+#endif
+
void InputPicker::ewk_date_popup(const char* inputValue)
{
struct tm* currentTime;
m_pickerLayout->popup = elm_popup_add(win);
elm_object_part_text_set(m_pickerLayout->popup, "title,text", "Select date");
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_pickerLayout->popup, EA_CALLBACK_BACK, _popup_back_cb, this);
+ }
+#endif
+
m_pickerLayout->layout = elm_layout_add(m_pickerLayout->popup);
elm_layout_file_set(m_pickerLayout->layout, EDJE_DIR"/control.edj","elm/datepicker");
evas_object_size_hint_weight_set(m_pickerLayout->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
m_pickerLayout->popup = elm_popup_add(win);
elm_object_part_text_set(m_pickerLayout->popup, "title,text", "Select date");
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_pickerLayout->popup, EA_CALLBACK_BACK, _popup_back_cb, this);
+ }
+#endif
+
m_pickerLayout->layout = elm_layout_add(m_pickerLayout->popup);
elm_layout_file_set(m_pickerLayout->layout, EDJE_DIR"/control.edj","elm/datepicker");
evas_object_size_hint_weight_set(m_pickerLayout->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
m_pickerLayout->popup = elm_popup_add(win);
elm_object_part_text_set(m_pickerLayout->popup, "title,text", "Select time");
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_pickerLayout->popup, EA_CALLBACK_BACK, _popup_back_cb, this);
+ }
+#endif
+
m_pickerLayout->layout = elm_layout_add(m_pickerLayout->popup);
elm_layout_file_set(m_pickerLayout->layout, EDJE_DIR"/control.edj","elm/datepicker");
evas_object_size_hint_weight_set(m_pickerLayout->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
win = m_ewkView;
m_pickerLayout->popup = elm_popup_add(win);
-
elm_object_part_text_set(m_pickerLayout->popup, "title,text", "Select month");
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_pickerLayout->popup, EA_CALLBACK_BACK, _popup_back_cb, this);
+ }
+#endif
+
m_pickerLayout->layout = elm_layout_add(m_pickerLayout->popup);
elm_layout_file_set(m_pickerLayout->layout, EDJE_DIR"/control.edj","elm/datepicker");
m_pickerLayout->popup = elm_popup_add(win);
elm_object_part_text_set(m_pickerLayout->popup, "title,text", "Select datetime");
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_pickerLayout->popup, EA_CALLBACK_BACK, _popup_back_cb, this);
+ }
+#endif
+
m_pickerLayout->layout = elm_layout_add(m_pickerLayout->popup);
elm_layout_file_set(m_pickerLayout->layout, EDJE_DIR"/control.edj","datepicker_popup");
evas_object_size_hint_weight_set(m_pickerLayout->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
inputPicker->m_pickerLayout = 0;
}
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+void InputPicker::_popup_back_cb(void* data, Evas_Object* obj, void* event_info)
+{
+ InputPicker* inputPicker = static_cast<InputPicker*>(data);
+
+ if (!inputPicker->m_pickerLayout)
+ return;
+
+ if (inputPicker->m_pickerLayout->popup) {
+ evas_object_del(inputPicker->m_pickerLayout->popup);
+ inputPicker->m_pickerLayout->popup = 0;
+ }
+
+ delete inputPicker->m_pickerLayout;
+ inputPicker->m_pickerLayout = 0;
+}
+#endif
+
} // namespace WebKit
#endif // OS(TIZEN) && ENABLE(TIZEN_INPUT_TAG_EXTENSION)
Evas_Object* colorRect;
Evas_Object* okButton;
Evas_Object* dataListEditField;
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ int initial_r;
+ int initial_g;
+ int initial_b;
+#endif
bool datetimeLocal;
};
namespace WebKit {
- class InputPicker {
- public:
- InputPicker(Evas_Object*);
- ~InputPicker();
+class InputPicker {
+public:
+ InputPicker(Evas_Object*);
+ ~InputPicker();
- void show(Ewk_Input_Type, const char*);
+ void show(Ewk_Input_Type, const char*);
#if ENABLE(TIZEN_DATALIST_ELEMENT)
- void showDataList(Ewk_Input_Type inputType, Eina_List* optionList);
- void hideDataList(Ewk_Input_Type inputType);
+ void showDataList(Ewk_Input_Type inputType, Eina_List* optionList);
+ void hideDataList(Ewk_Input_Type inputType);
#endif
#if ENABLE(TIZEN_INPUT_COLOR_PICKER)
- void showColorPicker(int, int, int, int);
- void hideColorPicker();
- bool isColorPickerShown() { return m_isColorPickerShown; }
+ void showColorPicker(int, int, int, int);
+ void hideColorPicker();
#endif
- void ewk_date_popup(const char*);
- void ewk_time_popup(const char*);
- void ewk_month_popup(const char*);
- void ewk_week_popup(const char*);
- void ewk_datetime_popup(const char*, bool);
- void ewk_color_popup(int, int, int);
- private:
- static void _date_popup_response_cb(void*, Evas_Object*, void*);
- static void _time_popup_response_cb(void*, Evas_Object*, void*);
- static void _month_popup_response_cb(void*, Evas_Object*, void*);
- static void _week_popup_response_cb(void*, Evas_Object*, void*);
- static void _datetime_popup_response_cb(void*, Evas_Object*, void*);
- static void _color_popup_response_cb(void*, Evas_Object*, void*);
- static void _data_list_popup_response_cb(void*, Evas_Object*, void*);
- static void _data_list_popup_response_cancel_cb(void*, Evas_Object*, void*);
- static void _data_list_selected_cb(void*, Evas_Object*, void*);
- static void _color_selected_cb(void*, Evas*, Evas_Object*, void*);
-
- Evas_Object* m_ewkView;
- Input_Picker_Layout* m_pickerLayout;
- Eina_List* m_dataList;
+ void ewk_date_popup(const char*);
+ void ewk_time_popup(const char*);
+ void ewk_month_popup(const char*);
+ void ewk_week_popup(const char*);
+ void ewk_datetime_popup(const char*, bool);
+ void ewk_color_popup(int, int, int);
+
+private:
+ static void _date_popup_response_cb(void*, Evas_Object*, void*);
+ static void _time_popup_response_cb(void*, Evas_Object*, void*);
+ static void _month_popup_response_cb(void*, Evas_Object*, void*);
+ static void _week_popup_response_cb(void*, Evas_Object*, void*);
+ static void _datetime_popup_response_cb(void*, Evas_Object*, void*);
+ static void _color_popup_response_cb(void*, Evas_Object*, void*);
+ static void _data_list_popup_response_cb(void*, Evas_Object*, void*);
+ static void _data_list_popup_response_cancel_cb(void*, Evas_Object*, void*);
+ static void _data_list_selected_cb(void*, Evas_Object*, void*);
+ static void _color_selected_cb(void*, Evas*, Evas_Object*, void*);
+
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ static void _color_back_cb(void*, Evas_Object*, void*);
+ static void _popup_back_cb(void*, Evas_Object*, void*);
+#endif
+
+ Evas_Object* m_ewkView;
+ Input_Picker_Layout* m_pickerLayout;
+ Eina_List* m_dataList;
#if ENABLE(TIZEN_INPUT_COLOR_PICKER)
- bool m_isColorPickerShown;
+ bool m_isColorPickerShown;
#endif
- };
-} // namespace WebKit
+};
+
+} // namespace WebKit
#endif // OS(TIZEN) && ENABLE(TIZEN_INPUT_TAG_EXTENSION)
#include <wtf/text/CString.h>
#include <wtf/text/WTFString.h>
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+#include <dlfcn.h>
+#include <efl_assist.h>
+extern void* EflAssistHandle;
+#endif
#if OS(TIZEN)
ewk_view_javascript_alert_reply(popup->ewkView());
}
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+static void alertHwBackKeyCallback(void* data, Evas_Object* obj, void* eventInfo)
+{
+ JavaScriptPopup* popup = static_cast<JavaScriptPopup*>(data);
+ if (!popup)
+ return;
+ popup->close();
+ ewk_view_javascript_alert_reply(popup->ewkView());
+}
+#endif
+
bool JavaScriptPopup::setLabelText(const char* message)
{
if (!message)
// Get layout width to set a dynamic label wrap width
int layoutWidth;
- evas_object_geometry_get(layout, NULL, NULL, &layoutWidth, NULL);
+ evas_object_geometry_get(layout, 0, 0, &layoutWidth, 0);
Evas_Object* label = elm_label_add(layout);
elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
// Get label height for check the length of the character
int labelHeight;
- evas_object_geometry_get(label, NULL, NULL, NULL, &labelHeight);
+ evas_object_geometry_get(label, 0, 0, 0, &labelHeight);
// Use the general popup instead of scroll layout when message is a short sentences
if (labelHeight < 400) {
evas_object_del(m_popup);
- Evas_Object *parent = getParentWindow();
+ Evas_Object* parent = getParentWindow();
m_popup = elm_popup_add(parent);
if (!m_popup)
bool JavaScriptPopup::alert(const char* message)
{
- Evas_Object *parent = getParentWindow();
+ Evas_Object* parent = getParentWindow();
if (m_popup)
return false;
if (!setLabelText(message))
return false;
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_popup, EA_CALLBACK_BACK, alertHwBackKeyCallback, this);
+ }
+#endif
+
Evas_Object* okButton = elm_button_add(m_popup);
- //FIXME: Need to apply i18n for the button label
+ // FIXME: Need to apply i18n for the button label
elm_object_text_set(okButton, "OK");
elm_object_part_content_set(m_popup, "button1", okButton);
evas_object_smart_callback_add(okButton, "clicked", alertResponseCallback, this);
ewk_view_javascript_confirm_reply(popup->ewkView(), false);
}
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+static void confirmHwBackKeyCallback(void* data, Evas_Object* obj, void* eventInfo)
+{
+ JavaScriptPopup* popup = static_cast<JavaScriptPopup*>(data);
+ if (!popup)
+ return;
+ popup->close();
+ ewk_view_javascript_confirm_reply(popup->ewkView(), false);
+}
+#endif
+
bool JavaScriptPopup::confirm(const char* message)
{
- Evas_Object *parent = getParentWindow();
+ Evas_Object* parent = getParentWindow();
if (m_popup)
return false;
if (!setLabelText(message))
return false;
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_popup, EA_CALLBACK_BACK, confirmHwBackKeyCallback, this);
+ }
+#endif
+
Evas_Object* okButton = elm_button_add(m_popup);
- //FIXME: Need to apply i18n for the button label
+ // FIXME: Need to apply i18n for the button label
elm_object_text_set(okButton, "OK");
elm_object_part_content_set(m_popup, "button1", okButton);
evas_object_smart_callback_add(okButton, "clicked", confirmOkCallback, this);
Evas_Object* cancelButton = elm_button_add(m_popup);
- //FIXME: Need to apply i18n for the button label
+ // FIXME: Need to apply i18n for the button label
elm_object_text_set(cancelButton, "Cancel");
elm_object_part_content_set(m_popup, "button2", cancelButton);
evas_object_smart_callback_add(cancelButton, "clicked", confirmCancelCallback, this);
free(result);
}
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+static void promptHwBackKeyCallback(void* data, Evas_Object* obj, void* eventInfo)
+{
+ JavaScriptPopup* popup = static_cast<JavaScriptPopup*>(data);
+ if (!popup)
+ return;
+ popup->close();
+ ewk_view_javascript_prompt_reply(popup->ewkView(), 0);
+}
+#endif
+
bool JavaScriptPopup::prompt(const char* message, const char* defaultValue)
{
- Evas_Object *parent = getParentWindow();
+ Evas_Object* parent = getParentWindow();
if (m_popup)
return false;
m_entry = elm_entry_add(m_popup);
Ecore_IMF_Context* imfContext = static_cast<Ecore_IMF_Context*>(elm_entry_imf_context_get(m_entry));
- ecore_imf_context_input_panel_event_callback_add(imfContext, ECORE_IMF_INPUT_PANEL_STATE_EVENT, promptEntryChanged, NULL);
+ ecore_imf_context_input_panel_event_callback_add(imfContext, ECORE_IMF_INPUT_PANEL_STATE_EVENT, promptEntryChanged, 0);
elm_entry_scrollable_set(m_entry, EINA_TRUE);
elm_object_text_set(m_entry, defaultValue);
elm_entry_cursor_end_set(m_entry);
elm_object_part_content_set(layout, "prompt_container", m_entry);
elm_object_content_set(m_popup, layout);
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_popup, EA_CALLBACK_BACK, promptHwBackKeyCallback, this);
+ }
+#endif
+
Evas_Object* okButton = elm_button_add(m_popup);
- //FIXME: Need to apply i18n for the button label
+ // FIXME: Need to apply i18n for the button label
elm_object_text_set(okButton, "OK");
elm_object_part_content_set(m_popup, "button1", okButton);
evas_object_smart_callback_add(okButton, "clicked", promptOkCallback, this);
Evas_Object* cancelButton = elm_button_add(m_popup);
- //FIXME: Need to apply i18n for the button label
+ // FIXME: Need to apply i18n for the button label
elm_object_text_set(cancelButton, "Cancel");
elm_object_part_content_set(m_popup, "button2", cancelButton);
evas_object_smart_callback_add(cancelButton, "clicked", promptCancelCallback, this);
return false;
Evas_Object* leaveButton = elm_button_add(m_popup);
- //FIXME: Need to apply i18n for the button label
+ // FIXME: Need to apply i18n for the button label
elm_object_text_set(leaveButton, "Leave");
elm_object_part_content_set(m_popup, "button1", leaveButton);
evas_object_smart_callback_add(leaveButton, "clicked", beforeUnloadConfirmPanelLeaveCallback, this);
Evas_Object* stayButton = elm_button_add(m_popup);
- //FIXME: Need to apply i18n for the button label
+ // FIXME: Need to apply i18n for the button label
elm_object_text_set(stayButton, "Stay");
elm_object_part_content_set(m_popup, "button2", stayButton);
evas_object_smart_callback_add(stayButton, "clicked", beforeUnloadConfirmPanelStayCallback, this);
evas_object_del(m_popup);
}
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+static void linkMagnifierHwBackKeyCallback(void* data, Evas_Object* obj, void* eventInfo)
+{
+ elm_ctxpopup_dismiss(obj);
+}
+#endif
+
void LinkMagnifierProxy::show(EwkViewImpl* viewImpl, const IntPoint& position, const IntRect& rect)
{
Evas_Object* viewWidget = viewImpl->view();
return;
m_popup = elm_ctxpopup_add(topWidget);
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_popup, EA_CALLBACK_BACK, linkMagnifierHwBackKeyCallback, 0);
+ }
+#endif
elm_ctxpopup_direction_priority_set(m_popup, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_DOWN);
evas_object_smart_callback_add(m_popup, "dismissed", dismissed, 0);
}
#include <stdio.h>
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+#include <dlfcn.h>
+#include <efl_assist.h>
+extern void* EflAssistHandle;
+#endif
+
using namespace WebCore;
namespace WebKit {
menuProxy->m_popup = 0;
}
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+static void contextMenuHwBackKeyCallback(void* data, Evas_Object* obj, void* eventInfo)
+{
+ elm_ctxpopup_dismiss(obj);
+}
+#endif
+
void WebContextMenuProxyTizen::createEflMenu(const Vector<WebContextMenuItemData>& items)
{
if (m_popup)
if (!m_popup)
return;
+#if ENABLE(TIZEN_HW_MORE_BACK_KEY)
+ if (EflAssistHandle) {
+ void (*webkit_ea_object_event_callback_add)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *);
+ webkit_ea_object_event_callback_add = (void (*)(Evas_Object *, Ea_Callback_Type , Ea_Event_Cb func, void *))dlsym(EflAssistHandle, "ea_object_event_callback_add");
+ (*webkit_ea_object_event_callback_add)(m_popup, EA_CALLBACK_BACK, contextMenuHwBackKeyCallback, 0);
+ }
+#endif
+
m_items = items;
evas_object_data_set(m_popup, "WebContextMenuProxyTizen", this);
elm_object_tree_focus_allow_set(m_popup, false);
--- /dev/null
+# - Try to find efl-assist
+# Once done, this will define
+#
+# EFL_ASSIST_FOUND - system has efl-assist
+# EFL_ASSIST_INCLUDE_DIRS - the efl-assist include directories
+# EFL_ASSIST_LIBRARIES - link these to use efl-assist
+
+INCLUDE(FindPkgConfig)
+
+PKG_CHECK_MODULES(PC_EFL_ASSIST efl-assist)
+
+FIND_PATH(EFL_ASSIST_INCLUDE_DIRS NAMES efl_assist.h
+ HINTS ${PC_EFL_ASSIST_INCLUDE_DIRS} ${PC_EFL_ASSIST_INCLUDEDIR}
+)
+
+FIND_LIBRARY(EFL_ASSIST_LIBRARIES NAMES efl-assist
+ HINTS ${PC_EFL_ASSIST_LIBRARY_DIRS} ${PC_EFL_ASSIST_LIBDIR}
+)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(EFL_ASSIST DEFAULT_MSG EFL_ASSIST_INCLUDE_DIRS EFL_ASSIST_LIBRARIES)
FIND_PACKAGE(UIGadget REQUIRED)
FIND_PACKAGE(VConf REQUIRED)
FIND_PACKAGE(feedback REQUIRED)
+FIND_PACKAGE(EFL_ASSIST REQUIRED)
ADD_DEFINITIONS(-DENABLE_GESTURE_EVENTS=1)
BuildRequires: pkgconfig(edbus)
BuildRequires: pkgconfig(edje)
BuildRequires: pkgconfig(eeze)
+BuildRequires: pkgconfig(efl-assist)
BuildRequires: pkgconfig(eina)
BuildRequires: pkgconfig(elementary)
BuildRequires: pkgconfig(enchant)