fix window zoom

This commit is contained in:
Rene
2022-07-17 21:45:23 +02:00
parent d567cae275
commit 733f990200
9 changed files with 1566 additions and 1493 deletions
+4 -3
View File
@@ -118,16 +118,17 @@
min-height: 1px; min-height: 1px;
min-width: 1px; } min-width: 1px; }
.os-scrollbar-transition {
transition: opacity 0.3s, visibility 0.3s, top 0.3s, right 0.3s, bottom 0.3s, left 0.3s; }
.os-scrollbar { .os-scrollbar {
transition: opacity 0.3s, visibility 0.3s, top 0.3s, right 0.3s, bottom 0.3s, left 0.3s;
pointer-events: none; pointer-events: none;
position: absolute; position: absolute;
z-index: 0; z-index: 0;
opacity: 0; opacity: 0;
visibility: hidden; } visibility: hidden; }
.os-scrollbar-transitionless {
transition: none; }
.os-scrollbar-track { .os-scrollbar-track {
pointer-events: auto; pointer-events: auto;
position: relative; position: relative;
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -242,8 +242,8 @@ export const scrollbarsHidingPlugin: Plugin<ScrollbarsHidingPluginInstance> = {
return [arrangeViewport, undoViewportArrange]; return [arrangeViewport, undoViewportArrange];
}, },
_envWindowZoom: () => { _envWindowZoom: () => {
let size = windowSize(); let size = { w: 0, h: 0 };
let dpr = getWindowDPR(); let dpr = 0;
return (envInstance, updateNativeScrollbarSizeCache, triggerEvent) => { return (envInstance, updateNativeScrollbarSizeCache, triggerEvent) => {
const sizeNew = windowSize(); const sizeNew = windowSize();
@@ -265,7 +265,7 @@ export const scrollbarsHidingPlugin: Plugin<ScrollbarsHidingPluginInstance> = {
const dprNew = getWindowDPR(); const dprNew = getWindowDPR();
const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2; const deltaIsBigger = deltaAbsSize.w > 2 && deltaAbsSize.h > 2;
const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h); const difference = !diffBiggerThanOne(deltaAbsRatio.w, deltaAbsRatio.h);
const dprChanged = dprNew !== dpr && dpr > 0; const dprChanged = dprNew !== dpr && dprNew > 0;
const isZoom = deltaIsBigger && difference && dprChanged; const isZoom = deltaIsBigger && difference && dprChanged;
if (isZoom) { if (isZoom) {
+31 -2
View File
@@ -1,3 +1,9 @@
type CacheValues<T> = [
value: T,
changed: boolean,
previous?: T
];
type UpdateCache<Value> = (force?: boolean) => CacheValues<Value>;
interface WH<T> { interface WH<T> {
w: T; w: T;
h: T; h: T;
@@ -156,6 +162,28 @@ interface ViewportOverflowState {
} }
type GetViewportOverflowState = (showNativeOverlaidScrollbars: boolean, viewportStyleObj?: StyleObject) => ViewportOverflowState; type GetViewportOverflowState = (showNativeOverlaidScrollbars: boolean, viewportStyleObj?: StyleObject) => ViewportOverflowState;
type HideNativeScrollbars = (viewportOverflowState: ViewportOverflowState, directionIsRTL: boolean, viewportArrange: boolean, viewportStyleObj: StyleObject) => void; type HideNativeScrollbars = (viewportOverflowState: ViewportOverflowState, directionIsRTL: boolean, viewportArrange: boolean, viewportStyleObj: StyleObject) => void;
type EnvironmentEventMap = {
_: [
];
};
interface InternalEnvironment {
readonly _nativeScrollbarsSize: XY;
readonly _nativeScrollbarsOverlaid: XY<boolean>;
readonly _nativeScrollbarsHiding: boolean;
readonly _rtlScrollBehavior: {
n: boolean;
i: boolean;
};
readonly _flexboxGlue: boolean;
readonly _cssCustomProperties: boolean;
readonly _defaultInitializationStrategy: InitializationStrategy;
readonly _defaultDefaultOptions: Options;
_addListener(listener: EventListener<EnvironmentEventMap, "_">): () => void;
_getInitializationStrategy(): InitializationStrategy;
_setInitializationStrategy(newInitializationStrategy: Partial<InitializationStrategy>): void;
_getDefaultOptions(): Options;
_setDefaultOptions(newDefaultOptions: PartialOptions<Options>): void;
}
type ArrangeViewport = (viewportOverflowState: ViewportOverflowState, viewportScrollSize: WH<number>, sizeFraction: WH<number>, directionIsRTL: boolean) => boolean; type ArrangeViewport = (viewportOverflowState: ViewportOverflowState, viewportScrollSize: WH<number>, sizeFraction: WH<number>, directionIsRTL: boolean) => boolean;
type UndoViewportArrangeResult = [ type UndoViewportArrangeResult = [
redoViewportArrange: () => void, redoViewportArrange: () => void,
@@ -163,11 +191,12 @@ type UndoViewportArrangeResult = [
]; ];
type UndoArrangeViewport = (showNativeOverlaidScrollbars: boolean, directionIsRTL: boolean, viewportOverflowState?: ViewportOverflowState) => UndoViewportArrangeResult; type UndoArrangeViewport = (showNativeOverlaidScrollbars: boolean, directionIsRTL: boolean, viewportOverflowState?: ViewportOverflowState) => UndoViewportArrangeResult;
type ScrollbarsHidingPluginInstance = { type ScrollbarsHidingPluginInstance = {
_createUniqueViewportArrangeElement(): HTMLStyleElement | false; _createUniqueViewportArrangeElement(env: InternalEnvironment): HTMLStyleElement | false;
_overflowUpdateSegment(doViewportArrange: boolean, viewport: HTMLElement, viewportArrange: HTMLStyleElement | false | null | undefined, getState: () => StructureSetupState, getViewportOverflowState: GetViewportOverflowState, hideNativeScrollbars: HideNativeScrollbars): [ _overflowUpdateSegment(doViewportArrange: boolean, flexboxGlue: boolean, viewport: HTMLElement, viewportArrange: HTMLStyleElement | false | null | undefined, getState: () => StructureSetupState, getViewportOverflowState: GetViewportOverflowState, hideNativeScrollbars: HideNativeScrollbars): [
ArrangeViewport, ArrangeViewport,
UndoArrangeViewport UndoArrangeViewport
]; ];
_envWindowZoom(): (envInstance: InternalEnvironment, updateNativeScrollbarSizeCache: UpdateCache<XY<number>>, triggerEvent: () => void) => void;
}; };
declare const scrollbarsHidingPlugin: Plugin<ScrollbarsHidingPluginInstance>; declare const scrollbarsHidingPlugin: Plugin<ScrollbarsHidingPluginInstance>;
type GeneralInitialEventListeners = InitialEventListeners; type GeneralInitialEventListeners = InitialEventListeners;