Hello community, here is the log from the commit of package kitemmodels for openSUSE:Factory checked in at 2015-02-16 15:07:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kitemmodels (Old) and /work/SRC/openSUSE:Factory/.kitemmodels.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kitemmodels" Changes: -------- --- /work/SRC/openSUSE:Factory/kitemmodels/kitemmodels.changes 2015-01-29 12:53:33.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.kitemmodels.new/kitemmodels.changes 2015-02-16 17:31:40.000000000 +0100 @@ -1,0 +2,10 @@ +Sun Feb 8 18:15:36 UTC 2015 - [email protected] + +- Update to 5.7.0 + * Fixed KRecursiveFilterProxyModel for Qt 5.5.0+, due to + QSortFilterProxyModel now using the roles parameter to the + dataChanged signal + * For more details please see: + https://www.kde.org/announcements/kde-frameworks-5.7.0.php + +------------------------------------------------------------------- Old: ---- kitemmodels-5.6.0.tar.xz New: ---- kitemmodels-5.7.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kitemmodels.spec ++++++ --- /var/tmp/diff_new_pack.Hecsae/_old 2015-02-16 17:31:41.000000000 +0100 +++ /var/tmp/diff_new_pack.Hecsae/_new 2015-02-16 17:31:41.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package kitemmodels # -# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,11 +17,12 @@ %define lname libKF5ItemModels5 +%define _tar_path 5.7 Name: kitemmodels -Version: 5.6.0 +Version: %{_tar_path}.0 Release: 0 BuildRequires: cmake >= 2.8.12 -BuildRequires: extra-cmake-modules >= 1.6.0 +BuildRequires: extra-cmake-modules >= 1.7.0 BuildRequires: fdupes BuildRequires: kf5-filesystem BuildRequires: pkgconfig(Qt5Core) >= 5.2.0 @@ -29,7 +30,7 @@ License: LGPL-2.1+ Group: System/GUI/KDE Url: http://www.kde.org -Source: http://download.kde.org/stable/frameworks/5.6/%{name}-%{version}.tar.xz +Source: http://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz Source1: baselibs.conf BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ kitemmodels-5.6.0.tar.xz -> kitemmodels-5.7.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitemmodels-5.6.0/CMakeLists.txt new/kitemmodels-5.7.0/CMakeLists.txt --- old/kitemmodels-5.6.0/CMakeLists.txt 2014-12-31 15:23:58.000000000 +0100 +++ new/kitemmodels-5.7.0/CMakeLists.txt 2015-01-23 21:40:52.000000000 +0100 @@ -2,7 +2,7 @@ project(KItemModels) -find_package(ECM 1.6.0 REQUIRED NO_MODULE) +find_package(ECM 1.7.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) @@ -19,7 +19,7 @@ include(ECMSetupVersion) include(ECMGenerateHeaders) -set(KF5_VERSION "5.6.0") # handled by release scripts +set(KF5_VERSION "5.7.0") # handled by release scripts ecm_setup_version(${KF5_VERSION} VARIABLE_PREFIX KITEMMODELS VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kitemmodels_version.h" @@ -34,7 +34,7 @@ # create a Config.cmake and a ConfigVersion.cmake file and install them -set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/KF5ItemModels") +set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5ItemModels") include(ECMPackageConfigHelpers) @@ -55,7 +55,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kitemmodels_version.h - DESTINATION ${KF5_INCLUDE_INSTALL_DIR} COMPONENT Devel + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} COMPONENT Devel ) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitemmodels-5.6.0/src/CMakeLists.txt new/kitemmodels-5.7.0/src/CMakeLists.txt --- old/kitemmodels-5.6.0/src/CMakeLists.txt 2014-12-31 15:23:58.000000000 +0100 +++ new/kitemmodels-5.7.0/src/CMakeLists.txt 2015-01-23 21:40:52.000000000 +0100 @@ -13,7 +13,7 @@ generate_export_header(KF5ItemModels BASE_NAME KItemModels) add_library(KF5::ItemModels ALIAS KF5ItemModels) -target_include_directories(KF5ItemModels INTERFACE "$<INSTALL_INTERFACE:${KF5_INCLUDE_INSTALL_DIR}/KItemModels>") +target_include_directories(KF5ItemModels INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF5}/KItemModels>") target_link_libraries(KF5ItemModels PUBLIC Qt5::Core) @@ -40,9 +40,9 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kitemmodels_export.h ${KItemModels_HEADERS} - DESTINATION ${KF5_INCLUDE_INSTALL_DIR}/KItemModels COMPONENT Devel + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KItemModels COMPONENT Devel ) include(ECMGeneratePriFile) -ecm_generate_pri_file(BASE_NAME KItemModels LIB_NAME KF5ItemModels DEPS "core" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KF5_INCLUDE_INSTALL_DIR}/KItemModels) +ecm_generate_pri_file(BASE_NAME KItemModels LIB_NAME KF5ItemModels DEPS "core" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KItemModels) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitemmodels-5.6.0/src/krecursivefilterproxymodel.cpp new/kitemmodels-5.7.0/src/krecursivefilterproxymodel.cpp --- old/kitemmodels-5.6.0/src/krecursivefilterproxymodel.cpp 2014-12-31 15:23:58.000000000 +0100 +++ new/kitemmodels-5.7.0/src/krecursivefilterproxymodel.cpp 2015-01-23 21:40:52.000000000 +0100 @@ -19,6 +19,8 @@ #include "krecursivefilterproxymodel.h" +#include <QMetaMethod> + // Maintainability note: // This class invokes some Q_PRIVATE_SLOTs in QSortFilterProxyModel which are // private API and could be renamed or removed at any time. @@ -43,14 +45,38 @@ qRegisterMetaType<QModelIndex>("QModelIndex"); } + inline QMetaMethod findMethod(const char* signature) const + { + Q_Q(const KRecursiveFilterProxyModel); + const int idx = q->metaObject()->indexOfMethod(signature); + Q_ASSERT(idx != -1); + return q->metaObject()->method(idx); + } + // Convenience methods for invoking the QSFPM Q_SLOTS. Those slots must be invoked with invokeMethod // because they are Q_PRIVATE_SLOTs - inline void invokeDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) + inline void invokeDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int>()) { Q_Q(KRecursiveFilterProxyModel); - bool success = QMetaObject::invokeMethod(q, "_q_sourceDataChanged", Qt::DirectConnection, - Q_ARG(QModelIndex, topLeft), - Q_ARG(QModelIndex, bottomRight)); + // runtime check to ensure a KF5 built against Qt < 5.5 keeps working when Qt is updated to 5.5 and above but KF5 is not rebuild + // TODO: remove once Qt 5.5 or above is required for frameworks + static const bool passRoles = QT_VERSION >= 0x050500 // no runtime check required when we built against Qt 5.5 or higher + || KRecursiveFilterProxyModel::staticMetaObject.indexOfMethod("_q_sourceDataChanged(QModelIndex,QModelIndex,QVector<int>)") != -1; + bool success = false; + if (passRoles) { + // required for Qt 5.5 and upwards, see commit f96baeb75fc in qtbase + static const QMetaMethod m = findMethod("_q_sourceDataChanged(QModelIndex,QModelIndex,QVector<int>)"); + success = m.invoke(q, Qt::DirectConnection, + Q_ARG(QModelIndex, topLeft), + Q_ARG(QModelIndex, bottomRight), + Q_ARG(QVector<int>, roles)); + } else { + // backwards compatibility + static const QMetaMethod m = findMethod("_q_sourceDataChanged(QModelIndex,QModelIndex)"); + success = m.invoke(q, Qt::DirectConnection, + Q_ARG(QModelIndex, topLeft), + Q_ARG(QModelIndex, bottomRight)); + } Q_UNUSED(success); Q_ASSERT(success); } @@ -58,7 +84,8 @@ inline void invokeRowsInserted(const QModelIndex &source_parent, int start, int end) { Q_Q(KRecursiveFilterProxyModel); - bool success = QMetaObject::invokeMethod(q, "_q_sourceRowsInserted", Qt::DirectConnection, + static const QMetaMethod m = findMethod("_q_sourceRowsInserted(QModelIndex,int,int)"); + bool success = m.invoke(q, Qt::DirectConnection, Q_ARG(QModelIndex, source_parent), Q_ARG(int, start), Q_ARG(int, end)); @@ -69,7 +96,8 @@ inline void invokeRowsAboutToBeInserted(const QModelIndex &source_parent, int start, int end) { Q_Q(KRecursiveFilterProxyModel); - bool success = QMetaObject::invokeMethod(q, "_q_sourceRowsAboutToBeInserted", Qt::DirectConnection, + static const QMetaMethod m = findMethod("_q_sourceRowsAboutToBeInserted(QModelIndex,int,int)"); + bool success = m.invoke(q, Qt::DirectConnection, Q_ARG(QModelIndex, source_parent), Q_ARG(int, start), Q_ARG(int, end)); @@ -80,7 +108,8 @@ inline void invokeRowsRemoved(const QModelIndex &source_parent, int start, int end) { Q_Q(KRecursiveFilterProxyModel); - bool success = QMetaObject::invokeMethod(q, "_q_sourceRowsRemoved", Qt::DirectConnection, + static const QMetaMethod m = findMethod("_q_sourceRowsRemoved(QModelIndex,int,int)"); + bool success = m.invoke(q, Qt::DirectConnection, Q_ARG(QModelIndex, source_parent), Q_ARG(int, start), Q_ARG(int, end)); @@ -91,7 +120,8 @@ inline void invokeRowsAboutToBeRemoved(const QModelIndex &source_parent, int start, int end) { Q_Q(KRecursiveFilterProxyModel); - bool success = QMetaObject::invokeMethod(q, "_q_sourceRowsAboutToBeRemoved", Qt::DirectConnection, + static const QMetaMethod m = findMethod("_q_sourceRowsAboutToBeRemoved(QModelIndex,int,int)"); + bool success = m.invoke(q, Qt::DirectConnection, Q_ARG(QModelIndex, source_parent), Q_ARG(int, start), Q_ARG(int, end)); @@ -99,7 +129,7 @@ Q_ASSERT(success); } - void sourceDataChanged(const QModelIndex &source_top_left, const QModelIndex &source_bottom_right); + void sourceDataChanged(const QModelIndex &source_top_left, const QModelIndex &source_bottom_right, const QVector<int> &roles); void sourceRowsAboutToBeInserted(const QModelIndex &source_parent, int start, int end); void sourceRowsInserted(const QModelIndex &source_parent, int start, int end); void sourceRowsAboutToBeRemoved(const QModelIndex &source_parent, int start, int end); @@ -118,14 +148,14 @@ bool completeRemove; }; -void KRecursiveFilterProxyModelPrivate::sourceDataChanged(const QModelIndex &source_top_left, const QModelIndex &source_bottom_right) +void KRecursiveFilterProxyModelPrivate::sourceDataChanged(const QModelIndex &source_top_left, const QModelIndex &source_bottom_right, const QVector<int> &roles) { Q_Q(KRecursiveFilterProxyModel); QModelIndex source_parent = source_top_left.parent(); if (!source_parent.isValid() || q->filterAcceptsRow(source_parent.row(), source_parent.parent())) { - invokeDataChanged(source_top_left, source_bottom_right); + invokeDataChanged(source_top_left, source_bottom_right, roles); return; } @@ -308,8 +338,8 @@ void KRecursiveFilterProxyModel::setSourceModel(QAbstractItemModel *model) { // Standard disconnect. - disconnect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(sourceDataChanged(QModelIndex,QModelIndex))); + disconnect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), + this, SLOT(sourceDataChanged(QModelIndex,QModelIndex,QVector<int>))); disconnect(model, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), this, SLOT(sourceRowsAboutToBeInserted(QModelIndex,int,int))); @@ -389,8 +419,8 @@ // to see if H matches the filter (which it now does as L now exists). // That is done in refreshAscendantMapping. - disconnect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(_q_sourceDataChanged(QModelIndex,QModelIndex))); + disconnect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), + this, SLOT(_q_sourceDataChanged(QModelIndex,QModelIndex,QVector<int>))); disconnect(model, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), this, SLOT(_q_sourceRowsAboutToBeInserted(QModelIndex,int,int))); @@ -405,8 +435,8 @@ this, SLOT(_q_sourceRowsRemoved(QModelIndex,int,int))); // Slots for manual invoking of QSortFilterProxyModel methods. - connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(sourceDataChanged(QModelIndex,QModelIndex))); + connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), + this, SLOT(sourceDataChanged(QModelIndex,QModelIndex,QVector<int>))); connect(model, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), this, SLOT(sourceRowsAboutToBeInserted(QModelIndex,int,int))); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitemmodels-5.6.0/src/krecursivefilterproxymodel.h new/kitemmodels-5.7.0/src/krecursivefilterproxymodel.h --- old/kitemmodels-5.6.0/src/krecursivefilterproxymodel.h 2014-12-31 15:23:58.000000000 +0100 +++ new/kitemmodels-5.7.0/src/krecursivefilterproxymodel.h 2015-01-23 21:40:52.000000000 +0100 @@ -121,7 +121,7 @@ //@cond PRIVATE Q_DECLARE_PRIVATE(KRecursiveFilterProxyModel) - Q_PRIVATE_SLOT(d_func(), void sourceDataChanged(const QModelIndex &source_top_left, const QModelIndex &source_bottom_right)) + Q_PRIVATE_SLOT(d_func(), void sourceDataChanged(const QModelIndex &source_top_left, const QModelIndex &source_bottom_right, const QVector<int> &roles)) Q_PRIVATE_SLOT(d_func(), void sourceRowsAboutToBeInserted(const QModelIndex &source_parent, int start, int end)) Q_PRIVATE_SLOT(d_func(), void sourceRowsInserted(const QModelIndex &source_parent, int start, int end)) Q_PRIVATE_SLOT(d_func(), void sourceRowsAboutToBeRemoved(const QModelIndex &source_parent, int start, int end)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kitemmodels-5.6.0/src/kselectionproxymodel.cpp new/kitemmodels-5.7.0/src/kselectionproxymodel.cpp --- old/kitemmodels-5.6.0/src/kselectionproxymodel.cpp 2014-12-31 15:23:58.000000000 +0100 +++ new/kitemmodels-5.7.0/src/kselectionproxymodel.cpp 2015-01-23 21:40:52.000000000 +0100 @@ -1344,7 +1344,6 @@ return m_mappedParents.leftToRight(sourceParent); } -#ifndef QT_NO_DEBUG static bool indexIsValid(bool startWithChildTrees, int row, const QList<QPersistentModelIndex> &rootIndexList, const SourceIndexProxyRowMapping &mappedFirstChildren) { if (!startWithChildTrees) { @@ -1365,7 +1364,6 @@ } return true; } -#endif QModelIndex KSelectionProxyModelPrivate::createTopLevelIndex(int row, int column) const { -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
