mirror of
https://gitee.com/openharmony/window_window_manager
synced 2024-11-23 06:50:40 +00:00
commit
8d54959229
@ -2600,10 +2600,11 @@ void SceneSession::HandleCompatibleModeDrag(WSRect& rect, SizeChangeReason reaso
|
|||||||
const int32_t compatibleInPcLandscapeWidth = sessionProperty->GetCompatibleInPcLandscapeWidth();
|
const int32_t compatibleInPcLandscapeWidth = sessionProperty->GetCompatibleInPcLandscapeWidth();
|
||||||
const int32_t compatibleInPcLandscapeHeight = sessionProperty->GetCompatibleInPcLandscapeHeight();
|
const int32_t compatibleInPcLandscapeHeight = sessionProperty->GetCompatibleInPcLandscapeHeight();
|
||||||
const int32_t compatibleInPcDragLimit = compatibleInPcLandscapeWidth - compatibleInPcPortraitWidth;
|
const int32_t compatibleInPcDragLimit = compatibleInPcLandscapeWidth - compatibleInPcPortraitWidth;
|
||||||
WSRect windowRect = GetSessionRect();
|
WSRect windowRect = moveDragController_->GetTargetRect(reason == SizeChangeReason::DRAG_END ?
|
||||||
|
MoveDragController::TargetRectCoordinate::RELATED_TO_END_DISPLAY :
|
||||||
|
MoveDragController::TargetRectCoordinate::GLOBAL);
|
||||||
auto windowWidth = windowRect.width_;
|
auto windowWidth = windowRect.width_;
|
||||||
auto windowHeight = windowRect.height_;
|
auto windowHeight = windowRect.height_;
|
||||||
|
|
||||||
if (isSupportDragInPcCompatibleMode && windowWidth > windowHeight &&
|
if (isSupportDragInPcCompatibleMode && windowWidth > windowHeight &&
|
||||||
(rect.width_ < compatibleInPcLandscapeWidth - compatibleInPcDragLimit ||
|
(rect.width_ < compatibleInPcLandscapeWidth - compatibleInPcDragLimit ||
|
||||||
rect.width_ == static_cast<int32_t>(windowLimits.minWidth_))) {
|
rect.width_ == static_cast<int32_t>(windowLimits.minWidth_))) {
|
||||||
@ -2620,13 +2621,8 @@ void SceneSession::HandleCompatibleModeDrag(WSRect& rect, SizeChangeReason reaso
|
|||||||
UpdateSizeChangeReason(reason);
|
UpdateSizeChangeReason(reason);
|
||||||
UpdateRect(rect, reason, "compatibleInPcLandscape");
|
UpdateRect(rect, reason, "compatibleInPcLandscape");
|
||||||
} else if (isSupportDragInPcCompatibleMode) {
|
} else if (isSupportDragInPcCompatibleMode) {
|
||||||
if (windowWidth < windowHeight) {
|
rect.width_ = (windowWidth < windowHeight) ? compatibleInPcPortraitWidth : compatibleInPcLandscapeWidth;
|
||||||
rect.width_ = compatibleInPcPortraitWidth;
|
rect.height_ = (windowWidth < windowHeight) ? compatibleInPcPortraitHeight : compatibleInPcLandscapeHeight;
|
||||||
rect.height_ = compatibleInPcPortraitHeight;
|
|
||||||
} else {
|
|
||||||
rect.width_ = compatibleInPcLandscapeWidth;
|
|
||||||
rect.height_ = compatibleInPcLandscapeHeight;
|
|
||||||
}
|
|
||||||
rect.posX_ = windowRect.posX_;
|
rect.posX_ = windowRect.posX_;
|
||||||
rect.posY_ = windowRect.posY_;
|
rect.posY_ = windowRect.posY_;
|
||||||
SetSurfaceBounds(rect, isGlobal, needFlush);
|
SetSurfaceBounds(rect, isGlobal, needFlush);
|
||||||
@ -2808,7 +2804,6 @@ void SceneSession::OnMoveDragCallback(SizeChangeReason reason)
|
|||||||
MoveDragController::TargetRectCoordinate::GLOBAL);
|
MoveDragController::TargetRectCoordinate::GLOBAL);
|
||||||
bool isGlobal = (reason != SizeChangeReason::DRAG_END);
|
bool isGlobal = (reason != SizeChangeReason::DRAG_END);
|
||||||
bool needFlush = (reason != SizeChangeReason::DRAG_END);
|
bool needFlush = (reason != SizeChangeReason::DRAG_END);
|
||||||
|
|
||||||
TLOGD(WmsLogTag::WMS_LAYOUT, "Rect: [%{public}d, %{public}d, %{public}u, %{public}u], reason: %{public}d, "
|
TLOGD(WmsLogTag::WMS_LAYOUT, "Rect: [%{public}d, %{public}d, %{public}u, %{public}u], reason: %{public}d, "
|
||||||
"isCompatibleMode: %{public}d, isSupportDragInPcCompatibleMode: %{public}d", rect.posX_, rect.posY_,
|
"isCompatibleMode: %{public}d, isSupportDragInPcCompatibleMode: %{public}d", rect.posX_, rect.posY_,
|
||||||
rect.width_, rect.height_, reason, isCompatibleModeInPc, isSupportDragInPcCompatibleMode);
|
rect.width_, rect.height_, reason, isCompatibleModeInPc, isSupportDragInPcCompatibleMode);
|
||||||
@ -2818,7 +2813,9 @@ void SceneSession::OnMoveDragCallback(SizeChangeReason reason)
|
|||||||
}
|
}
|
||||||
HITRACE_METER_FMT(HITRACE_TAG_WINDOW_MANAGER,
|
HITRACE_METER_FMT(HITRACE_TAG_WINDOW_MANAGER,
|
||||||
"SceneSession::OnMoveDragCallback [%d, %d, %u, %u]", rect.posX_, rect.posY_, rect.width_, rect.height_);
|
"SceneSession::OnMoveDragCallback [%d, %d, %u, %u]", rect.posX_, rect.posY_, rect.width_, rect.height_);
|
||||||
if (isCompatibleModeInPc && !IsFreeMultiWindowMode()) {
|
if (isCompatibleModeInPc && !IsFreeMultiWindowMode() && reason == SizeChangeReason::DRAG_END) {
|
||||||
|
HandleCompatibleModeMoveDrag(rect, reason, isSupportDragInPcCompatibleMode, isGlobal, needFlush);
|
||||||
|
} else if (isCompatibleModeInPc && !IsFreeMultiWindowMode() && reason != SizeChangeReason::DRAG_END) {
|
||||||
HandleCompatibleModeMoveDrag(globalRect, reason, isSupportDragInPcCompatibleMode, isGlobal, needFlush);
|
HandleCompatibleModeMoveDrag(globalRect, reason, isSupportDragInPcCompatibleMode, isGlobal, needFlush);
|
||||||
} else if (reason == SizeChangeReason::DRAG && IsFreeMultiWindowMode() && isMainWindow) {
|
} else if (reason == SizeChangeReason::DRAG && IsFreeMultiWindowMode() && isMainWindow) {
|
||||||
OnSessionEvent(SessionEvent::EVENT_DRAG);
|
OnSessionEvent(SessionEvent::EVENT_DRAG);
|
||||||
|
@ -1912,6 +1912,7 @@ HWTEST_F(SceneSessionTest, HandleCompatibleModeMoveDrag, Function | SmallTest |
|
|||||||
info.bundleName_ = "HandleCompatibleModeMoveDrag";
|
info.bundleName_ = "HandleCompatibleModeMoveDrag";
|
||||||
sptr<SceneSession> sceneSession = sptr<SceneSession>::MakeSptr(info, nullptr);
|
sptr<SceneSession> sceneSession = sptr<SceneSession>::MakeSptr(info, nullptr);
|
||||||
EXPECT_NE(sceneSession, nullptr);
|
EXPECT_NE(sceneSession, nullptr);
|
||||||
|
sceneSession->moveDragController_ = sptr<MoveDragController>::MakeSptr(12, WindowType::WINDOW_TYPE_FLOAT);
|
||||||
|
|
||||||
WSRect rect = {1, 1, 1, 1};
|
WSRect rect = {1, 1, 1, 1};
|
||||||
WSRect rect2 = {1, 1, 2, 1};
|
WSRect rect2 = {1, 1, 2, 1};
|
||||||
@ -1967,6 +1968,7 @@ HWTEST_F(SceneSessionTest, HandleCompatibleModeDrag, Function | SmallTest | Leve
|
|||||||
info.bundleName_ = "HandleCompatibleModeDrag";
|
info.bundleName_ = "HandleCompatibleModeDrag";
|
||||||
sptr<SceneSession> sceneSession = sptr<SceneSession>::MakeSptr(info, nullptr);
|
sptr<SceneSession> sceneSession = sptr<SceneSession>::MakeSptr(info, nullptr);
|
||||||
EXPECT_NE(sceneSession, nullptr);
|
EXPECT_NE(sceneSession, nullptr);
|
||||||
|
sceneSession->moveDragController_ = sptr<MoveDragController>::MakeSptr(12, WindowType::WINDOW_TYPE_FLOAT);
|
||||||
|
|
||||||
WSRect rect = {1, 1, 1, 1};
|
WSRect rect = {1, 1, 1, 1};
|
||||||
WSRect rect2 = {2, 1, 1, 1};
|
WSRect rect2 = {2, 1, 1, 1};
|
||||||
|
Loading…
Reference in New Issue
Block a user