diff --git a/Sources/Buffer/BufferText.cpp b/Sources/Buffer/BufferText.cpp index 205fd56..1cce543 100644 --- a/Sources/Buffer/BufferText.cpp +++ b/Sources/Buffer/BufferText.cpp @@ -278,7 +278,7 @@ void BufferText::UpdatePointerNumber(void) * @return --- * */ -void BufferText::DrawLine(DrawerManager &drawer, int32_t lineNumber, int32_t startPos, int32_t endPos) +void BufferText::DrawLine(DrawerManager &drawer, int32_t lineNumber, int32_t startPos, int32_t endPos, int32_t selStartPos, int32_t selEndPos) { DrawLineNumber(drawer, lineNumber); @@ -289,13 +289,16 @@ void BufferText::DrawLine(DrawerManager &drawer, int32_t lineNumber, int32_t sta int32_t idX = 0; int32_t pixelX = m_nbColoneForLineNumber*letterWidth + 3; - Colorize * myColorNormal = myColorManager->Get("normal"); - Colorize * myColorSelected = myColorManager->Get("SelectedText"); + Colorize * myColorNormal = myColorManager->Get("normal"); + Colorize * myColorSelected = myColorManager->Get("SelectedText"); Colorize * selectColor = NULL; + bool selHave = selStartPos == -1 ? false : true; + for (int32_t iii=startPos; iii iii) + && selStartPos <= iii + && selEndPos > iii) { drawer.SpaceText(myColorSelected->GetBG(), pixelX ,positionY , 1); } else if (true == selectColor->HaveBg()) { drawer.SpaceText(selectColor->GetBG(), pixelX ,positionY , 1); - } else -*/ - { + } else { drawer.SpaceText(myColorManager->Get(COLOR_CODE_SPACE), pixelX ,positionY , 1); } } else if( '\t' == currentChar && true == globals::IsSetDisplaySpaceChar() ) { -/* if( true == selHave - && selStart <= iii - && selEnd > iii) + && selStartPos <= iii + && selEndPos > iii) { drawer.SpaceText(myColorSelected->GetBG(), pixelX ,positionY , strlen(tmpDisplayOfset)); } else if (true == selectColor->HaveBg()) { drawer.SpaceText(selectColor->GetBG(), pixelX ,positionY , strlen(tmpDisplayOfset)); - } else -*/ - { + } else { drawer.SpaceText(myColorManager->Get(COLOR_CODE_TAB), pixelX ,positionY , strlen(tmpDisplayOfset)); } } else { -/* if( true == selHave - && selStart <= iii - && selEnd > iii) + && selStartPos <= iii + && selEndPos > iii) { selectColor = myColorSelected; } if (currentChar <= 0x7F) { drawer.Text(selectColor, pixelX ,positionY, tmpDisplayOfset); - } else -*/ - { + } else { drawer.Text(selectColor, pixelX ,positionY, displayChar); } } + } + // display cursor : + if (m_cursorPos == savePositionForCursor) { + // display the cursor: + if (true == m_cursorOn) { + drawer.Cursor(pixelX, positionY+letterHeight); + //m_cursorOn = false; + } else { + m_cursorOn = true; + } + } + if (true==inTheScreen) { pixelX += widthToDisplay*letterWidth; } idX += displaywidth; @@ -409,8 +415,11 @@ int32_t BufferText::Display(DrawerManager &drawer) int32_t selStart, selEnd, selRectStart, selRectEnd; bool selIsRect; - int32_t selHave = m_EdnBuf.GetSelectionPos(SELECTION_PRIMARY, selStart, selEnd, selIsRect, selRectStart, selRectEnd); - + bool selHave = m_EdnBuf.GetSelectionPos(SELECTION_PRIMARY, selStart, selEnd, selIsRect, selRectStart, selRectEnd); + if (false == selHave){ + selStart = -1; + selEnd = -1; + } colorInformation_ts * HLColor = NULL; uint32_t y = 0; @@ -444,7 +453,7 @@ int32_t BufferText::Display(DrawerManager &drawer) EDN_DEBUG("lineIdStart=" << lineIdStart << " lineIdEnd=" << lineIdEnd ); for (iii=lineIdStart; iii= m_EdnBuf.Size()+1) { break; diff --git a/Sources/Buffer/BufferText.h b/Sources/Buffer/BufferText.h index b9074fb..21ff9f2 100644 --- a/Sources/Buffer/BufferText.h +++ b/Sources/Buffer/BufferText.h @@ -146,7 +146,7 @@ class BufferText : public Buffer { void MoveUpDown(int32_t ofset); void DrawLineNumber(DrawerManager &drawer, int32_t lineNumber); void UpdatePointerNumber(void); - void DrawLine(DrawerManager &drawer, int32_t lineNumber, int32_t startPos, int32_t endPos); + void DrawLine(DrawerManager &drawer, int32_t lineNumber, int32_t startPos, int32_t endPos, int32_t selStartPos, int32_t selEndPos); };