+void WidgetApplicationTizen::ConnectKeyEvent(Dali::Window window)
+{
+ if(!mConnectedKeyEvent)
+ {
+#ifdef OVER_TIZEN_VERSION_7
+ screen_connector_provider_set_key_event_cb(OnKeyEventCallback, this);
+#endif
+ mConnectedKeyEvent = true;
+ }
+ window.KeyEventSignal().Connect(this, &WidgetApplicationTizen::OnWindowKeyEvent);
+}
+
+void WidgetApplicationTizen::OnWindowKeyEvent(const Dali::KeyEvent& event)
+{
+ //If Widget Application consume key event, this api is not called.
+ mReceivedKeyEvent = true;
+}
+
+bool WidgetApplicationTizen::FeedKeyEvent(widget_base_instance_h instanceHandle, const Dali::KeyEvent& keyEvent)
+{
+ bool consumed = true;
+
+ // Check if application consume key event
+ Dali::Widget widgetInstance = GetWidget(instanceHandle);
+ if(widgetInstance)
+ {
+ Dali::Window window = GetWindowFromWidget(widgetInstance);
+
+ // Reset the state of key received
+ mReceivedKeyEvent = false;
+
+ // Feed the keyEvent to widget window
+ DevelWindow::FeedKeyEvent(window, keyEvent);
+
+ // if the application is not using a key event, verify that the window in the widget has received a key event.
+ if(Internal::Adaptor::GetImplementation(widgetInstance).IsKeyEventUsing() == false)
+ {
+ // if the window has received a key event, widget need to consume its key event
+ consumed = (mReceivedKeyEvent) ? false : true;
+ }
+ }
+
+ return consumed;
+}
+