Fix flickering
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
This commit is contained in:
parent
dcb30b72b0
commit
e70dee08d0
1 changed files with 33 additions and 9 deletions
|
@ -187,6 +187,7 @@ export interface IState {
|
||||||
rejecting?: boolean;
|
rejecting?: boolean;
|
||||||
rejectError?: Error;
|
rejectError?: Error;
|
||||||
hasPinnedWidgets?: boolean;
|
hasPinnedWidgets?: boolean;
|
||||||
|
dragCounter: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class RoomView extends React.Component<IProps, IState> {
|
export default class RoomView extends React.Component<IProps, IState> {
|
||||||
|
@ -237,6 +238,7 @@ export default class RoomView extends React.Component<IProps, IState> {
|
||||||
canReply: false,
|
canReply: false,
|
||||||
useIRCLayout: SettingsStore.getValue("useIRCLayout"),
|
useIRCLayout: SettingsStore.getValue("useIRCLayout"),
|
||||||
matrixClientIsReady: this.context && this.context.isInitialSyncComplete(),
|
matrixClientIsReady: this.context && this.context.isInitialSyncComplete(),
|
||||||
|
dragCounter: 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
this.dispatcherRef = dis.register(this.onAction);
|
this.dispatcherRef = dis.register(this.onAction);
|
||||||
|
@ -525,8 +527,8 @@ export default class RoomView extends React.Component<IProps, IState> {
|
||||||
if (!roomView.ondrop) {
|
if (!roomView.ondrop) {
|
||||||
roomView.addEventListener('drop', this.onDrop);
|
roomView.addEventListener('drop', this.onDrop);
|
||||||
roomView.addEventListener('dragover', this.onDragOver);
|
roomView.addEventListener('dragover', this.onDragOver);
|
||||||
roomView.addEventListener('dragleave', this.onDragLeaveOrEnd);
|
roomView.addEventListener('dragenter', this.onDragEnter);
|
||||||
roomView.addEventListener('dragend', this.onDragLeaveOrEnd);
|
roomView.addEventListener('dragleave', this.onDragLeave);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1108,6 +1110,31 @@ export default class RoomView extends React.Component<IProps, IState> {
|
||||||
this.updateTopUnreadMessagesBar();
|
this.updateTopUnreadMessagesBar();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private onDragEnter = ev => {
|
||||||
|
ev.stopPropagation();
|
||||||
|
ev.preventDefault();
|
||||||
|
|
||||||
|
this.setState({
|
||||||
|
dragCounter: this.state.dragCounter + 1,
|
||||||
|
draggingFile: true,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
private onDragLeave = ev => {
|
||||||
|
ev.stopPropagation();
|
||||||
|
ev.preventDefault();
|
||||||
|
|
||||||
|
this.setState({
|
||||||
|
dragCounter: this.state.dragCounter - 1,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this.state.dragCounter == 0) {
|
||||||
|
this.setState({
|
||||||
|
draggingFile: false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private onDragOver = ev => {
|
private onDragOver = ev => {
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
|
@ -1115,7 +1142,6 @@ export default class RoomView extends React.Component<IProps, IState> {
|
||||||
ev.dataTransfer.dropEffect = 'none';
|
ev.dataTransfer.dropEffect = 'none';
|
||||||
|
|
||||||
if (ev.dataTransfer.types.includes("Files") || ev.dataTransfer.types.includes("application/x-moz-file")) {
|
if (ev.dataTransfer.types.includes("Files") || ev.dataTransfer.types.includes("application/x-moz-file")) {
|
||||||
this.setState({ draggingFile: true });
|
|
||||||
ev.dataTransfer.dropEffect = 'copy';
|
ev.dataTransfer.dropEffect = 'copy';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1126,14 +1152,12 @@ export default class RoomView extends React.Component<IProps, IState> {
|
||||||
ContentMessages.sharedInstance().sendContentListToRoom(
|
ContentMessages.sharedInstance().sendContentListToRoom(
|
||||||
ev.dataTransfer.files, this.state.room.roomId, this.context,
|
ev.dataTransfer.files, this.state.room.roomId, this.context,
|
||||||
);
|
);
|
||||||
this.setState({ draggingFile: false });
|
|
||||||
dis.fire(Action.FocusComposer);
|
dis.fire(Action.FocusComposer);
|
||||||
};
|
|
||||||
|
|
||||||
private onDragLeaveOrEnd = ev => {
|
this.setState({
|
||||||
ev.stopPropagation();
|
draggingFile: false,
|
||||||
ev.preventDefault();
|
dragCounter: this.state.dragCounter - 1,
|
||||||
this.setState({ draggingFile: false });
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
private injectSticker(url, info, text) {
|
private injectSticker(url, info, text) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue