const char * const URICHANGE_BLOCKED_URL = "null";
const char* PATTERN_URI_CHANGE = "^(([^:/\\?#]+)://[^\\?#]*)";
const int MAX_NUM_CONTEXT_MENU_ITEMS = 10;
+// IME State value
+const char * const IME_STATE_ON = "on";
+const char * const IME_STATE_OFF = "off";
// WKPageLoaderClient
const char * const EWK_LOAD_STARTED = "load,started";
// DataBase Use Ask Title
const char * const DATABASE_USE_ASK_TITLE = "Increase Database Size?";
const char * const FILESYSTEM_USE_ASK_TITLE = "Use FileSystem?";
+
+// IME Callback
+const char * const EWK_INPUTMETHOD_CHANGED = "inputmethod,changed";
+const char * const EWK_EDITORCLIENT_IME_CLOSED = "editorclient,ime,closed";
}
ViewLogic::ViewLogic():
EWK_FULLSCREEN_EXIT,
exitFullscreenCallback,
this);
+
+
+ // when ime start to be showed on the webview,
+ // this callback will be called
+ evas_object_smart_callback_add(
+ wkView,
+ EWK_INPUTMETHOD_CHANGED,
+ imeOpenCallback,
+ this);
+
+ // this callback will be called
+ // when ime finishes to be showed on the webview
+ // "event_info" arg of this callback is always NULL point
+ // if web content should know size of ime,
+ // use "inputmethod,changed" instead of this.
+ //
+ //evas_object_smart_callback_add(
+ // wkView,
+ // "editorclient,ime,opened",
+ // imeSomethingCallback,
+ // this);
+
+ // when ime finished to be hidden,
+ // this callback will be called
+ evas_object_smart_callback_add(
+ wkView,
+ EWK_EDITORCLIENT_IME_CLOSED,
+ imeCloseCallback,
+ this);
}
void ViewLogic::ewkClientDeinit(Evas_Object *wkView) {
wkView,
NULL,
NULL);
+
+ // ime show/hide callback
+ evas_object_smart_callback_del(
+ wkView,
+ EWK_INPUTMETHOD_CHANGED,
+ imeOpenCallback);
+ evas_object_smart_callback_del(
+ wkView,
+ EWK_EDITORCLIENT_IME_CLOSED,
+ imeCloseCallback);
}
void ViewLogic::createEwkView()
}
}
+void ViewLogic::imeOpenCallback(
+ void* data,
+ Evas_Object* /*obj*/,
+ void* eventInfo)
+{
+ LogDebug("enter");
+ Assert(data);
+ Assert(eventInfo);
+ ViewLogic* This = static_cast<ViewLogic*>(data);
+ Eina_Rectangle *rect = static_cast<Eina_Rectangle *>(eventInfo);
+
+ using namespace WrtPlugins::W3C;
+ SoftKeyboardChangeArgs args;
+ args.state = IME_STATE_ON;
+ args.width = rect->w;
+ args.height = rect->h;
+ This->fireJavascriptEvent(
+ static_cast<int>(SoftKeyboardChangeCustomEvent),
+ &args);
+}
+
+void ViewLogic::imeCloseCallback(
+ void* data,
+ Evas_Object* /*obj*/,
+ void* /*eventInfo*/)
+{
+ LogDebug("enter");
+ Assert(data);
+ ViewLogic* This = static_cast<ViewLogic*>(data);
+
+ using namespace WrtPlugins::W3C;
+ SoftKeyboardChangeArgs args;
+ args.state = IME_STATE_OFF;
+
+ This->fireJavascriptEvent(
+ static_cast<int>(SoftKeyboardChangeCustomEvent),
+ &args);
+}
+
void ViewLogic::didRunJavaScriptCallback(
Evas_Object* /*obj*/,
const char* result,