From cbcf42aba84733e1b9072f5320519c99bf8c0ac7 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 10 Oct 2011 23:14:36 +0000 Subject: Mon Oct 10 23:14:36 UTC 2011 --- extra/kdelibs/PKGBUILD | 12 ++++-- extra/kdelibs/kdelibs-nepomuk-unicode.diff | 65 ++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 extra/kdelibs/kdelibs-nepomuk-unicode.diff (limited to 'extra/kdelibs') diff --git a/extra/kdelibs/PKGBUILD b/extra/kdelibs/PKGBUILD index 24ac8c85c..99360d885 100644 --- a/extra/kdelibs/PKGBUILD +++ b/extra/kdelibs/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 139893 2011-10-05 19:09:04Z andrea $ +# $Id: PKGBUILD 140212 2011-10-09 17:04:53Z ronald $ # Maintainer: Andrea Scarpino pkgname=kdelibs pkgver=4.7.2 -pkgrel=1 +pkgrel=2 pkgdesc="KDE Core Libraries" arch=('i686' 'x86_64') url='http://www.kde.org' @@ -19,10 +19,12 @@ makedepends=('pkgconfig' 'cmake' 'automoc4' 'intltool' 'avahi' 'libgl' replaces=('kdelibs-experimental') install='kdelibs.install' source=("http://download.kde.org/stable/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2" - 'kde-applications-menu.patch' 'archlinux-menu.patch') + 'kde-applications-menu.patch' 'archlinux-menu.patch' + 'kdelibs-nepomuk-unicode.diff') sha1sums=('4b074633cbf69752fda96018514ee771efe8f18b' '86ee8c8660f19de8141ac99cd6943964d97a1ed7' - '63a850ab4196b9d06934f2b4a13acd9f7739bc67') + '63a850ab4196b9d06934f2b4a13acd9f7739bc67' + 'e24aae17ef0d83085199ad7c7623afef9919b8ff') build() { cd "${srcdir}"/${pkgname}-${pkgver} @@ -31,6 +33,8 @@ build() { patch -p1 -i "${srcdir}"/kde-applications-menu.patch # add Archlinux menu entry patch -p1 -i "${srcdir}"/archlinux-menu.patch + # nepomuk unicode character fix + patch -p1 -i "${srcdir}"/kdelibs-nepomuk-unicode.diff cd "${srcdir}" mkdir build diff --git a/extra/kdelibs/kdelibs-nepomuk-unicode.diff b/extra/kdelibs/kdelibs-nepomuk-unicode.diff new file mode 100644 index 000000000..1c85d6fc9 --- /dev/null +++ b/extra/kdelibs/kdelibs-nepomuk-unicode.diff @@ -0,0 +1,65 @@ +diff --git a/nepomuk/query/querybuilderdata_p.h b/nepomuk/query/querybuilderdata_p.h +index 055482e..3880e13 100644 +--- a/nepomuk/query/querybuilderdata_p.h ++++ b/nepomuk/query/querybuilderdata_p.h +@@ -32,6 +32,28 @@ + #include "query_p.h" + #include "groupterm_p.h" + ++namespace { ++/// A hack to avoid passing extended chars to the bif:search_excerpts method which cannot handle ++/// utf8 chars which use more than one char, ie. wide chars. ++/// Thus, we simply truncate each term at the first wide char. ++QStringList stripExtendedCharsHack(const QStringList& terms) { ++ QStringList newTerms; ++ foreach(const QString& term, terms) { ++ int i = 0; ++ while(i < term.length()) { ++ if(term[i].unicode() > 0x7f) { ++ break; ++ } ++ ++i; ++ } ++ if(i > 0) { ++ newTerms.append(term.left(i)); ++ } ++ } ++ return newTerms; ++} ++} ++ + namespace Nepomuk { + namespace Query { + class QueryBuilderData +@@ -246,16 +268,23 @@ namespace Nepomuk { + for( QHash::const_iterator it = m_fullTextSearchTerms.constBegin(); + it != m_fullTextSearchTerms.constEnd(); ++it ) { + const QString& varName = it.key(); +- const QStringList& terms = it.value(); +- // bif:search_excerpt wants a vector of all search terms +- excerptParts +- << QString::fromLatin1("bif:search_excerpt(bif:vector(bif:charset_recode('%1', '_WIDE_', 'UTF-8')), %2)") +- .arg( terms.join(QLatin1String("','")), +- varName ); ++ const QStringList terms = stripExtendedCharsHack(it.value()); ++ if(terms.count()) { ++ // bif:search_excerpt wants a vector of all search terms ++ excerptParts ++ << QString::fromLatin1("bif:search_excerpt(bif:vector('%1'), %2)") ++ .arg( terms.join(QLatin1String("','")), ++ varName ); ++ } + } + +- return QString::fromLatin1("(bif:concat(%1)) as ?_n_f_t_m_ex_") +- .arg(excerptParts.join(QLatin1String(","))); ++ if(excerptParts.count()) { ++ return QString::fromLatin1("(bif:concat(%1)) as ?_n_f_t_m_ex_") ++ .arg(excerptParts.join(QLatin1String(","))); ++ } ++ else { ++ return QString(); ++ } + } + else { + return QString(); \ No newline at end of file -- cgit v1.2.3-54-g00ecf