!80 切换多用户时,优化切换输入法的逻辑

Merge pull request !80 from demon/master
This commit is contained in:
openharmony_ci
2022-02-21 08:28:53 +00:00
committed by Gitee
+8 -5
View File
@@ -547,27 +547,30 @@ namespace MiscServices {
IMSA_HILOGE("Aborted! %s\n", ErrorCode::ToString(ErrorCode::ERROR_BAD_PARAMETERS));
return ErrorCode::ERROR_BAD_PARAMETERS;
}
std::string defaultIme = ParaHandle::GetDefaultIme(userId_);
std::string currentDefaultIme = ParaHandle::GetDefaultIme(userId_);
int32_t userId = msg->msgContent_->ReadInt32();
userId_ = userId;
IMSA_HILOGI("InputMethodSystemAbility::OnUserStarted userId = %{public}u", userId);
std::string newDefaultIme = ParaHandle::GetDefaultIme(userId_);
if (newDefaultIme != currentDefaultIme) {
StopInputService(currentDefaultIme);
StartInputService(newDefaultIme);
}
PerUserSetting *setting = GetUserSetting(userId);
if (setting != nullptr) {
IMSA_HILOGE("Aborted! %s %d\n", ErrorCode::ToString(ErrorCode::ERROR_USER_ALREADY_STARTED), userId);
return ErrorCode::ERROR_USER_ALREADY_STARTED;
}
StopInputService(defaultIme);
setting = new PerUserSetting(userId);
setting->Initialize();
PerUserSession *session = new PerUserSession(userId);
userSettings.insert(std::pair<int32_t, PerUserSetting*>(userId, setting));
userSessions.insert(std::pair<int32_t, PerUserSession*>(userId, session));
defaultIme = ParaHandle::GetDefaultIme(userId_);
StartInputService(defaultIme);
return ErrorCode::NO_ERROR;
}