mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
Merge pull request #819 from AppFlowy-IO/fix/selection-state-mismatch-2
fix: selection state mismatch
This commit is contained in:
commit
9c97a0b635
@ -21,6 +21,11 @@ class ApplyOptions {
|
||||
});
|
||||
}
|
||||
|
||||
enum CursorUpdateReason {
|
||||
uiEvent,
|
||||
others,
|
||||
}
|
||||
|
||||
class EditorState {
|
||||
final StateTree document;
|
||||
|
||||
@ -37,11 +42,10 @@ class EditorState {
|
||||
}
|
||||
|
||||
/// add the set reason in the future, don't use setter
|
||||
updateCursorSelection(Selection? cursorSelection) {
|
||||
updateCursorSelection(Selection? cursorSelection,
|
||||
[CursorUpdateReason reason = CursorUpdateReason.others]) {
|
||||
// broadcast to other users here
|
||||
if (cursorSelection == null) {
|
||||
service.selectionService.clearSelection();
|
||||
} else {
|
||||
if (reason != CursorUpdateReason.uiEvent) {
|
||||
service.selectionService.updateSelection(cursorSelection);
|
||||
}
|
||||
_cursorSelection = cursorSelection;
|
||||
|
@ -52,7 +52,7 @@ abstract class FlowySelectionService {
|
||||
/// The editor will update selection area and toolbar area
|
||||
/// if the [selection] is not collapsed,
|
||||
/// otherwise, will update the cursor area.
|
||||
void updateSelection(Selection selection);
|
||||
void updateSelection(Selection? selection);
|
||||
|
||||
/// Clears the selection area, cursor area and the popup list area.
|
||||
void clearSelection();
|
||||
@ -180,21 +180,24 @@ class _FlowySelectionState extends State<FlowySelection>
|
||||
}
|
||||
|
||||
@override
|
||||
void updateSelection(Selection selection) {
|
||||
void updateSelection(Selection? selection) {
|
||||
selectionRects.clear();
|
||||
clearSelection();
|
||||
|
||||
if (selection.isCollapsed) {
|
||||
/// updates cursor area.
|
||||
debugPrint('updating cursor');
|
||||
_updateCursorAreas(selection.start);
|
||||
} else {
|
||||
// updates selection area.
|
||||
debugPrint('updating selection');
|
||||
_updateSelectionAreas(selection);
|
||||
if (selection != null) {
|
||||
if (selection.isCollapsed) {
|
||||
/// updates cursor area.
|
||||
debugPrint('updating cursor');
|
||||
_updateCursorAreas(selection.start);
|
||||
} else {
|
||||
// updates selection area.
|
||||
debugPrint('updating selection');
|
||||
_updateSelectionAreas(selection);
|
||||
}
|
||||
}
|
||||
|
||||
currentSelection.value = selection;
|
||||
editorState.updateCursorSelection(selection, CursorUpdateReason.uiEvent);
|
||||
}
|
||||
|
||||
@override
|
||||
|
Loading…
Reference in New Issue
Block a user