From d07112807c491fb2f8ccb4059ab22ada83deddac Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Mon, 17 Sep 2018 10:21:34 +0200 Subject: [PATCH] GUI restable: make sure the URL column is UTF-8, else url-encode it for display --- src/qtgui/restable.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/qtgui/restable.cpp b/src/qtgui/restable.cpp index 30f7170d..5dbcde96 100644 --- a/src/qtgui/restable.cpp +++ b/src/qtgui/restable.cpp @@ -362,19 +362,30 @@ QVariant RecollModel::data(const QModelIndex& index, int role) const LOGDEB2("RecollModel::data: row " << index.row() << " col " << index.column() << " role " << role << "\n"); if (!m_source || role != Qt::DisplayRole || !index.isValid() || - index.column() >= int(m_fields.size())) { - return QVariant(); + index.column() >= int(m_fields.size())) { + return QVariant(); } Rcl::Doc doc; if (!m_source->getDoc(index.row(), doc)) { - return QVariant(); + return QVariant(); } string colname = m_fields[index.column()]; + string data = m_getters[index.column()](colname, doc); + + // Special case url, because it may not be utf-8. URL-encode in this case. + if (!colname.compare("url")) { + int ecnt; + string data1; + if (!transcode(data, data1, "UTF-8", "UTF-8", &ecnt) || ecnt > 0) { + data = url_encode(data); + } + } + list lr; - g_hiliter.plaintorich(m_getters[index.column()](colname, doc), lr, m_hdata); + g_hiliter.plaintorich(data, lr, m_hdata); return QString::fromUtf8(lr.front().c_str()); }