Ticket #9115: cursor_color.patch

File cursor_color.patch, 4.9 KB (added by js, 11 years ago)
  • src/apps/terminal/AppearPrefView.cpp

    From 41bb6ef5819cbd72a355019b1acec076c8fe1bfe Mon Sep 17 00:00:00 2001
    From: Jonathan Schleifer <js@webkeks.org>
    Date: Mon, 5 Nov 2012 11:24:07 +0100
    Subject: [PATCH] Terminal: Make the cursor color configurable.
    
    ---
     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 d0864e7..eea2156 100644
    a b AppearancePrefView::AppearancePrefView(const char* name,  
    7575    const char* kColorTable[] = {
    7676        B_TRANSLATE("Text"),
    7777        B_TRANSLATE("Background"),
     78        B_TRANSLATE("Cursor text"),
     79        B_TRANSLATE("Cursor background"),
    7880        B_TRANSLATE("Selected text"),
    7981        B_TRANSLATE("Selected background"),
    8082        NULL
  • src/apps/terminal/PrefHandler.cpp

    diff --git a/src/apps/terminal/PrefHandler.cpp b/src/apps/terminal/PrefHandler.cpp
    index c60d156..030b62e 100644
    a b static const pref_defaults kTermDefaults[] = {  
    4444
    4545    { PREF_TEXT_FORE_COLOR,     "  0,   0,   0" },
    4646    { PREF_TEXT_BACK_COLOR,     "255, 255, 255" },
     47    { PREF_CURSOR_FORE_COLOR,   "  0,   0,   0" },
     48    { PREF_CURSOR_BACK_COLOR,   "255, 200,   0" },
    4749    { PREF_SELECT_FORE_COLOR,   "255, 255, 255" },
    4850    { PREF_SELECT_BACK_COLOR,   "  0,   0,   0" },
    4951
  • src/apps/terminal/TermConst.h

    diff --git a/src/apps/terminal/TermConst.h b/src/apps/terminal/TermConst.h
    index 4181a85..cf0a31c 100644
    a b static const char* const PREF_HALF_FONT_SIZE = "Half Font Size";  
    103103
    104104static const char* const PREF_TEXT_FORE_COLOR = "Text";
    105105static const char* const PREF_TEXT_BACK_COLOR = "Background";
     106static const char* const PREF_CURSOR_FORE_COLOR = "Cursor text";
     107static const char* const PREF_CURSOR_BACK_COLOR = "Cursor background";
    106108static const char* const PREF_SELECT_FORE_COLOR = "Selected text";
    107109static const char* const PREF_SELECT_BACK_COLOR = "Selected background";
    108110
  • src/apps/terminal/TermView.cpp

    diff --git a/src/apps/terminal/TermView.cpp b/src/apps/terminal/TermView.cpp
    index cad69cc..5070021 100644
    a b TermView::SetTextColor(rgb_color fore, rgb_color back)  
    887887
    888888
    889889void
     890TermView::SetCursorColor(rgb_color fore, rgb_color back)
     891{
     892    fCursorForeColor = fore;
     893    fCursorBackColor = back;
     894}
     895
     896
     897void
    890898TermView::SetSelectColor(rgb_color fore, rgb_color back)
    891899{
    892900    fSelectForeColor = fore;
    TermView::_DrawLinePart(int32 x1, int32 y1, uint32 attr, char *buf,  
    11431151
    11441152    // Selection check.
    11451153    if (cursor) {
    1146         rgb_fore.red = 255 - rgb_fore.red;
    1147         rgb_fore.green = 255 - rgb_fore.green;
    1148         rgb_fore.blue = 255 - rgb_fore.blue;
    1149 
    1150         rgb_back.red = 255 - rgb_back.red;
    1151         rgb_back.green = 255 - rgb_back.green;
    1152         rgb_back.blue = 255 - rgb_back.blue;
     1154        rgb_fore = fCursorForeColor;
     1155        rgb_back = fCursorBackColor;
    11531156    } else if (mouse) {
    11541157        rgb_fore = fSelectForeColor;
    11551158        rgb_back = fSelectBackColor;
    TermView::_DrawCursor()  
    12251228    } else {
    12261229        if (selected)
    12271230            SetHighColor(fSelectBackColor);
    1228         else {
    1229             rgb_color color = kTermColorTable[IS_BACKCOLOR(attr)];
    1230             if (cursorVisible) {
    1231                 color.red = 255 - color.red;
    1232                 color.green = 255 - color.green;
    1233                 color.blue = 255 - color.blue;
    1234             }
    1235             SetHighColor(color);
    1236         }
     1231        else
     1232            SetHighColor(fCursorBackColor);
    12371233
    12381234        FillRect(rect);
    12391235    }
  • src/apps/terminal/TermView.h

    diff --git a/src/apps/terminal/TermView.h b/src/apps/terminal/TermView.h
    index 96e62f1..68272ee 100644
    a b public:  
    7777                                    int *rows, int *columns);
    7878
    7979            void                SetTextColor(rgb_color fore, rgb_color back);
     80            void                SetCursorColor(rgb_color fore, rgb_color back);
    8081            void                SetSelectColor(rgb_color fore, rgb_color back);
    8182
    8283            int                 Encoding() const;
    private:  
    255256            InlineInput*        fInline;
    256257
    257258            // Color and Attribute.
     259            rgb_color           fCursorForeColor;
     260            rgb_color           fCursorBackColor;
    258261            rgb_color           fSelectForeColor;
    259262            rgb_color           fSelectBackColor;
    260263
  • src/apps/terminal/TermWindow.cpp

    diff --git a/src/apps/terminal/TermWindow.cpp b/src/apps/terminal/TermWindow.cpp
    index 1fe2ccb..f039c95 100644
    a b TermWindow::_SetTermColors(TermViewContainerView* containerView)  
    10181018    TermView *termView = containerView->GetTermView();
    10191019    termView->SetTextColor(handler->getRGB(PREF_TEXT_FORE_COLOR), background);
    10201020
     1021    termView->SetCursorColor(handler->getRGB(PREF_CURSOR_FORE_COLOR),
     1022        handler->getRGB(PREF_CURSOR_BACK_COLOR));
    10211023    termView->SetSelectColor(handler->getRGB(PREF_SELECT_FORE_COLOR),
    10221024        handler->getRGB(PREF_SELECT_BACK_COLOR));
    10231025}