diff --git a/frameworks/native/inputmethod_ability/include/input_method_panel.h b/frameworks/native/inputmethod_ability/include/input_method_panel.h index 6eb5e61cbef8536a2479c53640b0853b1eec8b28..bc243f07309e15c06a82ba031d8832fd7dce1512 100644 --- a/frameworks/native/inputmethod_ability/include/input_method_panel.h +++ b/frameworks/native/inputmethod_ability/include/input_method_panel.h @@ -112,7 +112,7 @@ private: bool IsHidden(); int32_t SetPanelProperties(); std::string GeneratePanelName(); - void NotifyPanelStatus(); + void NotifyPanelStatus(PanelFlag panelFlag); void PanelStatusChange(const InputWindowStatus &status); void PanelStatusChangeToImc(const InputWindowStatus &status, const Rosen::Rect &rect); bool MarkListener(const std::string &type, bool isRegister); diff --git a/frameworks/native/inputmethod_ability/src/input_method_panel.cpp b/frameworks/native/inputmethod_ability/src/input_method_panel.cpp index c4bf3670729a3a72f861a4924cf5bfa5294b9049..047a26e2cd9693cbecf7c3ef4c19cb78802aa1f7 100644 --- a/frameworks/native/inputmethod_ability/src/input_method_panel.cpp +++ b/frameworks/native/inputmethod_ability/src/input_method_panel.cpp @@ -411,10 +411,10 @@ int32_t InputMethodPanel::GetDisplayId(uint64_t &displayId) return ErrorCode::NO_ERROR; } -void InputMethodPanel::NotifyPanelStatus() { +void InputMethodPanel::NotifyPanelStatus(PanelFlag panelFlag) { auto instance = InputMethodAbility::GetInstance(); if (instance != nullptr) { - SysPanelStatus sysPanelStatus = { InputType::NONE, panelFlag_, keyboardSize_.width, keyboardSize_.height }; + SysPanelStatus sysPanelStatus = { InputType::NONE, panelFlag, keyboardSize_.width, keyboardSize_.height }; instance->NotifyPanelStatus(panelType_, sysPanelStatus); } } @@ -472,15 +472,14 @@ int32_t InputMethodPanel::AdjustPanelRect( IMSA_HILOGE("failed to parse panel rect, result: %{public}d!", result); return ErrorCode::ERROR_WINDOW_MANAGER; } - if (panelFlag_ != panelFlag) { - NotifyPanelStatus(); - } - panelFlag_ = panelFlag; auto ret = window_->AdjustKeyboardLayout(keyboardLayoutParams_); if (ret != WMError::WM_OK) { IMSA_HILOGE("AdjustPanelRect error, err: %{public}d!", ret); return ErrorCode::ERROR_WINDOW_MANAGER; } + if (panelFlag_ != panelFlag) { + NotifyPanelStatus(panelFlag); + } UpdateResizeParams(); UpdateLayoutInfo(panelFlag, layoutParams, {}, keyboardLayoutParams_, false); if (needUpdateRegion) { @@ -580,7 +579,7 @@ int32_t InputMethodPanel::AdjustPanelRect(PanelFlag panelFlag, EnhancedLayoutPar } SetHotAreas(hotAreas); if (panelFlag_ != panelFlag) { - NotifyPanelStatus(); + NotifyPanelStatus(panelFlag); } UpdateLayoutInfo(panelFlag, {}, params, wmsParams, true); UpdateResizeParams(); @@ -1226,7 +1225,7 @@ int32_t InputMethodPanel::ChangePanelFlag(PanelFlag panelFlag) if (ret == WMError::WM_OK) { panelFlag_ = panelFlag; } - NotifyPanelStatus(); + NotifyPanelStatus(panelFlag); IMSA_HILOGI("flag: %{public}d, ret: %{public}d.", panelFlag, ret); return ret == WMError::WM_OK ? ErrorCode::NO_ERROR : ErrorCode::ERROR_OPERATE_PANEL; }