From cbe6d01c9d3f11497165d96b6904bc1d2d6417e2 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 9 Jun 2008 20:12:38 +0000 Subject: [PATCH] Propagate the encoding to TerminalBuffer. It doesn't really belong there, but that's the easiest solution for the time being. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25887 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/terminal/TermView.cpp | 4 ++++ src/apps/terminal/TerminalBuffer.cpp | 13 ++++++++++--- src/apps/terminal/TerminalBuffer.h | 3 +++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/apps/terminal/TermView.cpp b/src/apps/terminal/TermView.cpp index b151b28b85..c71dc37aa5 100644 --- a/src/apps/terminal/TermView.cpp +++ b/src/apps/terminal/TermView.cpp @@ -356,6 +356,7 @@ TermView::_InitObject(int32 argc, const char **argv) status_t error = fTextBuffer->Init(fTermColumns, fTermRows, fScrBufSize); if (error != B_OK) return error; + fTextBuffer->SetEncoding(fEncoding); fShell = new (std::nothrow) Shell(); if (fShell == NULL) @@ -537,6 +538,9 @@ TermView::SetEncoding(int encoding) // the string value of encoding. But when this function is called and // the encoding changes, the new value is never passed to Shell. fEncoding = encoding; + + BAutolock _(fTextBuffer); + fTextBuffer->SetEncoding(fEncoding); } diff --git a/src/apps/terminal/TerminalBuffer.cpp b/src/apps/terminal/TerminalBuffer.cpp index 8c73890f23..ac369ea02c 100644 --- a/src/apps/terminal/TerminalBuffer.cpp +++ b/src/apps/terminal/TerminalBuffer.cpp @@ -89,7 +89,8 @@ TerminalBuffer::_CursorChanged() TerminalBuffer::TerminalBuffer() : BLocker("terminal buffer"), - fHistory(NULL) + fHistory(NULL), + fEncoding(M_UTF8) { } @@ -145,8 +146,14 @@ TerminalBuffer::SetListener(BMessenger listener) int TerminalBuffer::Encoding() const { -// TODO: Remove, if not needed! - return M_UTF8; + return fEncoding; +} + + +void +TerminalBuffer::SetEncoding(int encoding) +{ + fEncoding = encoding; } diff --git a/src/apps/terminal/TerminalBuffer.h b/src/apps/terminal/TerminalBuffer.h index 4cfaa61b2e..54dbb4d8b4 100644 --- a/src/apps/terminal/TerminalBuffer.h +++ b/src/apps/terminal/TerminalBuffer.h @@ -50,6 +50,7 @@ public: void SetListener(BMessenger listener); int Encoding() const; + void SetEncoding(int encoding); int32 Width() const { return fWidth; } int32 Height() const { return fHeight; } @@ -182,6 +183,8 @@ private: bool fOverwriteMode; // false for insert + int fEncoding; + // listener/dirty region management BMessenger fListener; TerminalBufferDirtyInfo fDirtyInfo;