Compose key plugin: expand "%L" to full path.
According to [1] "%L" should expand to a full path for the default (based on system's locale) Compose file. [1] http://www.x.org/archive/current/doc/man/man5/Compose.5.xhtml Task-number: QTBUG-35943 Change-Id: Ie803a89742d9c0aa3b2d759bea28ed403dc68c9c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This commit is contained in:
parent
857c82f8a4
commit
d06c6d8a51
@ -111,21 +111,17 @@ void TableGenerator::findComposeFile()
|
||||
}
|
||||
// check for the system provided compose files
|
||||
if (!found && cleanState()) {
|
||||
QByteArray loc = locale().toUpper().toUtf8();
|
||||
QString table = readLocaleMappings(loc);
|
||||
if (table.isEmpty())
|
||||
table = readLocaleMappings(readLocaleAliases(loc));
|
||||
|
||||
QString table = composeTableForLocale();
|
||||
if (cleanState()) {
|
||||
if (table.isEmpty())
|
||||
// no table mappings for the system's locale in the compose.dir
|
||||
m_state = UnsupportedLocale;
|
||||
else
|
||||
found = processFile(systemComposeDir() + QLatin1String("/") + table);
|
||||
found = processFile(systemComposeDir() + QLatin1Char('/') + table);
|
||||
#ifdef DEBUG_GENERATOR
|
||||
if (found)
|
||||
qDebug() << "Using Compose file from: " <<
|
||||
systemComposeDir() + QLatin1String("/") + table;
|
||||
systemComposeDir() + QLatin1Char('/') + table;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -137,6 +133,15 @@ void TableGenerator::findComposeFile()
|
||||
m_state = MissingComposeFile;
|
||||
}
|
||||
|
||||
QString TableGenerator::composeTableForLocale()
|
||||
{
|
||||
QByteArray loc = locale().toUpper().toUtf8();
|
||||
QString table = readLocaleMappings(loc);
|
||||
if (table.isEmpty())
|
||||
table = readLocaleMappings(readLocaleAliases(loc));
|
||||
return table;
|
||||
}
|
||||
|
||||
bool TableGenerator::findSystemComposeDir()
|
||||
{
|
||||
bool found = false;
|
||||
@ -311,7 +316,7 @@ void TableGenerator::parseIncludeInstruction(QString line)
|
||||
|
||||
// expand substitutions if present
|
||||
line.replace(QLatin1String("%H"), QString(qgetenv("HOME")));
|
||||
line.replace(QLatin1String("%L"), locale());
|
||||
line.replace(QLatin1String("%L"), systemComposeDir() + QLatin1Char('/') + composeTableForLocale());
|
||||
line.replace(QLatin1String("%S"), systemComposeDir());
|
||||
|
||||
processFile(line);
|
||||
|
@ -118,13 +118,14 @@ protected:
|
||||
void findComposeFile();
|
||||
bool findSystemComposeDir();
|
||||
QString systemComposeDir();
|
||||
QString composeTableForLocale();
|
||||
|
||||
ushort keysymToUtf8(quint32 sym);
|
||||
|
||||
QString readLocaleMappings(const QByteArray &locale);
|
||||
QByteArray readLocaleAliases(const QByteArray &locale);
|
||||
void initPossibleLocations();
|
||||
bool cleanState() const { return ((m_state & NoErrors) == NoErrors); }
|
||||
bool cleanState() const { return m_state == NoErrors; }
|
||||
QString locale() const;
|
||||
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user