diff --git a/src/terminalDisplay/TerminalDisplay.cpp b/src/terminalDisplay/TerminalDisplay.cpp index 9b0f4ad6..8909f505 100644 --- a/src/terminalDisplay/TerminalDisplay.cpp +++ b/src/terminalDisplay/TerminalDisplay.cpp @@ -78,12 +78,6 @@ #include "TerminalPainter.h" #include "TerminalScrollBar.h" -#include "unicode/localpointer.h" -#include "unicode/ubidi.h" -#include "unicode/uchar.h" -#include "unicode/ushape.h" -#include "unicode/utypes.h" - using namespace Konsole; inline int TerminalDisplay::loc(int x, int y) const @@ -309,6 +303,7 @@ TerminalDisplay::TerminalDisplay(QWidget *parent) }; _printManager.reset(new KonsolePrintManager(ldrawBackground, ldrawContents, lgetBackgroundColor)); + ubidi = ubidi_open(); } TerminalDisplay::~TerminalDisplay() @@ -318,6 +313,8 @@ TerminalDisplay::~TerminalDisplay() delete[] _image; delete _filterChain; + + ubidi_close(ubidi); } void TerminalDisplay::setupHeaderVisibility() @@ -2990,7 +2987,6 @@ int TerminalDisplay::bidiMap(Character *screenline, if (!bidi) { return lastNonSpace; } - UBiDi *ubidi = ubidi_open(); UBiDiLevel paraLevel = _bidiLineLTR ? 0 : UBIDI_DEFAULT_LTR; if (_bidiTableDirOverride) { ubidi_setClassCallback(ubidi, BiDiClass, nullptr, nullptr, nullptr, &errorCode); diff --git a/src/terminalDisplay/TerminalDisplay.h b/src/terminalDisplay/TerminalDisplay.h index cb9af9d5..317fac9d 100644 --- a/src/terminalDisplay/TerminalDisplay.h +++ b/src/terminalDisplay/TerminalDisplay.h @@ -26,6 +26,12 @@ #include "TerminalBell.h" +#include "unicode/localpointer.h" +#include "unicode/ubidi.h" +#include "unicode/uchar.h" +#include "unicode/ushape.h" +#include "unicode/utypes.h" + class QDrag; class QDragEnterEvent; class QDropEvent; @@ -787,6 +793,8 @@ private: bool _semanticUpDown; bool _semanticInputClick; + + UBiDi *ubidi = nullptr; }; }