namespace Adaptor\r
{\r
\r
-InputMethodContextPtr InputMethodContextWin::New()\r
+InputMethodContextPtr InputMethodContextWin::New( Dali::Actor actor )\r
{\r
InputMethodContextPtr manager;\r
\r
- if ( Adaptor::IsAvailable() )\r
+ if ( actor && Adaptor::IsAvailable() )\r
{\r
- // Create instance and register singleton only if the adaptor is available\r
- Adaptor& adaptorImpl( Adaptor::GetImplementation( Adaptor::Get() ) );\r
- Any nativeWindow = adaptorImpl.GetNativeWindowHandle();\r
-\r
- // The Win_Window_Handle needs to use the InputMethodContext.\r
- // Only when the render surface is window, we can get the Win_Window_Handle.\r
- WinWindowHandle winWindow( AnyCast<WinWindowHandle>(nativeWindow) );\r
- if ( winWindow )\r
- {\r
- manager = new InputMethodContextWin( winWindow );\r
- }\r
- else\r
- {\r
- DALI_LOG_ERROR("Failed to get native window handle\n");\r
- }\r
+ manager = new InputMethodContextWin( actor );\r
}\r
\r
return manager;\r
{\r
}\r
\r
-InputMethodContextWin::InputMethodContextWin( WinWindowHandle winWindow )\r
-: mWin32Window( winWindow ),\r
+InputMethodContextWin::InputMethodContextWin( Dali::Actor actor )\r
+: mWin32Window( 0 ),\r
mIMFCursorPosition( 0 ),\r
mSurroundingText(),\r
mRestoreAfterFocusLost( false ),\r
mIdleCallbackConnected( false )\r
{\r
+\r
+ actor.OnStageSignal().Connect( this, &InputMethodContextWin::OnStaged );\r
}\r
\r
InputMethodContextWin::~InputMethodContextWin()\r
* We are still predicting what the user is typing. The latest string is what the InputMethodContext module thinks\r
* the user wants to type.\r
*/\r
-void InputMethodContextWin::PreEditChanged( void*, ImfContext* imfContext, void* event_info )\r
+void InputMethodContextWin::PreEditChanged( void*, ImfContext* imfContext, void* eventInfo )\r
{\r
DALI_LOG_INFO( gLogFilter, Debug::General, "InputMethodContextWin::PreEditChanged\n" );\r
}\r
\r
-void InputMethodContextWin::CommitReceived( void*, ImfContext* imfContext, void* event_info )\r
+void InputMethodContextWin::CommitReceived( void*, ImfContext* imfContext, void* eventInfo )\r
{\r
DALI_LOG_INFO( gLogFilter, Debug::General, "InputMethodContextWin::CommitReceived\n" );\r
\r
if ( Dali::Adaptor::IsAvailable() )\r
{\r
- const std::string keyString( static_cast<char*>( event_info ) );\r
+ const std::string keyString( static_cast<char*>( eventInfo ) );\r
\r
Dali::InputMethodContext handle( this );\r
Dali::InputMethodContext::EventData eventData( Dali::InputMethodContext::COMMIT, keyString, 0, 0 );\r
* Called when an InputMethodContext delete surrounding event is received.\r
* Here we tell the application that it should delete a certain range.\r
*/\r
-void InputMethodContextWin::DeleteSurrounding( void* data, ImfContext* imfContext, void* event_info )\r
+void InputMethodContextWin::DeleteSurrounding( void* data, ImfContext* imfContext, void* eventInfo )\r
{\r
DALI_LOG_INFO( gLogFilter, Debug::General, "InputMethodContextWin::DeleteSurrounding\n" );\r
}\r
return locale;\r
}\r
\r
+void InputMethodContextWin::SetContentMIMETypes( const std::string& mimeTypes )\r
+{\r
+ DALI_LOG_INFO( gLogFilter, Debug::General, "InputMethodContextWin::SetContentMIMETypes\n" );\r
+}\r
+\r
bool InputMethodContextWin::FilterEventKey( const Dali::KeyEvent& keyEvent )\r
{\r
bool eventHandled( false );\r
return eventHandled;\r
}\r
\r
+void InputMethodContextWin::SetInputPanelLanguage( Dali::InputMethodContext::InputPanelLanguage language )\r
+{\r
+ DALI_LOG_INFO( gLogFilter, Debug::General, "InputMethodContextWin::SetInputPanelLanguage\n" );\r
+}\r
+\r
+Dali::InputMethodContext::InputPanelLanguage InputMethodContextWin::GetInputPanelLanguage() const\r
+{\r
+ DALI_LOG_INFO( gLogFilter, Debug::General, "InputMethodContextWin::GetInputPanelLanguage\n" );\r
+ return Dali::InputMethodContext::InputPanelLanguage::AUTOMATIC;\r
+}\r
+\r
bool InputMethodContextWin::ProcessEventKeyDown( const KeyEvent& keyEvent )\r
{\r
bool eventHandled( false );\r
return eventHandled;\r
}\r
\r
+void InputMethodContextWin::OnStaged( Dali::Actor actor )\r
+{\r
+ WinWindowHandle winWindow( AnyCast< WinWindowHandle >( Dali::Integration::SceneHolder::Get( actor ).GetNativeHandle() ) );\r
+\r
+ if( mWin32Window != winWindow )\r
+ {\r
+ mWin32Window = winWindow;\r
+\r
+ // Reset\r
+ Finalize();\r
+ Initialize();\r
+ }\r
+}\r
+\r
} // Adaptor\r
\r
} // Internal\r