refactor: revert "fix: no need disable event in scrollbar and selection" (#5650)

This commit is contained in:
白熱
2025-08-06 12:40:01 +08:00
committed by GitHub
parent 2b79e828ea
commit 35e4011f54
10 changed files with 399 additions and 457 deletions
+47 -2
View File
@@ -21,7 +21,6 @@ import { UniverDocsPlugin } from '@univerjs/docs';
import { UniverDocsUIPlugin } from '@univerjs/docs-ui';
import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula';
import { UniverRenderEnginePlugin } from '@univerjs/engine-render';
import { DEFAULT_WORKBOOK_DATA_DEMO } from '@univerjs/mockdata';
import zhCN from '@univerjs/mockdata/locales/zh-CN';
import { UniverNetworkPlugin } from '@univerjs/network';
import { UniverRPCMainThreadPlugin } from '@univerjs/rpc';
@@ -144,7 +143,53 @@ function createNewInstance() {
// create univer sheet instance
if (!IS_E2E) {
univer.createUnit(UniverInstanceType.UNIVER_SHEET, DEFAULT_WORKBOOK_DATA_DEMO);
univer.createUnit(UniverInstanceType.UNIVER_SHEET, {
id: 'fbpG8l',
sheetOrder: [
'xeyZKmZIRXwhSzwbec9-c',
],
sheets: {
'xeyZKmZIRXwhSzwbec9-c': {
id: 'xeyZKmZIRXwhSzwbec9-c',
name: 'Sheet1',
tabColor: '',
hidden: 0,
rowCount: 1000,
columnCount: 20,
zoomRatio: 1,
freeze: {
xSplit: 0,
ySplit: 0,
startRow: -1,
startColumn: -1,
},
scrollTop: 0,
scrollLeft: 0,
defaultColumnWidth: 88,
defaultRowHeight: 24,
mergeData: [],
cellData: {},
rowData: {},
columnData: {},
showGridlines: 1,
rowHeader: {
width: 46,
hidden: 0,
},
columnHeader: {
height: 20,
hidden: 0,
},
rightToLeft: 0,
},
},
resources: [
{
name: 'SHEET_DATA_VALIDATION_PLUGIN',
data: '{"xeyZKmZIRXwhSzwbec9-c":[{"uid":"VvFh9x","type":"date","operator":"greaterThan","formula1":"2020-11-11","ranges":[{"startRow":0,"startColumn":0,"endRow":0,"endColumn":0,"rangeType":0}],"formula2":""},{"uid":"K2P_rg","type":"date","operator":"greaterThanOrEqual","formula1":"2025-11-12","ranges":[{"startRow":0,"startColumn":1,"endRow":0,"endColumn":1,"rangeType":0,"unitId":"fbpG8l","sheetId":"xeyZKmZIRXwhSzwbec9-c"}],"formula2":"","bizInfo":{"showTime":true}}]}',
},
],
});
}
setTimeout(() => {
@@ -543,7 +543,6 @@ export abstract class BaseObject extends Disposable {
}
/**
* Similar to setProps, but only props in BASE_OBJECT_ARRAY_Set
* this[pKey] = option[pKey]
* @param option
*/
@@ -429,9 +429,6 @@ export class InputManager extends Disposable {
* @param offsetY
*/
private _getObjectAtPos(offsetX: number, offsetY: number) {
if (!this._scene.objectsEvented) {
return null;
}
return this._scene?.pick(Vector2.FromArray([offsetX, offsetY]));
}
@@ -463,13 +460,6 @@ export class InputManager extends Disposable {
// }
/**
* If return true, the event will be dispatched to Scene
* Even Scene is not a object, but scene could handle event.
* currentObject is null, return true
* @param currentObject
* @returns boolean
*/
private _shouldDispatchEventToScene(currentObject: Nullable<Scene | BaseObject>): boolean {
// 1. Check for empty object
if (currentObject == null) {
+4 -14
View File
@@ -480,11 +480,6 @@ export class Scene extends Disposable {
return this._layers;
}
/**
* Get layer by zIndex.
* This method would create a new Layer if Layer is not exist.
* @param zIndex
*/
getLayer(zIndex: number = 1): Layer {
for (const layer of this._layers) {
if (layer.zIndex === zIndex) {
@@ -521,8 +516,7 @@ export class Scene extends Disposable {
}
/**
* Add objects to Layer( Layer is specified by zIndex)
* This method would create a new Layer if Layer is not exist.
* Add objects to Layer( Layer is specfied by zIndex)
* If object is a group, insert all its children and group itself to _objects[].
* @param objects
* @param zIndex
@@ -536,8 +530,7 @@ export class Scene extends Disposable {
/**
* Add object to Layer (Layer is specified by zIndex).
* This method would create a new Layer if Layer is not exist.
* And if object is a group, insert all its children and group itself to _objects[].
* If object is a group, insert all its children and group itself to _objects[].
* @param o
* @param zIndex layer index
* @returns {Scene} scene
@@ -995,9 +988,7 @@ export class Scene extends Disposable {
const scrollBarRect = pickedViewport.pickScrollBar(coord);
if (scrollBarRect) {
if (scrollBarRect.evented) {
return scrollBarRect;
}
return scrollBarRect;
}
const vecFromSheetContent = pickedViewport.transformVector2SceneCoord(coord);
@@ -1267,9 +1258,8 @@ export class Scene extends Disposable {
}
/**
* Disable scene.event
* If scene.event is disabled, scene.pick(cursor Pos) return null.
* After disableObjectsEvent, only the scene itself can respond to pointer events; objects beneath the scene will not.
* Then only scene itself can response to pointer event, all objects under the scene would not.
* see sceneInputManager@_onPointerMove
*/
// 禁用对象事件
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -346,8 +346,7 @@ export abstract class Shape<T extends IShapeProps> extends BaseObject {
}
/**
* if props not in BASE_OBJECT_ARRAY_Set then this[_key] = props[key]
* if props in BASE_OBJECT_ARRAY_Set, You should use transformByState
* if BASE_OBJECT_ARRAY_Set.has(key) not exist, then this[_key] = props[key],
* @param props
*/
setProps(props?: T): Shape<T> {
@@ -386,7 +386,7 @@ export class RefSelectionsRenderService extends BaseSelectionRenderService imple
this._selectionMoveStart$.next(this.getSelectionDataWithStyle());
// scene.disableObjectsEvent();
scene.disableObjectsEvent();
this._clearUpdatingListeners();
this._addEndingListeners();
@@ -751,9 +751,6 @@ export class BaseSelectionRenderService extends Disposable implements ISheetSele
}
}
/**
* Unsubscribe subjects and enable scene event
*/
protected _clearUpdatingListeners(): void {
const scene = this._scene;
scene.enableObjectsEvent();
@@ -78,8 +78,6 @@ export class SheetSelectionRenderService extends BaseSelectionRenderService impl
const { spreadsheetRowHeader, spreadsheetColumnHeader, spreadsheet, spreadsheetLeftTopPlaceholder } = sheetObject;
const { scene } = this._context;
// pointer down ---> selection start
// but pointer move & pointer up for selection end is bind on scene, not spreadsheet.
this.disposeWithMe(spreadsheet?.onPointerDown$.subscribeEvent((evt: IPointerEvent | IMouseEvent, state) => {
if (this.isSelectionDisabled()) return;
if (this.inRefSelectionMode()) return;
@@ -434,7 +432,7 @@ export class SheetSelectionRenderService extends BaseSelectionRenderService impl
}
//#endregion
// scene.disableObjectsEvent();
scene.disableObjectsEvent();
this._clearUpdatingListeners();
this._addEndingListeners();
scene.getTransformer()?.clearSelectedObjects();
@@ -351,7 +351,7 @@ export class SelectionShapeExtension {
this._scrollTimer = scrollTimer;
scrollTimer.startScroll(newEvtOffsetX, newEvtOffsetY, viewMain);
// scene.disableObjectsEvent();
scene.disableObjectsEvent();
this._scenePointerMoveSub = scene.onPointerMove$.subscribeEvent((moveEvt: IPointerEvent | IMouseEvent) => {
if (this._disabled) {
@@ -493,7 +493,7 @@ export class SelectionShapeExtension {
scrollTimer.startScroll(newEvtOffsetX, newEvtOffsetY, viewMain);
this._scrollTimer = scrollTimer;
// scene.disableObjectsEvent();
scene.disableObjectsEvent();
this._scenePointerMoveSub = scene.onPointerMove$.subscribeEvent((moveEvt: IPointerEvent | IMouseEvent) => {
const { offsetX: moveOffsetX, offsetY: moveOffsetY } = moveEvt;
@@ -851,7 +851,7 @@ export class SelectionShapeExtension {
this._scrollTimer = scrollTimer;
// scene.disableObjectsEvent();
scene.disableObjectsEvent();
this._controlHandler((o) => {
this._fillControlColors.push(o.fill as string);