diff --git a/NEWS.md b/NEWS.md
index 4ce700e9..5ff6f0af 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -21,6 +21,8 @@ Red Panda C++ Version 1.0.0
- fix: correctly reset caret when redo cut with no selection
- enhancement: close editor when middle button clicked on it's title tab
- fix: error when insert text in column mode
+ - fix: error when delete contents in column mode on lines that has wide-chars
+ - fix: error when create folder in files view
Red Panda C++ Version 0.14.5
- fix: the "gnu c++ 20" option in compiler set options is wrong
diff --git a/RedPandaIDE/RedPandaIDE_zh_CN.ts b/RedPandaIDE/RedPandaIDE_zh_CN.ts
index c919c8e4..e2dcb9e4 100644
--- a/RedPandaIDE/RedPandaIDE_zh_CN.ts
+++ b/RedPandaIDE/RedPandaIDE_zh_CN.ts
@@ -3781,18 +3781,18 @@ Are you really want to continue?
MainWindow
-
+
小熊猫C++
-
-
-
-
-
+
+
+
+
+
编译器
@@ -3866,7 +3866,7 @@ Are you really want to continue?
-
+
调试主控台
@@ -4000,8 +4000,8 @@ Are you really want to continue?
-
-
+
+
编译
@@ -4063,9 +4063,9 @@ Are you really want to continue?
-
-
-
+
+
+
复制
@@ -4076,7 +4076,7 @@ Are you really want to continue?
-
+
粘贴
@@ -4087,8 +4087,8 @@ Are you really want to continue?
-
-
+
+
选择全部
@@ -4208,14 +4208,14 @@ Are you really want to continue?
-
+
试题集
-
+
新建试题集
@@ -4234,14 +4234,14 @@ Are you really want to continue?
-
+
保存试题集
-
+
载入试题集
@@ -4277,7 +4277,7 @@ Are you really want to continue?
-
+
试题
@@ -4580,7 +4580,7 @@ Are you really want to continue?
-
+
删除所有断点
@@ -4681,7 +4681,7 @@ Are you really want to continue?
-
+
重命名符号
@@ -4702,13 +4702,13 @@ Are you really want to continue?
-
+
导出为RTF
-
+
导出为HTML
@@ -4977,7 +4977,7 @@ Are you really want to continue?
运行参数...
-
+
文件编码
@@ -4987,32 +4987,32 @@ Are you really want to continue?
文件历史
-
-
-
-
-
-
+
+
+
+
+
+
正在调试
-
-
-
-
-
-
+
+
+
+
+
+
正在运行
-
-
-
-
-
-
+
+
+
+
+
+
正在编译
@@ -5021,178 +5021,178 @@ Are you really want to continue?
行:%1 列:%2 已选择:%3 总行数:%4 总长度:%5
-
+
Line: %1 Col: %2 Selected: %3 Lines: %4 Length: %5
行: %1 列: %2 已选择 :%3 总行数: %4 总长度: %5
-
+
只读
-
+
插入
-
+
覆写
-
+
关闭项目
-
+
你确定要关闭'%1'吗?
-
-
+
+
确认
-
-
-
+
+
+
源文件尚未编译。
-
-
+
+
现在编译?
-
-
+
+
源文件比可执行程序新。
-
+
重新编译?
-
+
无编译器设置
-
+
没有配置编译器设置。
-
+
无法启动调试器
-
-
+
+
启用调试参数
-
-
+
+
当前编译设置中未启用调试选项(-g3),或启用了信息剥除选项(-s)<br /><br/>是否纠正这一问题?
-
+
项目尚未构建
-
+
项目尚未构建。是否构建?
-
+
宿主程序不存在
-
+
动态链接库(DLL)需要一个宿主程序来运行。
-
+
但它不存在。
-
+
宿主程序不存在
-
+
宿主程序'%1'不存在。
-
+
重新编译?
-
-
+
+
保存上次打开信息失败
-
+
无法删除旧上次打开信息文件'%1'
-
+
无法保存上次打开信息文件'%1'
-
+
载入上次打开信息失败
-
+
无法载入上次打开信息文件'%1'
-
+
打开源代码文件
-
+
显示详细调试器日志
-
+
全部复制
-
-
-
+
+
+
清除
@@ -5208,7 +5208,7 @@ Are you really want to continue?
-
+
试题集%1
@@ -5229,68 +5229,68 @@ Are you really want to continue?
或者选择使用其他的网络端口。
-
-
+
+
重新构建项目
-
-
+
+
项目已经被修改过,是否需要重新构建?
-
+
自动保存出错
-
+
自动保存"%1"到"%2"失败:%3
-
+
试题属性...
-
+
设置试题集名称
-
+
试题集名称:
-
+
删除
-
+
删除全部书签
-
+
修改描述
-
-
-
+
+
+
书签描述
-
-
-
+
+
+
描述:
@@ -5299,375 +5299,379 @@ Are you really want to continue?
在调试主控台中显示调试器输出
-
+
清除这次搜索
-
+
删除所有搜索
-
+
断点条件...
-
+
断点条件
-
+
输入当前断点的生效条件:
-
+
Remove all breakpoints
删除所有断点
-
+
删除当前断点
-
+
重命名文件
-
-
+
+
添加文件夹
-
+
新文件夹
-
+
文件夹:
-
+
重命名
-
+
删除文件夹
-
+
切换为普通视图
-
+
切换为自定义视图
-
+
按类型排序
-
+
按名称排序
-
+
显示继承的成员
-
+
跳转到声明处
-
+
跳转到定义处
-
-
-
+
+
新建文件夹
-
-
-
-
+
+
+
+
删除
-
+
在编辑器中打开
-
+
使用外部程序打开
-
+
在终端中打开
-
+
在Windows浏览器中打开
-
+
字符集
-
+
- 转换为%1编码
+ 转换为%1编码
-
+
已自动保存%1个文件
-
+
设置答案源代码...
-
+
选择其他文件...
-
+
选择答案源代码文件
-
+
C/C++Source Files (*.c *.cpp *.cc *.cxx
C/C++源代码文件 (*.c *.cpp *.cc *.cxx)
-
+
+
+ 新建文件夹%1
+
+
+
你真的要删除%1吗?
-
+
你真的要删除%1个文件吗?
-
+
保存项目
-
+
项目'%1'有改动。
-
-
+
+
需要保存吗?
-
-
+
+
文件已发生变化
-
+
新建项目文件?
-
+
您是否要将新建的文件加入项目?
-
-
-
-
+
+
+
+
保存失败
-
+
改变项目编译器配置集
-
+
改变项目的编译器配置集会导致所有的自定义编译器选项被重置。
-
+
你真的想要做那些吗?
-
+
您真的要清除该文件的所有断点吗?
-
+
新建项目
-
+
关闭'%1'以打开新项目?
-
+
文件夹不存在
-
+
文件夹'%1'不存在。是否创建?
-
+
无法创建文件夹
-
+
创建文件夹'%1'失败。
-
+
-
+
文件夹%1不是空的。
-
+
你真的要删除它吗?
-
+
改变工作文件夹
-
+
File '%1' is not in the current working folder
文件'%1'不在当前工作文件夹中。
-
+
是否将工作文件夹改设为'%1'?
-
+
无法提交
-
+
Git需要用信息进行提交。
-
+
选择工作文件夹
-
-
+
+
头文件已存在
-
-
+
+
头文件"%1"已存在!
-
+
源文件已存在!
-
+
源文件"%1"已存在!
-
+
无法提交!
-
+
下列文件处于冲突状态,请解决后重新添加和提交:
-
+
提交信息
-
+
提交信息:
-
+
提交失败
-
+
提交信息不能为空!
@@ -5676,125 +5680,125 @@ Are you really want to continue?
小熊猫Dev-C++项目文件 (*.dev)
-
+
新建项目失败
-
+
无法使用模板创建项目
-
+
删除文件
-
+
同时从硬盘上删除文件?
-
+
无标题
-
+
新的项目文件名
-
+
文件名:
-
+
文件已存在!
-
+
文件'%1'已经存在!
-
+
添加到项目
-
+
小熊猫C++项目文件(*.dev)
-
+
重命名出错
-
+
符号'%1'在系统头文件中定义,无法修改。
-
+
新名称
-
-
+
+
替换出错
-
+
无法打开文件'%1'进行替换!
-
+
内容和上次查找时不一致。
-
+
RTF格式文件 (*.rtf)
-
+
HTML文件 (*.html)
-
+
当前的试题集不是空的。
-
+
试题%1
-
-
+
+
试题集文件 (*.pbs)
-
+
载入失败
-
-
+
+
试题案例%1
@@ -5805,15 +5809,15 @@ Are you really want to continue?
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
错误
@@ -5823,94 +5827,94 @@ Are you really want to continue?
项目历史
-
+
载入主题失败
-
-
+
+
清除历史
-
-
+
+
版本控制
-
+
磁盘文件'%1'已被修改。
-
+
是否重新读取它的内容?
-
+
磁盘文件'%1'已被删除。
-
+
是否保持它在小熊猫C++中打开的编辑窗口?
-
+
打开
-
+
编译失败
-
+
运行失败
-
-
-
+
+
+
确认转换
-
-
-
+
+
+
当前编辑器中的文件将会使用%1编码保存。<br />这项操作无法被撤回。<br />你确定要继续吗?
-
+
新监视表达式
-
+
输入监视表达式
-
+
(%1/%2)正在解析文件"%3"
-
-
+
+
完成%1个文件的解析,用时%2秒
-
+
(每秒%1个文件)
@@ -8053,7 +8057,7 @@ Are you really want to continue?
自动链接
-
+
@@ -8129,15 +8133,15 @@ Are you really want to continue?
杂项
-
-
+
+
程序运行
-
+
试题集
diff --git a/RedPandaIDE/mainwindow.cpp b/RedPandaIDE/mainwindow.cpp
index 2d7a6f6f..42c8fb57 100644
--- a/RedPandaIDE/mainwindow.cpp
+++ b/RedPandaIDE/mainwindow.cpp
@@ -3595,11 +3595,13 @@ void MainWindow::onFilesViewCreateFolder()
{
QModelIndex index = ui->treeFiles->currentIndex();
QDir dir;
- if (index.isValid()) {
+ if (index.isValid()
+ && ui->treeFiles->selectionModel()->isSelected(index)) {
if (mFileSystemModel.isDir(index))
dir = QDir(mFileSystemModel.fileInfo(index).absoluteFilePath());
else
dir = mFileSystemModel.fileInfo(index).absoluteDir();
+ ui->treeFiles->expand(index);
} else {
dir = mFileSystemModel.rootDirectory();
}
@@ -3607,9 +3609,9 @@ void MainWindow::onFilesViewCreateFolder()
int count = 0;
while (dir.exists(folderName)) {
count++;
- folderName = tr("New Folder").arg(count);
+ folderName = tr("New Folder %1").arg(count);
}
- mFileSystemModel.mkdir(index,folderName);
+ dir.mkdir(dir.filePath(folderName));
}
void MainWindow::onFilesViewRemoveFiles()
diff --git a/RedPandaIDE/qsynedit/SynEdit.cpp b/RedPandaIDE/qsynedit/SynEdit.cpp
index 0d88c8bb..05ff4cf2 100644
--- a/RedPandaIDE/qsynedit/SynEdit.cpp
+++ b/RedPandaIDE/qsynedit/SynEdit.cpp
@@ -5324,65 +5324,65 @@ int SynEdit::insertTextByNormalMode(const QString &Value)
return Result;
}
-int SynEdit::insertTextByColumnMode(const QString &Value, bool AddToUndoList)
+int SynEdit::insertTextByColumnMode(const QString &value, bool addToUndoList)
{
- QString Str;
- QString TempString;
- int Start;
- int P;
- int Len;
- int InsertCol;
- BufferCoord LineBreakPos;
- int Result = 0;
+ QString str;
+ QString tempString;
+ int start;
+ int p;
+ int len;
+ int insertCol;
+ BufferCoord lineBreakPos;
+ int result = 0;
// Insert string at current position
- InsertCol = charToColumn(mCaretY,mCaretX);
- Start = 0;
+ insertCol = charToColumn(mCaretY,mCaretX);
+ start = 0;
do {
- P = GetEOL(Value,Start);
- if (P != Start) {
- Str = Value.mid(Start,P-Start);
+ p = GetEOL(value,start);
+ if (p != start) {
+ str = value.mid(start,p-start);
// Move(Start^, Str[1], P - Start);
if (mCaretY > mLines->count()) {
- Result++;
- TempString = QString(InsertCol - 1,' ') + Str;
+ result++;
+ tempString = QString(insertCol - 1,' ') + str;
mLines->add("");
- if (AddToUndoList) {
- LineBreakPos.Line = mCaretY - 1;
- LineBreakPos.Char = mLines->getString(mCaretY - 2).length() + 1;
+ if (addToUndoList) {
+ lineBreakPos.Line = mCaretY - 1;
+ lineBreakPos.Char = mLines->getString(mCaretY - 2).length() + 1;
mUndoList->AddChange(SynChangeReason::crLineBreak,
- LineBreakPos,
- LineBreakPos,
+ lineBreakPos,
+ lineBreakPos,
"", SynSelectionMode::smNormal);
}
} else {
- TempString = mLines->getString(mCaretY - 1);
- Len = stringColumns(TempString,0);
- if (Len < InsertCol) {
- TempString = TempString + QString(InsertCol - Len - 1,' ') + Str;
+ tempString = mLines->getString(mCaretY - 1);
+ len = stringColumns(tempString,0);
+ if (len < insertCol) {
+ tempString = tempString + QString(insertCol - len - 1,' ') + str;
} else {
- int insertPos = charToColumn(TempString,InsertCol);
- TempString.insert(insertPos-1,Str);
+ int insertPos = columnToChar(mCaretY,insertCol);
+ tempString.insert(insertPos-1,str);
}
}
- properSetLine(mCaretY - 1, TempString);
+ properSetLine(mCaretY - 1, tempString);
// Add undo change here from PasteFromClipboard
- if (AddToUndoList) {
+ if (addToUndoList) {
mUndoList->AddChange(SynChangeReason::crPaste, BufferCoord{mCaretX, mCaretY},
- BufferCoord{mCaretX + (P - Start), mCaretY}, "", mActiveSelectionMode);
+ BufferCoord{mCaretX + (p - start), mCaretY}, "", mActiveSelectionMode);
}
}
- if (P