mirror of
https://github.com/JS8Call-improved/JS8Call-improved
synced 2026-08-13 17:47:36 -04:00
50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#ifndef TRANSMITTEXTSOURCEMIRROR_H
|
|
#define TRANSMITTEXTSOURCEMIRROR_H
|
|
|
|
#include "TransmitTextEdit.h"
|
|
|
|
class QTextDocument;
|
|
|
|
class TransmitTextEdit::source_mirror final {
|
|
public:
|
|
struct CursorState {
|
|
int anchor = 0;
|
|
int position = 0;
|
|
};
|
|
|
|
explicit source_mirror(TransmitTextEdit *owner);
|
|
|
|
QString plainText() const;
|
|
CursorState captureCursorState() const;
|
|
void restoreCursorState(const CursorState &state) const;
|
|
void replaceVisiblePlainText(const QString &text, bool keepCursor) const;
|
|
void syncDocument(const QString &text);
|
|
void replaceUnsentText(int sent, const QString &text);
|
|
void applyChange(int pos, int rem, const QString &insertedText);
|
|
void syncDisplayFromSource(const CursorState &state,
|
|
bool keepCursor) const;
|
|
void updateSentCache() const;
|
|
|
|
QTextDocument *document() const;
|
|
|
|
void beginSuppression();
|
|
void endSuppression();
|
|
bool isSuppressing() const;
|
|
|
|
void beginSyncFromSource();
|
|
void endSyncFromSource();
|
|
bool isSyncingFromSource() const;
|
|
|
|
void beginInternalMutation();
|
|
void endInternalMutation();
|
|
bool isInternalMutationActive() const;
|
|
|
|
private:
|
|
TransmitTextEdit *owner_;
|
|
QTextDocument *document_ = nullptr;
|
|
int suppressionDepth_ = 0;
|
|
int syncDepth_ = 0;
|
|
int internalMutationDepth_ = 0;
|
|
};
|
|
|
|
#endif // TRANSMITTEXTSOURCEMIRROR_H
|