Skip to content

Commit 0f40516

Browse files
committed
fix(ohos): fix dimensions of window for pc
1 parent cb67698 commit 0f40516

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

framework/ohos/src/main/ets/support/utils/DimensionsUtil.ets

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import { HippyMap, HippyValue } from '../common/HippyTypes';
2121
import deviceinfo from '@ohos.deviceInfo';
2222
import { TextUtils } from './TextUtils';
23-
import { display } from '@kit.ArkUI';
23+
import { display, window } from '@kit.ArkUI';
2424
import { LogUtils } from './LogUtils';
2525
import { PixelUtil } from './PixelUtil';
2626

@@ -33,14 +33,30 @@ export class DimensionsUtil {
3333
private static SHOW_NAV_BAR_RES_NAME = "config_showNavigationBar";
3434
private static NAVIGATE_BAR_HEIGHT = 0;
3535

36+
static async getLastWindowRect(context: Context): Promise<window.Rect> {
37+
const windowObj = await window.getLastWindow(context);
38+
return windowObj.getWindowProperties().windowRect;
39+
}
40+
3641
static async getDimensions(ww: number, wh: number, context: Context): Promise<HippyMap> {
3742
let displayClass: display.Display = display.getDefaultDisplaySync();
3843
await DimensionsUtil.getStatusBarHeight(displayClass);
3944
let dimensionMap = new Map<string, HippyValue | Map<string, HippyValue>>()
4045

46+
let windowRect = await DimensionsUtil.getLastWindowRect(context);
47+
let w = 0;
48+
let h = 0;
49+
if (windowRect.width > 0 && windowRect.height > 0) {
50+
w = windowRect.width;
51+
h = windowRect.height;
52+
} else {
53+
w = displayClass.width;
54+
h = displayClass.height;
55+
}
56+
4157
let windowDisplayMetricsMap = new Map<string, HippyValue>()
42-
windowDisplayMetricsMap.set("width", ww >= 0 ? ww : displayClass.width);
43-
windowDisplayMetricsMap.set("height", wh >= 0 ? wh : displayClass.height);
58+
windowDisplayMetricsMap.set("width", ww >= 0 ? ww : w);
59+
windowDisplayMetricsMap.set("height", wh >= 0 ? wh : h);
4460
windowDisplayMetricsMap.set("scale", displayClass.densityPixels / PixelUtil.getDensityScale());
4561
windowDisplayMetricsMap.set("fontScale", displayClass.scaledDensity / PixelUtil.getDensityScale());
4662
windowDisplayMetricsMap.set("densityDpi", displayClass.densityDPI / PixelUtil.getDensityScale());
@@ -49,8 +65,8 @@ export class DimensionsUtil {
4965
dimensionMap.set("windowPhysicalPixels", windowDisplayMetricsMap);
5066

5167
let screenDisplayMetricsMap = new Map<string, HippyValue>()
52-
screenDisplayMetricsMap.set("width", displayClass.width);
53-
screenDisplayMetricsMap.set("height", displayClass.height);
68+
screenDisplayMetricsMap.set("width", w);
69+
screenDisplayMetricsMap.set("height", h);
5470
screenDisplayMetricsMap.set("scale", displayClass.densityPixels / PixelUtil.getDensityScale());
5571
screenDisplayMetricsMap.set("fontScale", displayClass.scaledDensity / PixelUtil.getDensityScale());
5672
screenDisplayMetricsMap.set("densityDpi", displayClass.densityDPI / PixelUtil.getDensityScale());

0 commit comments

Comments
 (0)