IME is not occured in prompt popup
authorDongjun Kim <djmix.kim@samsung.com>
Fri, 27 Feb 2015 07:24:29 +0000 (16:24 +0900)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
Regarding latest code, prompt popup was added by elm_popup_add().
In this case, IME is not shown with prompt popup.
Because of that IME only works on elm_conformant.

We need to adding elm_conformant_add() on top window.

Bug: http://web.sec.samsung.net/bugzilla/show_bug.cgi?id=11624
Reviewed by: Antonio Gomes, Hyunhak Kim, Piotr Tworek

Change-Id: Iffad198e60bcd79ee4862c0db4b03256b192f934
Signed-off-by: Dongjun Kim <djmix.kim@samsung.com>
tizen_src/impl/browser/javascript_modal_dialog_efl.cc

index c856ff1..85343d2 100644 (file)
@@ -67,7 +67,30 @@ static void promptEnterKeyDownCallback(void* data, Evas_Object* obj, void* event
 }
 
 bool JavaScriptModalDialogEfl::ShowJavaScriptDialog() {
-  popup_ = elm_popup_add(web_view_->evas_object());
+  Evas_Object* parent = elm_object_top_widget_get(
+      elm_object_parent_widget_get(web_view_->evas_object()));
+  if (!parent)
+    parent = web_view_->evas_object();
+
+  Evas_Object* conformant = elm_conformant_add(parent);
+  if (!conformant)
+    return 0;
+
+  evas_object_size_hint_weight_set(conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+  elm_win_resize_object_add(parent, conformant);
+  evas_object_show(conformant);
+
+  Evas_Object* layout_ = elm_layout_add(conformant);
+  if (!layout_)
+    return 0;
+
+  elm_layout_theme_set(layout_, "layout", "application", "default");
+  evas_object_size_hint_weight_set(layout_, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+  evas_object_show(layout_);
+
+  elm_object_content_set(conformant, layout_);
+
+  popup_ = elm_popup_add(layout_);
 
   if (!popup_)
     return false;
@@ -277,7 +300,7 @@ void JavaScriptModalDialogEfl::OkButtonHandlerForAlert(void *data, Evas_Object *
   JavaScriptModalDialogEfl* dialog = (JavaScriptModalDialogEfl*)data;
 
   dialog->callback_.Run(true, base::string16());
-  evas_object_del(elm_object_top_widget_get(obj));
+  evas_object_del(dialog->popup_);
   dialog->close();
 
   dialog->web_view_->SmartCallback<EWebViewCallbacks::PopupReplyWaitFinish>().call(0);
@@ -287,7 +310,7 @@ void JavaScriptModalDialogEfl::CancelButtonHandlerForAlert(void *data, Evas_Obje
   JavaScriptModalDialogEfl* dialog = (JavaScriptModalDialogEfl*)data;
 
   dialog->callback_.Run(false, base::string16());
-  evas_object_del(elm_object_top_widget_get(obj));
+  evas_object_del(dialog->popup_);
   dialog->close();
 
   dialog->web_view_->SmartCallback<EWebViewCallbacks::PopupReplyWaitFinish>().call(0);
@@ -297,7 +320,7 @@ void JavaScriptModalDialogEfl::OkButtonHandlerForConfirm(void *data, Evas_Object
   JavaScriptModalDialogEfl* dialog = (JavaScriptModalDialogEfl*)data;
 
   dialog->callback_.Run(true, base::string16());
-  evas_object_del(elm_object_top_widget_get(obj));
+  evas_object_del(dialog->popup_);
   dialog->close();
 
   dialog->web_view_->SmartCallback<EWebViewCallbacks::PopupReplyWaitFinish>().call(0);
@@ -307,7 +330,7 @@ void JavaScriptModalDialogEfl::CancelButtonHandlerForConfirm(void *data, Evas_Ob
   JavaScriptModalDialogEfl* dialog = (JavaScriptModalDialogEfl*)data;
 
   dialog->callback_.Run(false, base::string16());
-  evas_object_del(elm_object_top_widget_get(obj));
+  evas_object_del(dialog->popup_);
   dialog->close();
 
   dialog->web_view_->SmartCallback<EWebViewCallbacks::PopupReplyWaitFinish>().call(0);
@@ -321,7 +344,7 @@ void JavaScriptModalDialogEfl::OkButtonHandlerForPrompt(void *data, Evas_Object
     prompt_data = elm_entry_entry_get(dialog->prompt_entry_);
 
   dialog->callback_.Run(true, base::UTF8ToUTF16(prompt_data));
-  evas_object_del(elm_object_top_widget_get(obj));
+  evas_object_del(dialog->popup_);
   dialog->close();
 
   dialog->web_view_->SmartCallback<EWebViewCallbacks::PopupReplyWaitFinish>().call(0);
@@ -331,7 +354,7 @@ void JavaScriptModalDialogEfl::CancelButtonHandlerForPrompt(void *data, Evas_Obj
   JavaScriptModalDialogEfl* dialog = (JavaScriptModalDialogEfl*)data;
 
   dialog->callback_.Run(false, base::string16());
-  evas_object_del(elm_object_top_widget_get(obj));
+  evas_object_del(dialog->popup_);
   dialog->close();
 
   dialog->web_view_->SmartCallback<EWebViewCallbacks::PopupReplyWaitFinish>().call(0);