Merge branch 'fixes' into atys

merge-requests/7/head
commit 8d5c0facf8

@ -38,21 +38,57 @@ namespace NLGUI
TStyleVec CCssParser::parseDecls(const std::string &styleString) TStyleVec CCssParser::parseDecls(const std::string &styleString)
{ {
TStyleVec styles; TStyleVec styles;
std::vector<std::string> elements; size_t pos = 0;
NLMISC::splitString(styleString, ";", elements); size_t end = styleString.size();
while(pos < end)
{
size_t sep = styleString.find(':', pos);
if (sep == std::string::npos)
break;
size_t keyIndex = pos;
size_t keyLength = sep - pos;
sep++;
pos = sep;
while(sep < end)
{
sep = styleString.find_first_of(";'\"(", sep);
if (sep == std::string::npos || styleString[sep] == ';')
break;
for(uint i = 0; i < elements.size(); ++i) if (styleString[sep] == '\'' || styleString[sep] == '"')
{ {
std::string::size_type pos; char ch = styleString[sep];
pos = elements[i].find_first_of(':'); // skip open quote
if (pos != std::string::npos) sep++;
while(sep < end && styleString[sep] != ch)
{ {
std::string key = trim(toLower(elements[i].substr(0, pos))); if (styleString[sep] == '\\')
std::string value = trim(elements[i].substr(pos+1)); sep++;
styles.push_back(TStylePair(key, value)); sep++;
} }
// skip close quote
sep++;
} }
else if (styleString[sep] == '(')
{
while(sep < end && styleString[sep] != ')')
{
sep++;
}
// skip close parenthesis
sep++;
}
}
styles.push_back(TStylePair(trim(styleString.substr(keyIndex, keyLength)), trim(styleString.substr(pos, sep - pos))));
if (sep >= end)
break;
pos = sep + 1;
}
return styles; return styles;
} }

@ -1028,6 +1028,9 @@ namespace NLGUI
// second loop -> false && break // second loop -> false && break
loop = !loop; loop = !loop;
if (next >= parts.size())
break;
val = toLower(parts[next]); val = toLower(parts[next]);
if (val == "center") if (val == "center")
{ {

@ -1113,7 +1113,7 @@ TInterfaceState globalMenu()
charSelect = LoginCharsel; charSelect = LoginCharsel;
WaitServerAnswer = false; WaitServerAnswer = false;
if (charSelect == -1) if (charSelect == -1 || FarTP.isReselectingChar())
{ {
CCDBNodeLeaf *pNL = NLGUI::CDBManager::getInstance()->getDbProp("UI:SERVER_RECEIVED_CHARS", false); CCDBNodeLeaf *pNL = NLGUI::CDBManager::getInstance()->getDbProp("UI:SERVER_RECEIVED_CHARS", false);
if (pNL != NULL) if (pNL != NULL)

@ -424,6 +424,10 @@ CViewBase *CChatTextManager::createMsgTextComplex(const ucstring &msg, NLMISC::C
ucstring::size_type pos = 0; ucstring::size_type pos = 0;
// Manage Translations
CCDBNodeLeaf *node= NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CHAT:SHOW_TRANSLATION_ONLY_AS_TOOLTIP_CB", false);
bool originalFirst = node ? node->getValueBool() : true;
string::size_type startTr = msg.find(ucstring("{:")); string::size_type startTr = msg.find(ucstring("{:"));
string::size_type endOfOriginal = msg.find(ucstring("}@{")); string::size_type endOfOriginal = msg.find(ucstring("}@{"));

Loading…
Cancel
Save