From 50c5a7e5ee2273716869af9eafd86c3fdb92f805 Mon Sep 17 00:00:00 2001 From: yanansong Date: Thu, 30 Nov 2023 12:30:32 +0800 Subject: [PATCH] limit drag to resize when the windows size is fixed in wayland toplevel --- window_manager/interfaces/innerkits/wm/window_option.h | 3 +++ window_manager/wm/include/window_impl.h | 1 + window_manager/wm/src/window_impl.cpp | 5 ++++- window_manager/wm/src/window_option.cpp | 10 ++++++++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/window_manager/interfaces/innerkits/wm/window_option.h b/window_manager/interfaces/innerkits/wm/window_option.h index 5eed53b..c712275 100644 --- a/window_manager/interfaces/innerkits/wm/window_option.h +++ b/window_manager/interfaces/innerkits/wm/window_option.h @@ -51,6 +51,7 @@ public: void SetRequestedOrientation(Orientation orientation); void SetCallingWindow(uint32_t windowId); void SetMainHandlerAvailable(bool isMainHandlerAvailable); + void SetDragHotZoneNone(bool hotZoneNone); Rect GetWindowRect() const; WindowType GetWindowType() const; @@ -68,6 +69,7 @@ public: Orientation GetRequestedOrientation() const; uint32_t GetCallingWindow() const; bool GetMainHandlerAvailable() const; + bool GetDragHotZoneNone() const; private: Rect windowRect_ { 0, 0, 0, 0 }; @@ -91,6 +93,7 @@ private: { WindowType::WINDOW_TYPE_NAVIGATION_BAR, SystemBarProperty() }, }; Orientation requestedOrientation_ { Orientation::UNSPECIFIED }; + bool dragHotZoneNone_ = false; }; } // namespace Rosen } // namespace OHOS diff --git a/window_manager/wm/include/window_impl.h b/window_manager/wm/include/window_impl.h index a1dc981..30a3b7b 100644 --- a/window_manager/wm/include/window_impl.h +++ b/window_manager/wm/include/window_impl.h @@ -580,6 +580,7 @@ private: {DragType::DRAG_RIGHT_TOP_CORNER, MMI::MOUSE_ICON::NORTH_EAST_SOUTH_WEST} }; float virtualPixelRatio_ = 0; + bool dragHotZoneNone_ = false; }; } // namespace Rosen } // namespace OHOS diff --git a/window_manager/wm/src/window_impl.cpp b/window_manager/wm/src/window_impl.cpp index ec112d9..b473ae7 100755 --- a/window_manager/wm/src/window_impl.cpp +++ b/window_manager/wm/src/window_impl.cpp @@ -93,7 +93,7 @@ WindowImpl::WindowImpl(const sptr& option) property_->SetSystemBarProperty(it.first, it.second); } name_ = option->GetWindowName(); - + dragHotZoneNone_ = option->GetDragHotZoneNone(); surfaceNode_ = CreateSurfaceNode(property_->GetWindowName(), option->GetWindowType()); moveDragProperty_ = new (std::nothrow) MoveDragProperty(); @@ -2275,6 +2275,9 @@ void WindowImpl::CalculateStartRectExceptHotZone(float vpr) bool WindowImpl::IsPointInDragHotZone(int32_t startPointPosX, int32_t startPointPosY) { + if (dragHotZoneNone_) { + return false; + } if (!WindowHelper::IsPointInTargetRect(startPointPosX, startPointPosY, moveDragProperty_->startRectExceptFrame_) || (!WindowHelper::IsPointInWindowExceptCorner(startPointPosX, diff --git a/window_manager/wm/src/window_option.cpp b/window_manager/wm/src/window_option.cpp index a738d74..a6fab16 100644 --- a/window_manager/wm/src/window_option.cpp +++ b/window_manager/wm/src/window_option.cpp @@ -219,6 +219,16 @@ void WindowOption::SetRequestedOrientation(Orientation orientation) { requestedOrientation_ = orientation; } + +void WindowOption::SetDragHotZoneNone(bool hotZoneNone) +{ + dragHotZoneNone_ = hotZoneNone; +} + +bool WindowOption::GetDragHotZoneNone() const +{ + return dragHotZoneNone_; +} } // namespace Rosen } // namespace OHOS -- Gitee