- fix: selection in column mode not correctly drawn when has wide chars in it
This commit is contained in:
parent
c56a020781
commit
e1ac7cafb0
2
NEWS.md
2
NEWS.md
|
@ -9,6 +9,8 @@ Red Panda C++ Version 1.0.8
|
||||||
- enhancement: adjust scheme colors for "dark" and "high contrast" themes
|
- enhancement: adjust scheme colors for "dark" and "high contrast" themes
|
||||||
- enhancement: can debug files that has non-ascii chars in its path and is compiled by clang
|
- enhancement: can debug files that has non-ascii chars in its path and is compiled by clang
|
||||||
- fix: when debugging project, default compiler set is wrongly used
|
- fix: when debugging project, default compiler set is wrongly used
|
||||||
|
- fix: selection in column mode not correctly drawn when has wide char in it
|
||||||
|
|
||||||
|
|
||||||
Red Panda C++ Version 1.0.7
|
Red Panda C++ Version 1.0.7
|
||||||
- change: use Shift+Enter to break line
|
- change: use Shift+Enter to break line
|
||||||
|
|
|
@ -6625,13 +6625,6 @@ void SynEdit::setActiveSelectionMode(const SynSelectionMode &Value)
|
||||||
|
|
||||||
BufferCoord SynEdit::blockEnd() const
|
BufferCoord SynEdit::blockEnd() const
|
||||||
{
|
{
|
||||||
if (mActiveSelectionMode == SynSelectionMode::smColumn) {
|
|
||||||
return BufferCoord{
|
|
||||||
std::max(mBlockBegin.Char,mBlockEnd.Char),
|
|
||||||
std::max(mBlockBegin.Line,mBlockEnd.Line),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((mBlockEnd.Line < mBlockBegin.Line)
|
if ((mBlockEnd.Line < mBlockBegin.Line)
|
||||||
|| ((mBlockEnd.Line == mBlockBegin.Line) && (mBlockEnd.Char < mBlockBegin.Char)))
|
|| ((mBlockEnd.Line == mBlockBegin.Line) && (mBlockEnd.Char < mBlockBegin.Char)))
|
||||||
return mBlockBegin;
|
return mBlockBegin;
|
||||||
|
@ -6723,12 +6716,6 @@ void SynEdit::setSelText(const QString &text)
|
||||||
|
|
||||||
BufferCoord SynEdit::blockBegin() const
|
BufferCoord SynEdit::blockBegin() const
|
||||||
{
|
{
|
||||||
if (mActiveSelectionMode == SynSelectionMode::smColumn) {
|
|
||||||
return BufferCoord{
|
|
||||||
std::min(mBlockBegin.Char,mBlockEnd.Char),
|
|
||||||
std::min(mBlockBegin.Line,mBlockEnd.Line),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if ((mBlockEnd.Line < mBlockBegin.Line)
|
if ((mBlockEnd.Line < mBlockBegin.Line)
|
||||||
|| ((mBlockEnd.Line == mBlockBegin.Line) && (mBlockEnd.Char < mBlockBegin.Char)))
|
|| ((mBlockEnd.Line == mBlockBegin.Line) && (mBlockEnd.Char < mBlockBegin.Char)))
|
||||||
return mBlockEnd;
|
return mBlockEnd;
|
||||||
|
|
|
@ -859,21 +859,29 @@ void SynEditTextPainter::PaintLines()
|
||||||
nLineSelEnd = LastCol + 1;
|
nLineSelEnd = LastCol + 1;
|
||||||
if ((edit->mActiveSelectionMode == SynSelectionMode::smColumn) ||
|
if ((edit->mActiveSelectionMode == SynSelectionMode::smColumn) ||
|
||||||
((edit->mActiveSelectionMode == SynSelectionMode::smNormal) && (cRow == vSelStart.Row)) ) {
|
((edit->mActiveSelectionMode == SynSelectionMode::smNormal) && (cRow == vSelStart.Row)) ) {
|
||||||
if (vSelStart.Column > LastCol) {
|
int ch = edit->columnToChar(vLine,vSelStart.Column);
|
||||||
|
qDebug()<<"-1-"<<vLine<<ch;
|
||||||
|
ch = edit->charToColumn(vLine,ch);
|
||||||
|
qDebug()<<"-2-"<<vLine<<ch;
|
||||||
|
if (ch > LastCol) {
|
||||||
nLineSelStart = 0;
|
nLineSelStart = 0;
|
||||||
nLineSelEnd = 0;
|
nLineSelEnd = 0;
|
||||||
} else if (vSelStart.Column > FirstCol) {
|
} else if (ch > FirstCol) {
|
||||||
nLineSelStart = vSelStart.Column;
|
nLineSelStart = ch;
|
||||||
bComplexLine = true;
|
bComplexLine = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( (edit->mActiveSelectionMode == SynSelectionMode::smColumn) ||
|
if ( (edit->mActiveSelectionMode == SynSelectionMode::smColumn) ||
|
||||||
((edit->mActiveSelectionMode == SynSelectionMode::smNormal) && (cRow == vSelEnd.Row)) ) {
|
((edit->mActiveSelectionMode == SynSelectionMode::smNormal) && (cRow == vSelEnd.Row)) ) {
|
||||||
if (vSelEnd.Column < FirstCol) {
|
int ch = edit->columnToChar(vLine,vSelEnd.Column);
|
||||||
|
int col = edit->charToColumn(vLine,ch);
|
||||||
|
if (col<vSelEnd.Column)
|
||||||
|
col = edit->charToColumn(vLine,ch+1);
|
||||||
|
if (col < FirstCol) {
|
||||||
nLineSelStart = 0;
|
nLineSelStart = 0;
|
||||||
nLineSelEnd = 0;
|
nLineSelEnd = 0;
|
||||||
} else if (vSelEnd.Column < LastCol) {
|
} else if (col < LastCol) {
|
||||||
nLineSelEnd = vSelEnd.Column;
|
nLineSelEnd = col;
|
||||||
bComplexLine = true;
|
bComplexLine = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue