From 122905281dd29a0ee9ef35dd280a33aab21e6c3d Mon Sep 17 00:00:00 2001 From: Jonathan Schleifer Date: Mon, 5 Nov 2012 11:24:07 +0100 Subject: [PATCH] Terminal: Make the cursor color configurable. Signed-off-by: Adrien Destugues - PulkoMandy --- src/apps/terminal/AppearPrefView.cpp | 2 ++ src/apps/terminal/PrefHandler.cpp | 2 ++ src/apps/terminal/TermConst.h | 2 ++ src/apps/terminal/TermView.cpp | 28 ++++++++++++---------------- src/apps/terminal/TermView.h | 3 +++ src/apps/terminal/TermWindow.cpp | 2 ++ 6 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/apps/terminal/AppearPrefView.cpp b/src/apps/terminal/AppearPrefView.cpp index d0864e7c50..eea2156a5b 100644 --- a/src/apps/terminal/AppearPrefView.cpp +++ b/src/apps/terminal/AppearPrefView.cpp @@ -75,6 +75,8 @@ AppearancePrefView::AppearancePrefView(const char* name, const char* kColorTable[] = { B_TRANSLATE("Text"), B_TRANSLATE("Background"), + B_TRANSLATE("Cursor text"), + B_TRANSLATE("Cursor background"), B_TRANSLATE("Selected text"), B_TRANSLATE("Selected background"), NULL diff --git a/src/apps/terminal/PrefHandler.cpp b/src/apps/terminal/PrefHandler.cpp index c60d156ef5..030b62e1e7 100644 --- a/src/apps/terminal/PrefHandler.cpp +++ b/src/apps/terminal/PrefHandler.cpp @@ -44,6 +44,8 @@ static const pref_defaults kTermDefaults[] = { { PREF_TEXT_FORE_COLOR, " 0, 0, 0" }, { PREF_TEXT_BACK_COLOR, "255, 255, 255" }, + { PREF_CURSOR_FORE_COLOR, " 0, 0, 0" }, + { PREF_CURSOR_BACK_COLOR, "255, 200, 0" }, { PREF_SELECT_FORE_COLOR, "255, 255, 255" }, { PREF_SELECT_BACK_COLOR, " 0, 0, 0" }, diff --git a/src/apps/terminal/TermConst.h b/src/apps/terminal/TermConst.h index 4181a85739..cf0a31c2c6 100644 --- a/src/apps/terminal/TermConst.h +++ b/src/apps/terminal/TermConst.h @@ -103,6 +103,8 @@ static const char* const PREF_HALF_FONT_SIZE = "Half Font Size"; static const char* const PREF_TEXT_FORE_COLOR = "Text"; static const char* const PREF_TEXT_BACK_COLOR = "Background"; +static const char* const PREF_CURSOR_FORE_COLOR = "Cursor text"; +static const char* const PREF_CURSOR_BACK_COLOR = "Cursor background"; static const char* const PREF_SELECT_FORE_COLOR = "Selected text"; static const char* const PREF_SELECT_BACK_COLOR = "Selected background"; diff --git a/src/apps/terminal/TermView.cpp b/src/apps/terminal/TermView.cpp index cad69cc2b7..5070021e87 100644 --- a/src/apps/terminal/TermView.cpp +++ b/src/apps/terminal/TermView.cpp @@ -886,6 +886,14 @@ TermView::SetTextColor(rgb_color fore, rgb_color back) } +void +TermView::SetCursorColor(rgb_color fore, rgb_color back) +{ + fCursorForeColor = fore; + fCursorBackColor = back; +} + + void TermView::SetSelectColor(rgb_color fore, rgb_color back) { @@ -1143,13 +1151,8 @@ TermView::_DrawLinePart(int32 x1, int32 y1, uint32 attr, char *buf, // Selection check. if (cursor) { - rgb_fore.red = 255 - rgb_fore.red; - rgb_fore.green = 255 - rgb_fore.green; - rgb_fore.blue = 255 - rgb_fore.blue; - - rgb_back.red = 255 - rgb_back.red; - rgb_back.green = 255 - rgb_back.green; - rgb_back.blue = 255 - rgb_back.blue; + rgb_fore = fCursorForeColor; + rgb_back = fCursorBackColor; } else if (mouse) { rgb_fore = fSelectForeColor; rgb_back = fSelectBackColor; @@ -1225,15 +1228,8 @@ TermView::_DrawCursor() } else { if (selected) SetHighColor(fSelectBackColor); - else { - rgb_color color = kTermColorTable[IS_BACKCOLOR(attr)]; - if (cursorVisible) { - color.red = 255 - color.red; - color.green = 255 - color.green; - color.blue = 255 - color.blue; - } - SetHighColor(color); - } + else + SetHighColor(fCursorBackColor); FillRect(rect); } diff --git a/src/apps/terminal/TermView.h b/src/apps/terminal/TermView.h index 96e62f1abc..68272eeab7 100644 --- a/src/apps/terminal/TermView.h +++ b/src/apps/terminal/TermView.h @@ -77,6 +77,7 @@ public: int *rows, int *columns); void SetTextColor(rgb_color fore, rgb_color back); + void SetCursorColor(rgb_color fore, rgb_color back); void SetSelectColor(rgb_color fore, rgb_color back); int Encoding() const; @@ -255,6 +256,8 @@ private: InlineInput* fInline; // Color and Attribute. + rgb_color fCursorForeColor; + rgb_color fCursorBackColor; rgb_color fSelectForeColor; rgb_color fSelectBackColor; diff --git a/src/apps/terminal/TermWindow.cpp b/src/apps/terminal/TermWindow.cpp index 1fe2ccbee7..f039c9549d 100644 --- a/src/apps/terminal/TermWindow.cpp +++ b/src/apps/terminal/TermWindow.cpp @@ -1018,6 +1018,8 @@ TermWindow::_SetTermColors(TermViewContainerView* containerView) TermView *termView = containerView->GetTermView(); termView->SetTextColor(handler->getRGB(PREF_TEXT_FORE_COLOR), background); + termView->SetCursorColor(handler->getRGB(PREF_CURSOR_FORE_COLOR), + handler->getRGB(PREF_CURSOR_BACK_COLOR)); termView->SetSelectColor(handler->getRGB(PREF_SELECT_FORE_COLOR), handler->getRGB(PREF_SELECT_BACK_COLOR)); }