@@ -35,8 +35,20 @@ void KeysTreeRenderer::renderKeys(QSharedPointer<Operations> operations,
3535
3636 int unprocessedPartStart = 0 ;
3737 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+
4052 }
4153
4254 auto rootItem = resolveRootItem (parent);
@@ -130,7 +142,7 @@ void KeysTreeRenderer::renderKeys(QSharedPointer<Operations> operations,
130142 parent->showLoadingError (" Not enough memory to render all keys" );
131143 break ;
132144 }
133- }
145+ }
134146
135147 if (preRenderedKeysToBeRemoved.size () > 0 ) {
136148 QList<QWeakPointer<KeyItem>> obsoleteKeys;
@@ -161,10 +173,17 @@ void KeysTreeRenderer::renderLazily(QSharedPointer<AbstractNamespaceItem> root,
161173 QWeakPointer<TreeItem> currentParent =
162174 parent.staticCast <TreeItem>().toWeakRef ();
163175
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+ }
168187
169188 if (indexOfNaspaceSeparator == -1 ) {
170189 if (parent->getAllChilds ().size () >= settings.renderLimit ) {
@@ -199,7 +218,8 @@ void KeysTreeRenderer::renderLazily(QSharedPointer<AbstractNamespaceItem> root,
199218 QByteArray namespaceFullPath = fullKey.mid (0 , nsPos);
200219
201220 // Single namespaced key
202- if (nextKey.isEmpty () || nextKey.indexOf (namespaceFullPath) == -1 ) {
221+ if (nsSeparator.patternSyntax () != QRegExp::RegExp
222+ && (nextKey.isEmpty () || nextKey.indexOf (namespaceFullPath) == -1 )) {
203223 QSharedPointer<KeyItem> newKey (new KeyItem (fullKey, currentParent,
204224 parent->model (),
205225 settings.shortKeysRendering ));
@@ -209,7 +229,7 @@ void KeysTreeRenderer::renderLazily(QSharedPointer<AbstractNamespaceItem> root,
209229
210230 namespaceItem = QSharedPointer<NamespaceItem>(
211231 new NamespaceItem (namespaceFullPath, m_operations, currentParent,
212- parent->model (), settings.dbIndex , settings.filter ));
232+ parent->model (), settings.dbIndex , settings.filter , nsSeparator. cap () ));
213233
214234 if (expandedNamespaces.contains (namespaceFullPath)) {
215235 namespaceItem->setExpanded (true );
@@ -219,8 +239,7 @@ void KeysTreeRenderer::renderLazily(QSharedPointer<AbstractNamespaceItem> root,
219239 }
220240
221241 renderLazily (root, namespaceItem,
222- notProcessedKeyPart.mid (indexOfNaspaceSeparator +
223- settings.nsSeparator .length ()),
242+ notProcessedKeyPart.mid (indexOfNaspaceSeparator + nsSeparatorLength),
224243 fullKey, m_operations, settings, expandedNamespaces,
225244 level + 1 , nextKey);
226245}
0 commit comments