diff options
author | Maximiliano Curia <maxy@gnuservers.com.ar> | 2015-08-07 11:16:41 +0200 |
---|---|---|
committer | Maximiliano Curia <maxy@gnuservers.com.ar> | 2015-08-07 11:16:41 +0200 |
commit | e338ea319dfec4290bc64755eaa84d6723d5a73b (patch) | |
tree | bb1b525852b01fab423072e4b97fe078cfc9f200 | |
parent | 42746e827d768a202609c0c73115820ccea219a1 (diff) | |
download | kde4libs-e338ea319dfec4290bc64755eaa84d6723d5a73b.tar.gz |
Remove upstream patches.
-rw-r--r-- | debian/changelog | 3 | ||||
-rw-r--r-- | debian/patches/KRecursiveFilterProxyModel-Fixed-the-model.diff | 331 | ||||
-rw-r--r-- | debian/patches/allow_cancel_ssl.diff | 89 | ||||
-rw-r--r-- | debian/patches/series | 2 |
4 files changed, 3 insertions, 422 deletions
diff --git a/debian/changelog b/debian/changelog index 0d5abc6..0c10114 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,9 @@ kde4libs (4:4.14.10-1~) UNRELEASED; urgency=medium * Update symbols files. * New upstream release (4.14.9). * New upstream release (4.14.10). + * Remove upstream patches: allow_cancel_ssl.diff + * Remove upstream patches: KRecursiveFilterProxyModel-Fixed-the- + model.diff -- Maximiliano Curia <maxy@debian.org> Fri, 03 Jul 2015 16:43:22 +0200 diff --git a/debian/patches/KRecursiveFilterProxyModel-Fixed-the-model.diff b/debian/patches/KRecursiveFilterProxyModel-Fixed-the-model.diff deleted file mode 100644 index 5ebfa53..0000000 --- a/debian/patches/KRecursiveFilterProxyModel-Fixed-the-model.diff +++ /dev/null @@ -1,331 +0,0 @@ -From a932980cc7babe69613b9c6ad98faa4ec368258e Mon Sep 17 00:00:00 2001 -From: Christian Mollekopf <chrigi_1@fastmail.fm> -Date: Tue, 9 Sep 2014 18:16:37 +0200 -Subject: [PATCH] KRecursiveFilterProxyModel: Fixed the model - -The model was not working properly and didn't include all items under -some circumstances. -This patch fixes the following scenarios in particular: - -* The change in sourceDataChanged is required to fix the shortcut condition. -The idea is that if the parent is already part of the model (it must be if acceptRow returns true), -we can directly invoke dataChanged on the parent, resulting in the changed index -getting reevaluated. However, because the recursive filterAcceptsRow version was used -the shortcut was also used when only the current index matches the filter and -the parent index is in fact not yet in the model. In this case we failed to call -dataChanged on the right index and thus the complete branch was never added to the model. - -* The change in refreshAscendantMapping is required to include indexes that were -included by descendants. The intended way how this was supposed to work is that we -traverse the tree upwards and find the last index that is not yet part of the model. -We would then call dataChanged on that index causing it and its descendants to get reevaluated. -However, acceptRow does not reflect wether an index is already in the model or not. -Consider the following model: - -- A - - B - - C - - D - - -If C is include in the model by default but D not and A & B only gets included due to C, we have the following model: -- A - - B - - C - - D - -If we then call refreshAscendantsMapping on D it will not consider B as already being part of the model. -This results in the toplevel index A being considered lastAscendant, and a call to dataChanged on A results in -a reevaluation of A only, which is already in the model. Thus D never gets added to the model. - -Unfortunately there is no way to probe QSortFilterProxyModel for indexes that are -already part of the model. Even the const mapFromSource internally creates a mapping when called, -and thus instead of revealing indexes that are not yet part of the model, it silently -creates a mapping (without issuing the relevant signals!). - -As the only possible workaround we have to issues dataChanged for all ancestors -which is ignored for indexes that are not yet mapped, and results in a rowsInserted -signal for the correct indexes. It also results in superfluous dataChanged signals, -since we don't know when to stop, but at least we have a properly behaving model -this way. ---- - kdeui/itemviews/krecursivefilterproxymodel.cpp | 17 +- - kdeui/tests/CMakeLists.txt | 1 + - kdeui/tests/krecursivefilterproxymodeltest.cpp | 221 +++++++++++++++++++++++++ - 3 files changed, 227 insertions(+), 12 deletions(-) - create mode 100644 kdeui/tests/krecursivefilterproxymodeltest.cpp - ---- a/kdeui/itemviews/krecursivefilterproxymodel.cpp -+++ b/kdeui/itemviews/krecursivefilterproxymodel.cpp -@@ -126,7 +126,7 @@ void KRecursiveFilterProxyModelPrivate:: - - QModelIndex source_parent = source_top_left.parent(); - -- if (!source_parent.isValid() || q->filterAcceptsRow(source_parent.row(), source_parent.parent())) -+ if (!source_parent.isValid() || q->acceptRow(source_parent.row(), source_parent.parent())) - { - invokeDataChanged(source_top_left, source_bottom_right); - return; -@@ -149,24 +149,17 @@ void KRecursiveFilterProxyModelPrivate:: - void KRecursiveFilterProxyModelPrivate::refreshAscendantMapping(const QModelIndex &index, bool refreshAll) - { - Q_Q(KRecursiveFilterProxyModel); -- - Q_ASSERT(index.isValid()); -- QModelIndex lastAscendant = index; -- QModelIndex sourceAscendant = index.parent(); -+ -+ QModelIndex sourceAscendant = index; - // We got a matching descendant, so find the right place to insert the row. - // We need to tell the QSortFilterProxyModel that the first child between an existing row in the model - // has changed data so that it will get a mapping. -- while(sourceAscendant.isValid() && !q->acceptRow(sourceAscendant.row(), sourceAscendant.parent())) -+ while(sourceAscendant.isValid()) - { -- if (refreshAll) -- invokeDataChanged(sourceAscendant, sourceAscendant); -- -- lastAscendant = sourceAscendant; -+ invokeDataChanged(sourceAscendant, sourceAscendant); - sourceAscendant = sourceAscendant.parent(); - } -- -- // Inform the model that its data changed so that it creates new mappings and finds the rows which now match the filter. -- invokeDataChanged(lastAscendant, lastAscendant); - } - - void KRecursiveFilterProxyModelPrivate::sourceRowsAboutToBeInserted(const QModelIndex &source_parent, int start, int end) ---- a/kdeui/tests/CMakeLists.txt -+++ b/kdeui/tests/CMakeLists.txt -@@ -82,6 +82,7 @@ KDEUI_PROXYMODEL_TESTS( - kdescendantsproxymodeltest - kselectionproxymodeltest - testmodelqueuedconnections -+ krecursivefilterproxymodeltest - ) - - KDEUI_EXECUTABLE_TESTS( ---- /dev/null -+++ b/kdeui/tests/krecursivefilterproxymodeltest.cpp -@@ -0,0 +1,221 @@ -+/* -+ Copyright (c) 2014 Christian Mollekopf <mollekopf@kolabsys.com> -+ -+ This library is free software; you can redistribute it and/or modify it -+ under the terms of the GNU Library General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or (at your -+ option) any later version. -+ -+ This library is distributed in the hope that it will be useful, but WITHOUT -+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public -+ License for more details. -+ -+ You should have received a copy of the GNU Library General Public License -+ along with this library; see the file COPYING.LIB. If not, write to the -+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -+ 02110-1301, USA. -+*/ -+ -+ -+#include <qtest_kde.h> -+ -+#include <krecursivefilterproxymodel.h> -+#include <QStandardItemModel> -+ -+class ModelSignalSpy : public QObject { -+ Q_OBJECT -+public: -+ explicit ModelSignalSpy(QAbstractItemModel &model) { -+ connect(&model, SIGNAL(rowsInserted(QModelIndex, int, int)), this, SLOT(onRowsInserted(QModelIndex,int,int))); -+ connect(&model, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, SLOT(onRowsRemoved(QModelIndex,int,int))); -+ connect(&model, SIGNAL(rowsMoved(QModelIndex, int, int, QModelIndex, int)), this, SLOT(onRowsMoved(QModelIndex,int,int, QModelIndex, int))); -+ connect(&model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(onDataChanged(QModelIndex,QModelIndex))); -+ connect(&model, SIGNAL(layoutChanged()), this, SLOT(onLayoutChanged())); -+ connect(&model, SIGNAL(modelReset()), this, SLOT(onModelReset())); -+ } -+ -+ QStringList mSignals; -+ QModelIndex parent; -+ int start; -+ int end; -+ -+public Q_SLOTS: -+ void onRowsInserted(QModelIndex p, int s, int e) { -+ mSignals << QLatin1String("rowsInserted"); -+ parent = p; -+ start = s; -+ end = e; -+ } -+ void onRowsRemoved(QModelIndex p, int s, int e) { -+ mSignals << QLatin1String("rowsRemoved"); -+ parent = p; -+ start = s; -+ end = e; -+ } -+ void onRowsMoved(QModelIndex,int,int,QModelIndex,int) { -+ mSignals << QLatin1String("rowsMoved"); -+ } -+ void onDataChanged(QModelIndex,QModelIndex) { -+ mSignals << QLatin1String("dataChanged"); -+ } -+ void onLayoutChanged() { -+ mSignals << QLatin1String("layoutChanged"); -+ } -+ void onModelReset() { -+ mSignals << QLatin1String("modelReset"); -+ } -+}; -+ -+class TestModel : public KRecursiveFilterProxyModel -+{ -+ Q_OBJECT -+public: -+ virtual bool acceptRow(int sourceRow, const QModelIndex &sourceParent) const -+ { -+ // qDebug() << sourceModel()->index(sourceRow, 0, sourceParent).data().toString() << sourceModel()->index(sourceRow, 0, sourceParent).data(Qt::UserRole+1).toBool(); -+ return sourceModel()->index(sourceRow, 0, sourceParent).data(Qt::UserRole+1).toBool(); -+ } -+}; -+ -+static QModelIndex getIndex(char *string, const QAbstractItemModel &model) -+{ -+ QModelIndexList list = model.match(model.index(0, 0), Qt::DisplayRole, QString::fromLatin1(string), 1, Qt::MatchRecursive); -+ if (list.isEmpty()) { -+ return QModelIndex(); -+ } -+ return list.first(); -+} -+ -+class KRecursiveFilterProxyModelTest : public QObject -+{ -+ Q_OBJECT -+private: -+ -+private slots: -+ // Requires the acceptRow fix in sourceDataChanged to pass -+ // Test that we properly react to a data-changed signal in a descendant and include all required rows -+ void testDataChange() -+ { -+ QStandardItemModel model; -+ TestModel proxy; -+ proxy.setSourceModel(&model); -+ -+ QStandardItem *row1 = new QStandardItem("row1"); -+ row1->setData(false); -+ model.appendRow(row1); -+ -+ QCOMPARE(getIndex("row1", proxy).isValid(), false); -+ -+ QStandardItem *subchild = new QStandardItem("subchild"); -+ subchild->setData(false); -+ { -+ QStandardItem *child = new QStandardItem("child"); -+ child->setData(false); -+ child->appendRow(subchild); -+ row1->appendRow(child); -+ } -+ -+ ModelSignalSpy spy(proxy); -+ subchild->setData(true); -+ -+ QCOMPARE(getIndex("row1", proxy).isValid(), true); -+ QCOMPARE(getIndex("child", proxy).isValid(), true); -+ QCOMPARE(getIndex("subchild", proxy).isValid(), true); -+ -+ QCOMPARE(spy.mSignals, QStringList() << QLatin1String("rowsInserted")); -+ } -+ -+ void testInsert() -+ { -+ QStandardItemModel model; -+ TestModel proxy; -+ proxy.setSourceModel(&model); -+ -+ QStandardItem *row1 = new QStandardItem("row1"); -+ row1->setData(false); -+ model.appendRow(row1); -+ -+ QStandardItem *child = new QStandardItem("child"); -+ child->setData(false); -+ row1->appendRow(child); -+ -+ QStandardItem *child2 = new QStandardItem("child2"); -+ child2->setData(false); -+ child->appendRow(child2); -+ -+ QCOMPARE(getIndex("row1", proxy).isValid(), false); -+ QCOMPARE(getIndex("child", proxy).isValid(), false); -+ QCOMPARE(getIndex("child2", proxy).isValid(), false); -+ -+ ModelSignalSpy spy(proxy); -+ { -+ QStandardItem *subchild = new QStandardItem("subchild"); -+ subchild->setData(true); -+ child2->appendRow(subchild); -+ } -+ -+ QCOMPARE(getIndex("row1", proxy).isValid(), true); -+ QCOMPARE(spy.mSignals, QStringList() << QLatin1String("rowsInserted")); -+ QCOMPARE(spy.parent, QModelIndex()); -+ } -+ -+ -+ // We want to get child2 into the model which is a descendant of child. -+ // child is already in the model from the neighbor2 branch. We must ensure dataChange is called on child, -+ // so child2 is included in the model. -+ void testNeighborPath() -+ { -+ QStandardItemModel model; -+ TestModel proxy; -+ proxy.setSourceModel(&model); -+ -+ QStandardItem *row1 = new QStandardItem("row1"); -+ row1->setData(false); -+ model.appendRow(row1); -+ -+ QStandardItem *child = new QStandardItem("child"); -+ child->setData(false); -+ row1->appendRow(child); -+ -+ QStandardItem *child2 = new QStandardItem("child2"); -+ child2->setData(false); -+ child->appendRow(child2); -+ -+ { -+ QStandardItem *nb1 = new QStandardItem("neighbor"); -+ nb1->setData(false); -+ child->appendRow(nb1); -+ -+ QStandardItem *nb2 = new QStandardItem("neighbor2"); -+ nb2->setData(true); -+ nb1->appendRow(nb2); -+ } -+ -+ //These tests affect the test. It seems without them the mapping is not created in qsortfilterproxymodel, resulting in the item -+ //simply getting added later on. With these the model doesn't react to the added subchild as it should. Piece of crap. -+ QCOMPARE(getIndex("child2", proxy).isValid(), false); -+ QCOMPARE(getIndex("child", proxy).isValid(), true); -+ QCOMPARE(getIndex("neighbor", proxy).isValid(), true); -+ QCOMPARE(getIndex("neighbor2", proxy).isValid(), true); -+ -+ ModelSignalSpy spy(proxy); -+ -+ { -+ qDebug() << "inserting"; -+ QStandardItem *subchild = new QStandardItem("subchild"); -+ subchild->setData(true); -+ child2->appendRow(subchild); -+ } -+ -+ QCOMPARE(getIndex("child2", proxy).isValid(), true); -+ QCOMPARE(getIndex("subchild", proxy).isValid(), true); -+ //The dataChanged signals are not intentional and cause by refreshAscendantMapping. Unfortunately we can't avoid them. -+ QCOMPARE(spy.mSignals, QStringList() << QLatin1String("rowsInserted") << QLatin1String("dataChanged") << QLatin1String("dataChanged")); -+ } -+ -+}; -+ -+QTEST_KDEMAIN(KRecursiveFilterProxyModelTest, NoGUI) -+ -+#include "krecursivefilterproxymodeltest.moc" diff --git a/debian/patches/allow_cancel_ssl.diff b/debian/patches/allow_cancel_ssl.diff deleted file mode 100644 index 3f3b026..0000000 --- a/debian/patches/allow_cancel_ssl.diff +++ /dev/null @@ -1,89 +0,0 @@ -commit 38a89ca0195dedee30240647b86c7b6df6788723 -Author: Dawit Alemayehu <adawit@kde.org> -Date: Tue Nov 4 07:23:56 2014 -0500 - - Allow user to cancel out of the certificate accept duration dialog box. - - BUG: 335375 - FIXED-IN: 4.14.3 - REVIEW: 120975 - -diff --git a/kio/kio/tcpslavebase.cpp b/kio/kio/tcpslavebase.cpp -index cdf28f0..fe83310 100644 ---- a/kio/kio/tcpslavebase.cpp -+++ b/kio/kio/tcpslavebase.cpp -@@ -815,45 +815,51 @@ TCPSlaveBase::SslResult TCPSlaveBase::verifyServerCertificate() - message = message.trimmed(); - - int msgResult; -+ QDateTime ruleExpiry = QDateTime::currentDateTime(); - do { - msgResult = messageBox(WarningYesNoCancel, message, - i18n("Server Authentication"), - i18n("&Details"), i18n("Co&ntinue")); -- if (msgResult == KMessageBox::Yes) { -+ switch (msgResult) { -+ case KMessageBox::Yes: - //Details was chosen- show the certificate and error details - messageBox(SSLMessageBox /*the SSL info dialog*/, d->host); -- } else if (msgResult == KMessageBox::Cancel) { -- return ResultFailed; -- } else if (msgResult != KMessageBox::No) { -+ break; -+ case KMessageBox::No: { -+ //fall through on KMessageBox::No -+ const int result = messageBox(WarningYesNoCancel, -+ i18n("Would you like to accept this " -+ "certificate forever without " -+ "being prompted?"), -+ i18n("Server Authentication"), -+ i18n("&Forever"), -+ i18n("&Current Session only")); -+ if (result == KMessageBox::Yes) { -+ //accept forever ("for a very long time") -+ ruleExpiry = ruleExpiry.addYears(1000); -+ } else if (result == KMessageBox::No) { -+ //accept "for a short time", half an hour. -+ ruleExpiry = ruleExpiry.addSecs(30*60); -+ } else { -+ msgResult = KMessageBox::Yes; -+ } -+ break; -+ } -+ case KMessageBox::Cancel: -+ return ResultFailed; -+ default: - kWarning() << "Unexpected MessageBox response received:" << msgResult; - return ResultFailed; - } -- //fall through on KMessageBox::No - } while (msgResult == KMessageBox::Yes); - -- //Save the user's choice to ignore the SSL errors. -- -- msgResult = messageBox(WarningYesNo, -- i18n("Would you like to accept this " -- "certificate forever without " -- "being prompted?"), -- i18n("Server Authentication"), -- i18n("&Forever"), -- i18n("&Current Session only")); -- QDateTime ruleExpiry = QDateTime::currentDateTime(); -- if (msgResult == KMessageBox::Yes) { -- //accept forever ("for a very long time") -- ruleExpiry = ruleExpiry.addYears(1000); -- } else { -- //accept "for a short time", half an hour. -- ruleExpiry = ruleExpiry.addSecs(30*60); -- } -- - //TODO special cases for wildcard domain name in the certificate! - //rule = KSslCertificateRule(d->socket.peerCertificateChain().first(), whatever); - - rule.setExpiryDateTime(ruleExpiry); - rule.setIgnoredErrors(d->sslErrors); -+ -+ //Save the user's choice to ignore the SSL errors. - cm->setRule(rule); - - return ResultOk | ResultOverridden; diff --git a/debian/patches/series b/debian/patches/series index bc9926e..6290845 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -33,5 +33,3 @@ fix_solidlex_destroy_signature.patch #kubuntu_patched_l10n.diff kubuntu_raise_after_drkonqi.patch kubuntu_revert_findpythonlibrary.diff -allow_cancel_ssl.diff -KRecursiveFilterProxyModel-Fixed-the-model.diff |