1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-22 23:39:42 +00:00

Implemented line and col calculations in scriptsubview

This commit is contained in:
artemutin@yandex.ru 2015-10-07 12:39:19 +10:00
parent 029a86267b
commit e7a3f059aa

View file

@ -198,26 +198,38 @@ void CSVWorld::ScriptSubView::useHint (const std::string& hint)
if (hint.empty()) if (hint.empty())
return; return;
if (hint[0]=='l') size_t line = 0, column = 0;
{ std::istringstream stream (hint.c_str()+2);
std::istringstream stream (hint.c_str()+1); switch(hint[0]){
case 'R':
char ignore; case 'r':
int line;
int column;
if (stream >> ignore >> line >> column)
{ {
QTextCursor cursor = mEditor->textCursor(); QModelIndex index = mModel->getModelIndex (getUniversalId().getId(), mColumn);
QString source = mModel->data (index).toString();
size_t pos;
stream >> pos >> pos;
cursor.movePosition (QTextCursor::Start); for (size_t i = 0; i <= pos; ++i){
if (cursor.movePosition (QTextCursor::Down, QTextCursor::MoveAnchor, line)) if (source[(unsigned) i] == '\n'){
cursor.movePosition (QTextCursor::Right, QTextCursor::MoveAnchor, column); ++line;
column = i;
mEditor->setFocus(); }
mEditor->setTextCursor (cursor); }
column = pos - column - (line > 0 ? 1 : 0);
break;
} }
case 'l':
stream >> line >> column;
} }
QTextCursor cursor = mEditor->textCursor();
cursor.movePosition (QTextCursor::Start);
if (cursor.movePosition (QTextCursor::Down, QTextCursor::MoveAnchor, line))
cursor.movePosition (QTextCursor::Right, QTextCursor::MoveAnchor, column);
mEditor->setFocus();
mEditor->setTextCursor (cursor);
} }
void CSVWorld::ScriptSubView::textChanged() void CSVWorld::ScriptSubView::textChanged()