From ea3fee3d72bc1ac62b59ae2901d408ace8a5a63c Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Mon, 7 Mar 2016 20:38:56 +0200 Subject: [PATCH] =?UTF-8?q?Correct=20fix=20to=20display=20either=20transla?= =?UTF-8?q?ted=20category=20name=20for=20type=20(or=20it=E2=80=99s=20base?= =?UTF-8?q?=20type),=20or=20untranslated=20name.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- indexer/categories_holder.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/indexer/categories_holder.cpp b/indexer/categories_holder.cpp index 7ee9084732..e6678c55ca 100644 --- a/indexer/categories_holder.cpp +++ b/indexer/categories_holder.cpp @@ -202,10 +202,23 @@ bool CategoriesHolder::GetNameByType(uint32_t type, int8_t locale, string & name string CategoriesHolder::GetReadableFeatureType(uint32_t type, int8_t locale) const { ASSERT_NOT_EQUAL(type, 0, ()); + uint8_t level = ftype::GetLevel(type); + ASSERT_GREATER(level, 0, ()); + + uint32_t originalType = type; string name; - if (GetNameByType(type, locale, name)) - return name; - return classif().GetReadableObjectName(type); + while (true) + { + if (GetNameByType(type, locale, name)) + return name; + + if (--level == 0) + break; + + ftype::TruncValue(type, level); + } + + return classif().GetReadableObjectName(originalType); } bool CategoriesHolder::IsTypeExist(uint32_t type) const