public: // Signals
ActivatedSignalType& ActivatedSignal() { return mActivatedSignal; }
KeyboardEventSignalType& EventReceivedSignal() { return mEventSignal; }
+ KeyboardEventSignalType& KeyboardEventReceivedSignal() { return mKeyboardEventSignal; }
StatusSignalType& StatusChangedSignal() { return mKeyboardStatusSignal; }
VoidSignalType& ResizedSignal() { return mKeyboardResizeSignal; }
VoidSignalType& LanguageChangedSignal() { return mKeyboardLanguageChangedSignal; }
ActivatedSignalType mActivatedSignal;
KeyboardEventSignalType mEventSignal;
+ KeyboardEventSignalType mKeyboardEventSignal;
StatusSignalType mKeyboardStatusSignal;
VoidSignalType mKeyboardResizeSignal;
VoidSignalType mKeyboardLanguageChangedSignal;
return Internal::Adaptor::InputMethodContext::GetImplementation(*this).EventReceivedSignal();
}
+InputMethodContext::KeyboardEventSignalType& InputMethodContext::KeyboardEventReceivedSignal()
+{
+ return Internal::Adaptor::InputMethodContext::GetImplementation(*this).KeyboardEventReceivedSignal();
+}
+
InputMethodContext::StatusSignalType& InputMethodContext::StatusChangedSignal()
{
return Internal::Adaptor::InputMethodContext::GetImplementation(*this).StatusChangedSignal();
ActivatedSignalType& ActivatedSignal();
/**
- * @brief This is emitted when the input method context receives an event.
+ * @brief This is emitted when the InputMethodContext receives an event from the InputMethodContext.
+ * @note This signal is the same as KeyboardEventReceivedSignal().
+ * This signal is bound to dali-csharp-binder and can be used in external apps.
*
* @return The Event signal containing the event data.
*/
KeyboardEventSignalType& EventReceivedSignal();
+ /**
+ * @brief This is emitted when the InputMethodContext receives an event from the InputMethodContext.
+ * @note This signal is the same as EventReceivedSignal().
+ * This signal is only used by dali.
+ *
+ * The EventReceivedSignal combines different kinds of events triggered by the IMF into a single signal, which it then emits.
+ * These events often happen during text entry through S/W keyboard and Applications depend on this signal to perform various actions.
+ * There exists a situation where further emissions take place inside the emitted signal.
+ * Unfortunately, these events are already exposed publicly and cannot be segregated separately.
+ * As a workaround, we keep the original signal intact but separate signals meant exclusively for usage within dali.
+ *
+ * @return The Event signal containing the event data.
+ */
+ KeyboardEventSignalType& KeyboardEventReceivedSignal();
+
/**
* @brief Connect to this signal to be notified when the virtual keyboard is shown or hidden.
*
// input text
gTextChangedCallBackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "ㅎ", 0, 1);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
application.SendNotification();
application.Render();
DALI_TEST_CHECK(gTextChangedCallBackCalled);
gTextChangedCallBackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "호", 0, 1);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
application.SendNotification();
application.Render();
DALI_TEST_CHECK(gTextChangedCallBackCalled);
gTextChangedCallBackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "혿", 0, 1);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
application.SendNotification();
application.Render();
DALI_TEST_CHECK(gTextChangedCallBackCalled);
gTextChangedCallBackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "", 0, 1);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
DALI_TEST_CHECK(!gTextChangedCallBackCalled);
imfEvent = InputMethodContext::EventData(InputMethodContext::COMMIT, "호", 0, 1);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
DALI_TEST_CHECK(!gTextChangedCallBackCalled);
imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "두", 1, 2);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
DALI_TEST_CHECK(!gTextChangedCallBackCalled);
application.SendNotification();
// input text
gTextChangedCallBackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "ㅎ", 0, 1);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
application.SendNotification();
application.Render();
DALI_TEST_CHECK(gTextChangedCallBackCalled);
gTextChangedCallBackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "호", 0, 1);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
application.SendNotification();
application.Render();
DALI_TEST_CHECK(gTextChangedCallBackCalled);
gTextChangedCallBackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "혿", 0, 1);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
application.SendNotification();
application.Render();
DALI_TEST_CHECK(gTextChangedCallBackCalled);
gTextChangedCallBackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "", 0, 1);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
DALI_TEST_CHECK(!gTextChangedCallBackCalled);
imfEvent = InputMethodContext::EventData(InputMethodContext::COMMIT, "호", 0, 1);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
DALI_TEST_CHECK(!gTextChangedCallBackCalled);
imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "두", 1, 2);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
DALI_TEST_CHECK(!gTextChangedCallBackCalled);
application.SendNotification();
// input text
gSelectionChangedCallbackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::SELECTION_SET, 1, 4);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
application.SendNotification();
application.Render();
DALI_TEST_CHECK(gSelectionChangedCallbackCalled);
// input text
gCursorPositionChangedCallbackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::SELECTION_SET, 2, 2);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
application.SendNotification();
application.Render();
DALI_TEST_CHECK(gCursorPositionChangedCallbackCalled);
// input text
gInputFilteredAcceptedCallbackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::COMMIT, "Hello1234", 0, 9);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
application.SendNotification();
application.Render();
DALI_TEST_CHECK(gInputFilteredAcceptedCallbackCalled);
inputFilteredSignal = false;
gInputFilteredRejectedCallbackCalled = false;
imfEvent = InputMethodContext::EventData(InputMethodContext::COMMIT, "1234567", 0, 7);
- inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent);
+ inputMethodContext.KeyboardEventReceivedSignal().Emit(inputMethodContext, imfEvent);
application.SendNotification();
application.Render();
DALI_TEST_CHECK(gInputFilteredRejectedCallbackCalled);
mInputMethodContext.StatusChangedSignal().Connect(this, &TextEditor::KeyboardStatusChanged);
- mInputMethodContext.EventReceivedSignal().Connect(this, &TextEditor::OnInputMethodContextEvent);
+ mInputMethodContext.KeyboardEventReceivedSignal().Connect(this, &TextEditor::OnInputMethodContextEvent);
// Notify that the text editing start.
mInputMethodContext.Activate();
// Notify that the text editing finish.
mInputMethodContext.Deactivate();
- mInputMethodContext.EventReceivedSignal().Disconnect(this, &TextEditor::OnInputMethodContextEvent);
+ mInputMethodContext.KeyboardEventReceivedSignal().Disconnect(this, &TextEditor::OnInputMethodContextEvent);
}
mController->KeyboardFocusLostEvent();
mInputMethodContext.StatusChangedSignal().Connect(this, &TextField::KeyboardStatusChanged);
- mInputMethodContext.EventReceivedSignal().Connect(this, &TextField::OnInputMethodContextEvent);
+ mInputMethodContext.KeyboardEventReceivedSignal().Connect(this, &TextField::OnInputMethodContextEvent);
// Notify that the text editing start.
mInputMethodContext.Activate();
// Notify that the text editing finish.
mInputMethodContext.Deactivate();
- mInputMethodContext.EventReceivedSignal().Disconnect(this, &TextField::OnInputMethodContextEvent);
+ mInputMethodContext.KeyboardEventReceivedSignal().Disconnect(this, &TextField::OnInputMethodContextEvent);
}
mController->KeyboardFocusLostEvent();