else
eext_object_event_callback_add(popup_, EEXT_CALLBACK_BACK, CancelButtonHandlerForConfirm, this);
#endif
- evas_object_focus_set(popup_, true);
- evas_object_show(popup_);
+ evas_object_event_callback_add(popup_, EVAS_CALLBACK_KEY_UP, KeyUpCallback, this);
+ evas_object_focus_set(popup_, true);
+ evas_object_show(popup_);
int width = 0, height = 0;
#if defined(USE_WAYLAND)
dialog->web_view_->SmartCallback<EWebViewCallbacks::PopupReplyWaitFinish>().call(0);
}
+bool MapsToHWBackKey(char* keyname) {
+ // Escape key is associated with HW Back Key. Everything else is not.
+ return strcmp(keyname, "Escape") == 0;
+}
+
+// General key up callback for all platforms designed to handle keyboard HW Back key
+void JavaScriptModalDialogEfl::KeyUpCallback(void *data, Evas *e, Evas_Object *obj, void *event_info) {
+ Evas_Event_Key_Up* key_struct = static_cast<Evas_Event_Key_Up*>(event_info);
+ if (!MapsToHWBackKey(key_struct->keyname))
+ return;
+
+ JavaScriptModalDialogEfl* dialog = static_cast<JavaScriptModalDialogEfl*>(data);
+
+ if (dialog->type_ == PROMPT || dialog->type_ == NAVIGATION)
+ CancelButtonHandlerForPrompt(data, obj, event_info);
+ else if (dialog->type_ == ALERT)
+ CancelButtonHandlerForAlert(data, obj, event_info);
+ else
+ CancelButtonHandlerForConfirm(data, obj, event_info);
+}
+
void JavaScriptModalDialogEfl::close() {
if(popup_) {
evas_object_del(popup_);
const base::string16& default_prompt_text,
const content::JavaScriptDialogManager::DialogClosedCallback& callback);
+ static void KeyUpCallback(void *data, Evas *e, Evas_Object *obj, void *event_info);
bool ShowJavaScriptDialog();
Evas_Object* popupAdd();
bool setLabelText(const char* message);