From bb17f3476b3f18aa674ef2022a5d41b95fe24922 Mon Sep 17 00:00:00 2001 From: pengyanggit Date: Tue, 30 Apr 2024 16:21:08 +0800 Subject: [PATCH 1/2] Signed-off-by: pengyanggit Change-Id: Iafea2edd9dc80338ae4e3d65adf8c02ea36d8f80 --- .../proxy/event_handler/include/input_manager_impl.h | 2 +- frameworks/proxy/event_handler/src/input_manager_impl.cpp | 4 ++-- frameworks/proxy/events/src/input_manager.cpp | 4 ++-- interfaces/native/innerkits/proxy/include/input_manager.h | 2 +- .../connect_manager/include/i_multimodal_input_connect.h | 2 +- .../include/multimodal_input_connect_manager.h | 2 +- .../include/multimodal_input_connect_proxy.h | 2 +- .../src/multimodal_input_connect_manager.cpp | 4 ++-- .../src/multimodal_input_connect_proxy.cpp | 3 ++- .../connect_manager/src/multimodal_input_connect_stub.cpp | 4 +++- service/message_handle/src/server_msg_handler.cpp | 4 ++-- service/module_loader/include/mmi_service.h | 2 +- service/module_loader/src/mmi_service.cpp | 4 ++-- .../window_manager/include/i_pointer_drawing_manager.h | 2 +- service/window_manager/include/pointer_drawing_manager.h | 2 +- service/window_manager/src/input_windows_manager.cpp | 2 +- service/window_manager/src/pointer_drawing_manager.cpp | 8 ++++---- 17 files changed, 28 insertions(+), 25 deletions(-) diff --git a/frameworks/proxy/event_handler/include/input_manager_impl.h b/frameworks/proxy/event_handler/include/input_manager_impl.h index b5d4c75e3..d6ad3d11d 100644 --- a/frameworks/proxy/event_handler/include/input_manager_impl.h +++ b/frameworks/proxy/event_handler/include/input_manager_impl.h @@ -140,7 +140,7 @@ public: int32_t SetHoverScrollState(bool state); int32_t GetHoverScrollState(bool &state); - int32_t SetPointerVisible(bool visible); + int32_t SetPointerVisible(bool visible, int32_t priority); bool IsPointerVisible(); int32_t SetPointerStyle(int32_t windowId, const PointerStyle& pointerStyle); int32_t GetPointerStyle(int32_t windowId, PointerStyle &pointerStyle); diff --git a/frameworks/proxy/event_handler/src/input_manager_impl.cpp b/frameworks/proxy/event_handler/src/input_manager_impl.cpp index 0c3d98edf..18e0f86b9 100644 --- a/frameworks/proxy/event_handler/src/input_manager_impl.cpp +++ b/frameworks/proxy/event_handler/src/input_manager_impl.cpp @@ -1097,12 +1097,12 @@ int32_t InputManagerImpl::GetHoverScrollState(bool &state) #endif // OHOS_BUILD_ENABLE_POINTER } -int32_t InputManagerImpl::SetPointerVisible(bool visible) +int32_t InputManagerImpl::SetPointerVisible(bool visible, int32_t priority) { CALL_INFO_TRACE; #if defined(OHOS_BUILD_ENABLE_POINTER) && defined(OHOS_BUILD_ENABLE_POINTER_DRAWING) std::lock_guard guard(mtx_); - int32_t ret = MULTIMODAL_INPUT_CONNECT_MGR->SetPointerVisible(visible); + int32_t ret = MULTIMODAL_INPUT_CONNECT_MGR->SetPointerVisible(visible, priority); if (ret != RET_OK) { MMI_HILOGE("Set pointer visible failed, ret:%{public}d", ret); } diff --git a/frameworks/proxy/events/src/input_manager.cpp b/frameworks/proxy/events/src/input_manager.cpp index 389245533..1910e4cf4 100644 --- a/frameworks/proxy/events/src/input_manager.cpp +++ b/frameworks/proxy/events/src/input_manager.cpp @@ -268,9 +268,9 @@ int32_t InputManager::GetHoverScrollState(bool &state) return InputMgrImpl.GetHoverScrollState(state); } -int32_t InputManager::SetPointerVisible(bool visible) +int32_t InputManager::SetPointerVisible(bool visible, int32_t priority) { - return InputMgrImpl.SetPointerVisible(visible); + return InputMgrImpl.SetPointerVisible(visible, priority); } bool InputManager::IsPointerVisible() diff --git a/interfaces/native/innerkits/proxy/include/input_manager.h b/interfaces/native/innerkits/proxy/include/input_manager.h index e405a8c02..1456cfac1 100644 --- a/interfaces/native/innerkits/proxy/include/input_manager.h +++ b/interfaces/native/innerkits/proxy/include/input_manager.h @@ -437,7 +437,7 @@ public: * @return Returns 0 if success; returns a non-0 value otherwise. * @since 9 */ - int32_t SetPointerVisible(bool visible); + int32_t SetPointerVisible(bool visible, int32_t priority = 0); /** * @brief Checks whether the pointer icon is visible. diff --git a/service/connect_manager/include/i_multimodal_input_connect.h b/service/connect_manager/include/i_multimodal_input_connect.h index d85037bac..18dba35d2 100644 --- a/service/connect_manager/include/i_multimodal_input_connect.h +++ b/service/connect_manager/include/i_multimodal_input_connect.h @@ -64,7 +64,7 @@ public: virtual int32_t GetMousePrimaryButton(int32_t &primaryButton) = 0; virtual int32_t SetHoverScrollState(bool state) = 0; virtual int32_t GetHoverScrollState(bool &state) = 0; - virtual int32_t SetPointerVisible(bool visible) = 0; + virtual int32_t SetPointerVisible(bool visible, int32_t priority) = 0; virtual int32_t IsPointerVisible(bool &visible) = 0; virtual int32_t MarkProcessed(int32_t eventType, int32_t eventId) = 0; virtual int32_t SetPointerColor(int32_t color) = 0; diff --git a/service/connect_manager/include/multimodal_input_connect_manager.h b/service/connect_manager/include/multimodal_input_connect_manager.h index 48526ca9a..8a117bded 100644 --- a/service/connect_manager/include/multimodal_input_connect_manager.h +++ b/service/connect_manager/include/multimodal_input_connect_manager.h @@ -59,7 +59,7 @@ public: int32_t GetMousePrimaryButton(int32_t &primaryButton); int32_t SetHoverScrollState(bool state); int32_t GetHoverScrollState(bool &state); - int32_t SetPointerVisible(bool visible); + int32_t SetPointerVisible(bool visible, int32_t priority); int32_t IsPointerVisible(bool &visible); int32_t MarkProcessed(int32_t eventType, int32_t eventId); int32_t SetPointerColor(int32_t color); diff --git a/service/connect_manager/include/multimodal_input_connect_proxy.h b/service/connect_manager/include/multimodal_input_connect_proxy.h index 77d5e76d1..e71b8b9f6 100644 --- a/service/connect_manager/include/multimodal_input_connect_proxy.h +++ b/service/connect_manager/include/multimodal_input_connect_proxy.h @@ -53,7 +53,7 @@ public: int32_t GetMousePrimaryButton(int32_t &primaryButton) override; int32_t SetHoverScrollState(bool state) override; int32_t GetHoverScrollState(bool &state) override; - int32_t SetPointerVisible(bool visible) override; + int32_t SetPointerVisible(bool visible, int32_t priority) override; int32_t IsPointerVisible(bool &visible) override; int32_t MarkProcessed(int32_t eventType, int32_t eventId) override; int32_t SetPointerColor(int32_t color) override; diff --git a/service/connect_manager/src/multimodal_input_connect_manager.cpp b/service/connect_manager/src/multimodal_input_connect_manager.cpp index 62054d181..27d2169a4 100644 --- a/service/connect_manager/src/multimodal_input_connect_manager.cpp +++ b/service/connect_manager/src/multimodal_input_connect_manager.cpp @@ -229,10 +229,10 @@ int32_t MultimodalInputConnectManager::GetHoverScrollState(bool &state) return multimodalInputConnectService_->GetHoverScrollState(state); } -int32_t MultimodalInputConnectManager::SetPointerVisible(bool visible) +int32_t MultimodalInputConnectManager::SetPointerVisible(bool visible, int32_t priority) { CHKPR(multimodalInputConnectService_, INVALID_HANDLER_ID); - return multimodalInputConnectService_->SetPointerVisible(visible); + return multimodalInputConnectService_->SetPointerVisible(visible, priority); } int32_t MultimodalInputConnectManager::IsPointerVisible(bool &visible) diff --git a/service/connect_manager/src/multimodal_input_connect_proxy.cpp b/service/connect_manager/src/multimodal_input_connect_proxy.cpp index 84a4b00ae..2e1a58390 100644 --- a/service/connect_manager/src/multimodal_input_connect_proxy.cpp +++ b/service/connect_manager/src/multimodal_input_connect_proxy.cpp @@ -490,7 +490,7 @@ int32_t MultimodalInputConnectProxy::GetHoverScrollState(bool &state) return RET_OK; } -int32_t MultimodalInputConnectProxy::SetPointerVisible(bool visible) +int32_t MultimodalInputConnectProxy::SetPointerVisible(bool visible, int32_t priority) { CALL_DEBUG_ENTER; MessageParcel data; @@ -500,6 +500,7 @@ int32_t MultimodalInputConnectProxy::SetPointerVisible(bool visible) } WRITEBOOL(data, visible, ERR_INVALID_VALUE); + WRITEINT32(data, priority, ERR_INVALID_VALUE); MessageParcel reply; MessageOption option; diff --git a/service/connect_manager/src/multimodal_input_connect_stub.cpp b/service/connect_manager/src/multimodal_input_connect_stub.cpp index d7c75a7c0..206c737a5 100644 --- a/service/connect_manager/src/multimodal_input_connect_stub.cpp +++ b/service/connect_manager/src/multimodal_input_connect_stub.cpp @@ -691,7 +691,9 @@ int32_t MultimodalInputConnectStub::StubSetPointerVisible(MessageParcel& data, M CALL_DEBUG_ENTER; bool visible = false; READBOOL(data, visible, IPC_PROXY_DEAD_OBJECT_ERR); - int32_t ret = SetPointerVisible(visible); + int32_t priority = 0; + READINT32(data, priority, IPC_PROXY_DEAD_OBJECT_ERR); + int32_t ret = SetPointerVisible(visible, priority); if (ret != RET_OK) { MMI_HILOGE("Call SetPointerVisible failed ret:%{public}d", ret); return ret; diff --git a/service/message_handle/src/server_msg_handler.cpp b/service/message_handle/src/server_msg_handler.cpp index fd4f21665..9e48ef963 100644 --- a/service/message_handle/src/server_msg_handler.cpp +++ b/service/message_handle/src/server_msg_handler.cpp @@ -196,11 +196,11 @@ int32_t ServerMsgHandler::OnInjectPointerEventExt(const std::shared_ptrHandlePointerEvent(pointerEvent); CHKPR(pointerEvent, ERROR_NULL_POINTER); if (pointerEvent->HasFlag(InputEvent::EVENT_FLAG_HIDE_POINTER)) { - IPointerDrawingManager::GetInstance()->SetPointerVisible(getpid(), false); + IPointerDrawingManager::GetInstance()->SetPointerVisible(getpid(), false, 0); } else if (((pointerEvent->GetPointerAction() < PointerEvent::POINTER_ACTION_PULL_DOWN) || (pointerEvent->GetPointerAction() > PointerEvent::POINTER_ACTION_PULL_OUT_WINDOW)) && !IPointerDrawingManager::GetInstance()->IsPointerVisible()) { - IPointerDrawingManager::GetInstance()->SetPointerVisible(getpid(), true); + IPointerDrawingManager::GetInstance()->SetPointerVisible(getpid(), true, 0); } #endif // OHOS_BUILD_ENABLE_POINTER break; diff --git a/service/module_loader/include/mmi_service.h b/service/module_loader/include/mmi_service.h index 51f5b3a60..db82efb7c 100644 --- a/service/module_loader/include/mmi_service.h +++ b/service/module_loader/include/mmi_service.h @@ -65,7 +65,7 @@ public: int32_t GetMousePrimaryButton(int32_t &primaryButton) override; int32_t SetHoverScrollState(bool state) override; int32_t GetHoverScrollState(bool &state) override; - int32_t SetPointerVisible(bool visible) override; + int32_t SetPointerVisible(bool visible, int32_t priority) override; int32_t IsPointerVisible(bool &visible) override; int32_t MarkProcessed(int32_t eventType, int32_t eventId) override; int32_t SetPointerColor(int32_t color) override; diff --git a/service/module_loader/src/mmi_service.cpp b/service/module_loader/src/mmi_service.cpp index b80ee6b02..f8c3fcddc 100644 --- a/service/module_loader/src/mmi_service.cpp +++ b/service/module_loader/src/mmi_service.cpp @@ -622,12 +622,12 @@ int32_t MMIService::GetMousePrimaryButton(int32_t &primaryButton) return RET_OK; } -int32_t MMIService::SetPointerVisible(bool visible) +int32_t MMIService::SetPointerVisible(bool visible, int32_t priority) { CALL_INFO_TRACE; #if defined(OHOS_BUILD_ENABLE_POINTER) && defined(OHOS_BUILD_ENABLE_POINTER_DRAWING) int32_t ret = delegateTasks_.PostSyncTask(std::bind(&IPointerDrawingManager::SetPointerVisible, - IPointerDrawingManager::GetInstance(), GetCallingPid(), visible)); + IPointerDrawingManager::GetInstance(), GetCallingPid(), visible, priority)); if (ret != RET_OK) { MMI_HILOGE("Set pointer visible failed,return %{public}d", ret); return ret; diff --git a/service/window_manager/include/i_pointer_drawing_manager.h b/service/window_manager/include/i_pointer_drawing_manager.h index fe5c6d9be..ce066d742 100644 --- a/service/window_manager/include/i_pointer_drawing_manager.h +++ b/service/window_manager/include/i_pointer_drawing_manager.h @@ -42,7 +42,7 @@ public: return true; } virtual void DeletePointerVisible(int32_t pid) {} - virtual int32_t SetPointerVisible(int32_t pid, bool visible) + virtual int32_t SetPointerVisible(int32_t pid, bool visible, int32_t priority) { return 0; } diff --git a/service/window_manager/include/pointer_drawing_manager.h b/service/window_manager/include/pointer_drawing_manager.h index ac9526495..466919b9f 100644 --- a/service/window_manager/include/pointer_drawing_manager.h +++ b/service/window_manager/include/pointer_drawing_manager.h @@ -59,7 +59,7 @@ public: int32_t SetPointerColor(int32_t color) override; int32_t GetPointerColor() override; void DeletePointerVisible(int32_t pid) override; - int32_t SetPointerVisible(int32_t pid, bool visible) override; + int32_t SetPointerVisible(int32_t pid, bool visible, int32_t priority) override; bool GetPointerVisible(int32_t pid) override; int32_t SetPointerStyle(int32_t pid, int32_t windowId, PointerStyle pointerStyle) override; int32_t ClearWindowPointerStyle(int32_t pid, int32_t windowId) override; diff --git a/service/window_manager/src/input_windows_manager.cpp b/service/window_manager/src/input_windows_manager.cpp index fd51b6bde..592edf346 100644 --- a/service/window_manager/src/input_windows_manager.cpp +++ b/service/window_manager/src/input_windows_manager.cpp @@ -721,7 +721,7 @@ void InputWindowsManager::SetWindowPointerStyle(WindowArea area, int32_t pid, in void InputWindowsManager::UpdateWindowPointerVisible(int32_t pid) { bool visible = IPointerDrawingManager::GetInstance()->GetPointerVisible(pid); - IPointerDrawingManager::GetInstance()->SetPointerVisible(pid, visible); + IPointerDrawingManager::GetInstance()->SetPointerVisible(pid, visible, 0); } #ifdef OHOS_BUILD_ENABLE_POINTER diff --git a/service/window_manager/src/pointer_drawing_manager.cpp b/service/window_manager/src/pointer_drawing_manager.cpp index 9b109d8f2..df53b6917 100644 --- a/service/window_manager/src/pointer_drawing_manager.cpp +++ b/service/window_manager/src/pointer_drawing_manager.cpp @@ -1090,7 +1090,7 @@ void PointerDrawingManager::UpdatePointerDevice(bool hasPointerDevice, bool isPo if (!isHotPlug) { pointerVisible = (pointerVisible && IsPointerVisible()); } - SetPointerVisible(getpid(), pointerVisible); + SetPointerVisible(getpid(), pointerVisible, 0); } else { DeletePointerVisible(getpid()); } @@ -1213,10 +1213,10 @@ bool PointerDrawingManager::GetPointerVisible(int32_t pid) return true; } -int32_t PointerDrawingManager::SetPointerVisible(int32_t pid, bool visible) +int32_t PointerDrawingManager::SetPointerVisible(int32_t pid, bool visible, int32_t priority) { - MMI_HILOGI("pid:%{public}d,visible:%{public}s", pid, visible ? "true" : "false"); - if (WinMgr->GetExtraData().appended && visible) { + MMI_HILOGI("pid:%{public}d,visible:%{public}s,priority:%{public}d", pid, visible ? "true" : "false", priority); + if (WinMgr->GetExtraData().appended && visible && priority == 0) { MMI_HILOGE("current is drag state, can not set pointer visible"); return RET_ERR; } -- Gitee From 87b1659784cf4e38249bf0ecedee262fb39d5670 Mon Sep 17 00:00:00 2001 From: pengyanggit Date: Fri, 3 May 2024 09:18:56 +0800 Subject: [PATCH 2/2] Signed-off-by: pengyanggit Change-Id: I94821ee157c630d9ac81ffbfac1fcdd39e01b6d1 --- service/connect_manager/src/multimodal_input_connect_stub.cpp | 2 +- service/window_manager/test/input_windows_manager_test.cpp | 2 +- service/window_manager/test/pointer_drawing_manager_test.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/service/connect_manager/src/multimodal_input_connect_stub.cpp b/service/connect_manager/src/multimodal_input_connect_stub.cpp index 206c737a5..f447a373f 100644 --- a/service/connect_manager/src/multimodal_input_connect_stub.cpp +++ b/service/connect_manager/src/multimodal_input_connect_stub.cpp @@ -691,7 +691,7 @@ int32_t MultimodalInputConnectStub::StubSetPointerVisible(MessageParcel& data, M CALL_DEBUG_ENTER; bool visible = false; READBOOL(data, visible, IPC_PROXY_DEAD_OBJECT_ERR); - int32_t priority = 0; + int32_t priority = 0; READINT32(data, priority, IPC_PROXY_DEAD_OBJECT_ERR); int32_t ret = SetPointerVisible(visible, priority); if (ret != RET_OK) { diff --git a/service/window_manager/test/input_windows_manager_test.cpp b/service/window_manager/test/input_windows_manager_test.cpp index 0f61d859a..a79c37fd8 100644 --- a/service/window_manager/test/input_windows_manager_test.cpp +++ b/service/window_manager/test/input_windows_manager_test.cpp @@ -636,7 +636,7 @@ HWTEST_F(InputWindowsManagerTest, InputWindowsManagerTest_UpdateWindowPointerVis int32_t pid = 123; bool visible = true; IPointerDrawingManager::GetInstance()->GetPointerVisible(pid); - IPointerDrawingManager::GetInstance()->SetPointerVisible(pid, visible); + IPointerDrawingManager::GetInstance()->SetPointerVisible(pid, visible, 0); ASSERT_NO_FATAL_FAILURE(WinMgr->UpdateWindowPointerVisible(pid)); } diff --git a/service/window_manager/test/pointer_drawing_manager_test.cpp b/service/window_manager/test/pointer_drawing_manager_test.cpp index 822197e7c..90a068b90 100644 --- a/service/window_manager/test/pointer_drawing_manager_test.cpp +++ b/service/window_manager/test/pointer_drawing_manager_test.cpp @@ -330,11 +330,11 @@ HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerVisible_00 std::shared_ptr pointerDrawingManager = std::static_pointer_cast(IPointerDrawingManager::GetInstance()); for (int32_t i = 1; i < 102; i++) { - pointerDrawingManager->SetPointerVisible(i, false); + pointerDrawingManager->SetPointerVisible(i, false, 0); } bool visible = pointerDrawingManager->GetPointerVisible(1); EXPECT_EQ(visible, true); - pointerDrawingManager->SetPointerVisible(11, true); + pointerDrawingManager->SetPointerVisible(11, true, 0); visible = pointerDrawingManager->GetPointerVisible(11); EXPECT_EQ(visible, true); } -- Gitee