@@ -35,8 +35,20 @@ void KeysTreeRenderer::renderKeys(QSharedPointer<Operations> operations,
35
35
36
36
int unprocessedPartStart = 0 ;
37
37
if (parent->getFullPath ().size () > 0 || parent->type () == " namespace" ) {
38
- unprocessedPartStart =
39
- parent->getFullPath ().size () + settings.nsSeparator .length ();
38
+ int nsLength = 0 ;
39
+
40
+ if (keys.size () > 0 ) {
41
+ QString firstKey = QString::fromUtf8 (keys[0 ]);
42
+ int res = firstKey.indexOf (settings.nsSeparator , parent->getFullPath ().size ());
43
+
44
+ qDebug () << " NSs regex pos:" << res;
45
+
46
+ nsLength = settings.nsSeparator .matchedLength ();
47
+ }
48
+
49
+ unprocessedPartStart =
50
+ parent->getFullPath ().size () + nsLength;
51
+
40
52
}
41
53
42
54
auto rootItem = resolveRootItem (parent);
@@ -130,7 +142,7 @@ void KeysTreeRenderer::renderKeys(QSharedPointer<Operations> operations,
130
142
parent->showLoadingError (" Not enough memory to render all keys" );
131
143
break ;
132
144
}
133
- }
145
+ }
134
146
135
147
if (preRenderedKeysToBeRemoved.size () > 0 ) {
136
148
QList<QWeakPointer<KeyItem>> obsoleteKeys;
@@ -161,10 +173,17 @@ void KeysTreeRenderer::renderLazily(QSharedPointer<AbstractNamespaceItem> root,
161
173
QWeakPointer<TreeItem> currentParent =
162
174
parent.staticCast <TreeItem>().toWeakRef ();
163
175
164
- int indexOfNaspaceSeparator =
165
- (settings.nsSeparator .isEmpty ())
166
- ? -1
167
- : notProcessedKeyPart.indexOf (settings.nsSeparator );
176
+ int indexOfNaspaceSeparator = -1 ;
177
+ auto nsSeparator = settings.nsSeparator ;
178
+ int nsSeparatorLength = nsSeparator.pattern ().size ();
179
+
180
+ if (!nsSeparator.isEmpty () && nsSeparator.patternSyntax () == QRegExp::RegExp) {
181
+ QString keyPart = QString::fromUtf8 (notProcessedKeyPart);
182
+ indexOfNaspaceSeparator = keyPart.indexOf (nsSeparator);
183
+
184
+ qDebug () << " NSs regex pos:" << indexOfNaspaceSeparator << nsSeparator.cap ();
185
+ nsSeparatorLength = nsSeparator.matchedLength ();
186
+ }
168
187
169
188
if (indexOfNaspaceSeparator == -1 ) {
170
189
if (parent->getAllChilds ().size () >= settings.renderLimit ) {
@@ -199,7 +218,8 @@ void KeysTreeRenderer::renderLazily(QSharedPointer<AbstractNamespaceItem> root,
199
218
QByteArray namespaceFullPath = fullKey.mid (0 , nsPos);
200
219
201
220
// Single namespaced key
202
- if (nextKey.isEmpty () || nextKey.indexOf (namespaceFullPath) == -1 ) {
221
+ if (nsSeparator.patternSyntax () != QRegExp::RegExp
222
+ && (nextKey.isEmpty () || nextKey.indexOf (namespaceFullPath) == -1 )) {
203
223
QSharedPointer<KeyItem> newKey (new KeyItem (fullKey, currentParent,
204
224
parent->model (),
205
225
settings.shortKeysRendering ));
@@ -209,7 +229,7 @@ void KeysTreeRenderer::renderLazily(QSharedPointer<AbstractNamespaceItem> root,
209
229
210
230
namespaceItem = QSharedPointer<NamespaceItem>(
211
231
new NamespaceItem (namespaceFullPath, m_operations, currentParent,
212
- parent->model (), settings.dbIndex , settings.filter ));
232
+ parent->model (), settings.dbIndex , settings.filter , nsSeparator. cap () ));
213
233
214
234
if (expandedNamespaces.contains (namespaceFullPath)) {
215
235
namespaceItem->setExpanded (true );
@@ -219,8 +239,7 @@ void KeysTreeRenderer::renderLazily(QSharedPointer<AbstractNamespaceItem> root,
219
239
}
220
240
221
241
renderLazily (root, namespaceItem,
222
- notProcessedKeyPart.mid (indexOfNaspaceSeparator +
223
- settings.nsSeparator .length ()),
242
+ notProcessedKeyPart.mid (indexOfNaspaceSeparator + nsSeparatorLength),
224
243
fullKey, m_operations, settings, expandedNamespaces,
225
244
level + 1 , nextKey);
226
245
}
0 commit comments