diff --git a/uppsrc/RichEdit/Clip.cpp b/uppsrc/RichEdit/Clip.cpp index 43c1cd450..c1bf99f84 100644 --- a/uppsrc/RichEdit/Clip.cpp +++ b/uppsrc/RichEdit/Clip.cpp @@ -76,6 +76,7 @@ bool RichEdit::Accept(PasteClip& d, RichText& clip) void RichEdit::ClipPaste(RichText& clip) { + Filter(clip); NextUndo(); if(clip.GetPartCount() == 1 && clip.IsTable(0)) { CancelSelection(); diff --git a/uppsrc/RichEdit/Editor.cpp b/uppsrc/RichEdit/Editor.cpp index 6dc98a6a6..5a299f933 100644 --- a/uppsrc/RichEdit/Editor.cpp +++ b/uppsrc/RichEdit/Editor.cpp @@ -703,6 +703,8 @@ RichEdit::RichEdit() Finish(); imagefs.Type("Images (*.png *.gif *.jpg *.bmp)", "*.png *.gif *.jpg *.bmp"); + + singleline = false; } RichEdit::~RichEdit() {} diff --git a/uppsrc/RichEdit/Kbd.cpp b/uppsrc/RichEdit/Kbd.cpp index 556b7f927..3e65dffe2 100644 --- a/uppsrc/RichEdit/Kbd.cpp +++ b/uppsrc/RichEdit/Kbd.cpp @@ -62,7 +62,7 @@ bool RichEdit::Key(dword key, int count) Redo(); return true; case K_ENTER: - if(!RemoveSelection() && InsertLineSpecial()) + if(singleline || !RemoveSelection() && InsertLineSpecial()) return true; InsertLine(); ShowFormat(); @@ -159,6 +159,7 @@ bool RichEdit::Key(dword key, int count) if(p.posinpara < p.paralen) Remove(cursor, 1); } + Filter(txt); Insert(cursor, txt, true); Move(cursor + count, false); break; diff --git a/uppsrc/RichEdit/Modify.cpp b/uppsrc/RichEdit/Modify.cpp index cf2055f2d..33580f705 100644 --- a/uppsrc/RichEdit/Modify.cpp +++ b/uppsrc/RichEdit/Modify.cpp @@ -2,6 +2,8 @@ NAMESPACE_UPP +void RichEdit::Filter(RichText& txt) {} + bool RichEdit::InvalidRange(int l, int h) { return !InSameTxt(text.GetRichPos(min(l, h)), text.GetRichPos(max(l, h))); diff --git a/uppsrc/RichEdit/RichEdit.h b/uppsrc/RichEdit/RichEdit.h index 354293409..b15c22e11 100644 --- a/uppsrc/RichEdit/RichEdit.h +++ b/uppsrc/RichEdit/RichEdit.h @@ -259,6 +259,7 @@ private: bool nolinks; bool overwrite; bool useraction, modified; + bool singleline; static int fixedlang; WithRichFindReplaceLayout findreplace; @@ -607,6 +608,8 @@ protected: }; public: + virtual void Filter(RichText& txt); + static double DotToPt(int dot); static int PtToDot(double pt); static Bits SpellParagraph(const RichPara& p); @@ -736,6 +739,7 @@ public: Size GetPage() { return pagesz; } RichEdit& NoRuler() { RemoveFrame(ruler); return *this; } + RichEdit& SingleLine(bool b = true) { singleline = b; return *this; } RichEdit& FontFaces(const Vector& face); RichEdit& ViewBorder(int cx) { viewborder = cx; Refresh(); return *this; } RichEdit& ShowCodes(Color c) { showcodes = c; Refresh(); return *this; }