Browse Source

修Bug: ResultsTableView 鼠标选中新的文本块时,别的文本块中已划选的内容未被解除划选状态。

pull/809/head
hiroi-sora 5 months ago
parent
commit
95f69c227f
  1. 1
      UmiOCR-data/qt_res/qml/Widgets/ResultLayout/ResultTextContainer.qml
  2. 64
      UmiOCR-data/qt_res/qml/Widgets/ResultLayout/ResultsTableView.qml

1
UmiOCR-data/qt_res/qml/Widgets/ResultLayout/ResultTextContainer.qml

@ -14,6 +14,7 @@ Item {
property alias textLeft: textLeft_.text
property string textRight: ""
property alias textMain: textMain_.text
property alias activeFocus_: textMain_.activeFocus //
property int index_
//
property int selectL: -1

64
UmiOCR-data/qt_res/qml/Widgets/ResultLayout/ResultsTableView.qml

@ -247,37 +247,42 @@ Item {
}
return [li, lt, ri, rt]
}
// Index
// Index
function selectIndex() {
const [li, lt, ri, rt] = getIndexes()
const currentUpdate = selectUpdate //
selectUpdate++
//
for (let i = 0, l=resultsModel.count; i < l; i++) {
if( li<0 || ri<0 || i<li || i>ri ) { //
resultsModel.setProperty(i, "selectL_", -1)
resultsModel.setProperty(i, "selectR_", -1)
continue
}
const item = resultsModel.get(i)
const len = item.resText.length
if(i === li && i === ri) { //
resultsModel.setProperty(i, "selectL_", lt)
resultsModel.setProperty(i, "selectR_", Math.min(rt, len))
for (let i = 0, l = resultsModel.count; i < l; i++) {
let item = resultsModel.get(i) //
//
if( li<0 || ri<0 || i<li || i>ri ) {
item.selectL_ = -1
item.selectR_ = -1
}
else if(i === li) { //
resultsModel.setProperty(i, "selectL_", lt)
resultsModel.setProperty(i, "selectR_", len)
}
else if(i === ri) { //
resultsModel.setProperty(i, "selectL_", 0)
resultsModel.setProperty(i, "selectR_", Math.min(rt, len))
}
else { //
resultsModel.setProperty(i, "selectL_", 0)
resultsModel.setProperty(i, "selectR_", len)
//
else {
const len = item.resText.length //
if(i === li && i === ri) { // lt~rt
item.selectL_ = lt
item.selectR_ = Math.min(rt, len)
}
else if(i === li) { // lt~
item.selectL_ = lt
item.selectR_ = len
}
else if(i === ri) { // ~rt
item.selectL_ = 0
item.selectR_ = Math.min(rt, len)
}
else { // ~
item.selectL_ = 0
item.selectR_ = len
}
}
resultsModel.setProperty(i, "selectUpdate_", selectUpdate) //
item.selectUpdate_ = currentUpdate //
resultsModel.set(i, item)
}
selectUpdate++
}
//
function selectSingle() {
@ -379,6 +384,15 @@ Item {
startIndex = startTextIndex = -1 // start-1
}
else if(info.where >= 0) { //
//
for (let i = 0, l=resultsModel.count; i < l; i++) {
let element = resultsModel.get(i)
element.selectL_ = -1
element.selectR_ = -1
element.selectUpdate_ = selectUpdate
resultsModel.set(i, element); //
}
selectUpdate++
endIndex = startIndex = info.index
endTextIndex = startTextIndex = info.where
info.obj.focus(info.where) // &

Loading…
Cancel
Save