Hello community,
here is the log from the commit of package kdelibs4.1702 for openSUSE:12.2:Update checked in at 2013-06-05 11:28:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.2:Update/kdelibs4.1702 (Old)
and /work/SRC/openSUSE:12.2:Update/.kdelibs4.1702.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdelibs4.1702"
Changes:
--------
New Changes file:
--- /dev/null 2013-05-23 01:40:31.032032505 +0200
+++ /work/SRC/openSUSE:12.2:Update/.kdelibs4.1702.new/kdelibs4-apidocs.changes 2013-06-05 11:28:19.000000000 +0200
@@ -0,0 +1,1536 @@
+-------------------------------------------------------------------
+Fri May 10 17:24:04 UTC 2013 - hrvoje.senjan@gmail.com
+
+- Added patches from upstream:
+ * fix-kdirlisters-rootitem-not-being-updated-when-renaming-the-directory.diff
+ and fix-kdirlistertest-on-lxc-containers.diff (kde#294445)
+ * dont-show-passwords-contained-in-HTTP-URLs-in-error-messages.patch,
+ security fix, for not showing error messages in HTTP URL's (kde#319428)
+
+-------------------------------------------------------------------
+Thu Feb 7 18:56:22 UTC 2013 - wbauer@tmo.at
+
+- changed clever-menu.patch:
+ * added method KServiceGroup::addSortOrderEntry(), needed to fix
+ bnc#356553
+
+-------------------------------------------------------------------
+Fri Dec 7 11:11:43 UTC 2012 - hrvoje.senjan@gmail.com
+
+- Add fix-kdirlister-forgetting-to-watch.patch from upstream, to
+ fix directory watching/listing, kde#211472 and bnc#699079
+
+-------------------------------------------------------------------
+Tue Nov 27 09:12:09 UTC 2012 - lnt-sysadmin@lists.lrz.de
+
+- Added kio_revert_slow_filesystems.patch to fix bnc#776141.
+
+-------------------------------------------------------------------
+Mon Nov 12 21:24:43 UTC 2012 - ctrippe@opensuse.org
+
+- Fix various memory corruption vulnerabilities in konqueror (bnc#787520)
+ Added patches: commit_4f2eb356f1c23444fff2cfe0a7ae10efe303d6d8.diff,
+ commit_65464349951e0df9b5d80c2eb3cc7458d54923ae.diff
+
+-------------------------------------------------------------------
+Mon Jul 30 18:31:35 UTC 2012 - ctrippe@opensuse.org
+
+- Remove herqq support as this causes frequent crashes (bnc#768368)
+
+-------------------------------------------------------------------
+Mon Jul 30 16:51:37 UTC 2012 - dmueller@suse.com
+
+- update to 4.8.5
+ * see http://kde.org/announcements/changelogs/changelog4_8_4to4_8_5.php for details
+- remove upstreamed patches
+
+-------------------------------------------------------------------
+Mon Jul 2 08:00:13 UTC 2012 - mlin@suse.com
+
+- Apply to a upstream patch to mount vfat filesystem with flush
+ option. (bnc#746394, kde#273792)
+
+-------------------------------------------------------------------
+Tue Jun 26 09:56:49 UTC 2012 - idonmez@suse.com
+
+- Add patches to fix Soprano crashes
+
+-------------------------------------------------------------------
+Fri Jun 1 13:53:09 UTC 2012 - dmueller@suse.com
+
+- update to 4.8.4
+ * see http://kde.org/announcements/changelogs/changelog4_8_3to4_8_4.php for details
+
+-------------------------------------------------------------------
+Tue May 29 09:29:30 UTC 2012 - toddrme2178@gmail.com
+
+- Re-enable building with herqq/hupnp support. The licensing issues have all been resolved (see bnc#710616)
+ This allows browsing of upnp servers in kio as well as upnp playback in amarok.
+
+-------------------------------------------------------------------
+Thu May 24 18:26:54 UTC 2012 - coolo@suse.com
+
+- fix brandingversion
+
+-------------------------------------------------------------------
+Sun Apr 29 20:52:53 UTC 2012 - dmueller@suse.com
+
+- update to 4.8.3
+ * see http://kde.org/announcements/changelogs/changelog4_8_2to4_8_3.php for details
+
+-------------------------------------------------------------------
+Sun Apr 15 17:07:24 UTC 2012 - ctrippe@opensuse.org
+
+- Make XF86Calculator key work (bnc#726550, kde#257900)
+
+-------------------------------------------------------------------
+Sat Apr 14 08:20:02 UTC 2012 - dmueller@suse.com
+
+- fix build on older distributions
+
+-------------------------------------------------------------------
+Sun Apr 1 17:40:36 UTC 2012 - wstephenson@suse.com
+
+- Remove wrongly added %kde_runtime_requires macro
+
+-------------------------------------------------------------------
+Fri Mar 30 01:01:55 CEST 2012 - dmueller@suse.de
+
+- update to 4.8.2
+ * see http://kde.org/announcements/changelogs/changelog4_8_1to4_8_2.php for details
+
+-------------------------------------------------------------------
+Mon Mar 26 08:21:56 UTC 2012 - cornelis@solcon.nl
+
+- Do not build aspell backend, only enchant. This is less confusing, as there is no interface for choosing the backend. Aspell is still supported by the enchant backend, but default is hunspell.
+
+-------------------------------------------------------------------
+Wed Mar 14 09:47:52 UTC 2012 - kruber@zib.de
+
+- added fix for KMail2 crashes from
+ https://bugs.kde.org/show_bug.cgi?id=295474#c27
+
+-------------------------------------------------------------------
+Tue Mar 6 01:21:08 UTC 2012 - stefan.bruens@rwth-aachen.de
+
+- fix crash due to race in fstabstorageaccess constructor
+- cache fstabstorageaccess interface instance
+- solid udisks/upower backends:
+ * fix solid call to org.freedesktop.Properties.GetAll
+ * do not call Properties method on Root object
+
+-------------------------------------------------------------------
+Fri Mar 2 23:14:20 CET 2012 - dmueller@suse.de
+
+- update to 4.8.1
+ * see http://kde.org/announcements/changelogs/changelog4_8_0to4_8_1.php for details
+
+-------------------------------------------------------------------
+Mon Feb 27 11:52:01 UTC 2012 - saschpe@suse.de
+
+- Local service run of spec formatter broke it
+
+-------------------------------------------------------------------
+Mon Feb 27 11:04:20 UTC 2012 - saschpe@suse.de
+
+- The 'factory-auto' review script doesn't like macros in Name:
+
+-------------------------------------------------------------------
+Mon Jan 30 14:07:45 UTC 2012 - giecrilj@stegny.2a.pl
+
+- update documentation (bnc#743337)
+- move meinproc4_simple to doc
+- mark doc as GFDL
+- unmark config in /usr/share (config is in /etc)
+- reinstate checkXML.1 (why was it killed?)
+- remove kde4-doxygen.sh (build time only script)
+
+-------------------------------------------------------------------
+Mon Jan 30 10:31:47 UTC 2012 - toddrme2178@gmail.com
+
+- Fixed aspell detection
+
+-------------------------------------------------------------------
+Wed Jan 18 20:57:14 CET 2012 - dmueller@suse.de
+
+- update to 4.8.0
+ * first stable release of KDE 4.8 (only critical fixes over 4.7.98)
+ * see http://kde.org/announcements/4.8/ for details
+
+
+-------------------------------------------------------------------
+Tue Jan 10 16:32:19 CET 2012 - dmueller@suse.de
+
+- update to 4.7.98
+ * RC2+ milestone release of KDE 4.8
+ * see http://kde.org/announcements/4.8/ for details
+
+
+-------------------------------------------------------------------
+Fri Dec 2 01:58:27 CET 2011 - dmueller@suse.de
+
+- update to 4.7.4
+ * see http://kde.org/announcements/changelogs/changelog4_7_3to4_7_4.php for details
+
+-------------------------------------------------------------------
+Wed Nov 2 20:21:47 CET 2011 - dmueller@suse.de
+
+- update to 4.7.3
+ * see http://kde.org/announcements/changelogs/changelog4_7_2to4_7_3.php for details
+
+-------------------------------------------------------------------
+Fri Oct 21 08:44:30 UTC 2011 - wstephenson@suse.com
+
+- Remove PulseAudio 1.0 patch, superseded by PA 1.1
+
+-------------------------------------------------------------------
+Wed Oct 19 10:48:30 UTC 2011 - wstephenson@suse.com
+
+- Add 4.7 branch diff
+- Remove first time login fix patch, now upstream
+
+-------------------------------------------------------------------
+Mon Oct 17 11:20:33 UTC 2011 - coolo@suse.com
+
+- make branding requires for old distros backwards - will hopefully
+ fade out as time goes by
+
++++ 1339 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/openSUSE:12.2:Update/.kdelibs4.1702.new/kdelibs4-apidocs.changes
New Changes file:
kdelibs4.changes: same change
New:
----
4_7_BRANCH.diff
add-suse-translations.diff
baselibs.conf
clever-menu.diff
commit_4f2eb356f1c23444fff2cfe0a7ae10efe303d6d8.diff
commit_65464349951e0df9b5d80c2eb3cc7458d54923ae.diff
default-useragent.diff
desktop-translations.diff
dont-show-passwords-contained-in-HTTP-URLs-in-error-messages.patch
fix-kdirlister-forgetting-to-watch.patch
fix-kdirlisters-rootitem-not-being-updated-when-renaming-the-directory.diff
fix-kdirlistertest-on-lxc-containers.diff
fix_kcalc_shortcut.diff
fix_kdeclarative_install_location.diff
flash-player-non-oss.diff
hidden.desktop
hotplug-kde3.diff
ignore-inline-menu.diff
kde3-applications.diff
kde4rc
kdebug-areas-update.diff
kdelibs-4.8.5.tar.xz
kdelibs4-apidocs.changes
kdelibs4-apidocs.spec
kdelibs4.changes
kdelibs4.spec
kdesu-settings.diff
kio_revert_slow_filesystems.patch
kjs-mark-register-stack.diff
ksuseinstall.diff
plasma-libs.diff
pre_checkin.sh
windeco-color.diff
ycp.xml
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdelibs4-apidocs.spec ++++++
#
# spec file for package kdelibs4-apidocs
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: kdelibs4-apidocs
Version: 4.8.5
Release: 0
Summary: KDE 4 API documentation
License: LGPL-2.1+
Group: System/GUI/KDE
Url: http://www.kde.org
Source0: kdelibs-%{version}.tar.xz
Source1: baselibs.conf
Source2: hidden.desktop
Source3: ycp.xml
Source4: kde4rc
BuildRequires: doxygen
BuildRequires: fdupes
BuildRequires: graphviz
# seems to be required for png output for graphviz
BuildRequires: graphviz-gnome
BuildRequires: kde4-filesystem
BuildRequires: libqt4-devel-doc
BuildRequires: xz
Requires: kde4-filesystem
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
%description
This package includes the KDE 4 API documentation in HTML
format for easy browsing.
%prep
%setup -q -n kdelibs-%{version}
%build
export QTDOCDIR=`pkg-config --variable=docdir Qt`
doc/api/doxygen.sh .
%install
mkdir -p %{buildroot}%{_kde4_htmldir}/en
cp -prf kdelibs-%{version}-apidocs %{buildroot}%{_kde4_htmldir}/en/kdelibs4-apidocs
find %{buildroot} -name installdox | xargs rm -f
%fdupes %{buildroot}%{_kde4_htmldir}/en/kdelibs4-apidocs
%kde_post_install
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%{_kde4_htmldir}/en/kdelibs4-apidocs/
%changelog
++++++ kdelibs4.spec ++++++
++++ 625 lines (skipped)
++++++ 4_7_BRANCH.diff ++++++
--- a/BRANCH_STATUS
+++ b/BRANCH_STATUS
@@ -0,0 +1,2 @@
+current HEAD: 6606337b9bdf98111276d0fd3d803a644462cb28
+git diff v4.7.2..origin/KDE/4.7
diff --git a/includes/CMakeLists.txt b/includes/CMakeLists.txt
index a967a92..1c6907e 100644
++++++ add-suse-translations.diff ++++++
Index: kdecore/localization/klocale_kde.cpp
===================================================================
--- kdecore/localization/klocale_kde.cpp.orig
+++ kdecore/localization/klocale_kde.cpp
@@ -319,6 +319,9 @@ void KLocalePrivate::initMainCatalogs()
m_catalogNames.append(KCatalogName(QString::fromLatin1("kdeqt")));
m_catalogNames.append(KCatalogName(QString::fromLatin1("solid_qt")));
m_catalogNames.append(KCatalogName(QString::fromLatin1("kdecalendarsystems")));
+ m_catalogNames.append(KCatalogName(QString::fromLatin1("desktop_translations")));
+ m_catalogNames.append(KCatalogName(QString::fromLatin1("kde4-openSUSE")));
+ m_catalogNames.append(KCatalogName(QString::fromLatin1("kde4-SLE")));
m_numberOfSysCatalogs = m_catalogNames.size() - numberOfCatalogs;
updateCatalogs(); // evaluate this for all languages
++++++ baselibs.conf ++++++
libkdecore4
libkde4
libksuseinstall1
++++++ clever-menu.diff ++++++
Index: kdecore/services/kservice.cpp
===================================================================
--- kdecore/services/kservice.cpp.orig
+++ kdecore/services/kservice.cpp
@@ -739,6 +739,12 @@ QString KService::untranslatedGenericNam
return v.isValid() ? v.toString() : QString();
}
+
+bool KService::SuSEunimportant() const {
+ QVariant v = property(QString::fromLatin1("X-SuSE-Unimportant"), QVariant::Bool);
+ return v.isValid() && v.toBool();
+}
+
QString KService::parentApp() const {
Q_D(const KService);
QMap::ConstIterator it = d->m_mapProps.find(QLatin1String("X-KDE-ParentApp"));
Index: kdecore/services/kservicegroup.cpp
===================================================================
--- kdecore/services/kservicegroup.cpp.orig
+++ kdecore/services/kservicegroup.cpp
@@ -29,7 +29,7 @@
#include
#include
#include
-
+#include <QDir>
KServiceGroup::KServiceGroup( const QString & name )
: KSycocaEntry(*new KServiceGroupPrivate(name))
@@ -61,6 +61,11 @@ void KServiceGroupPrivate::load(const QS
m_strComment = config.readEntry( "Comment" );
deleted = config.readEntry("Hidden", false );
m_bNoDisplay = desktopFile.noDisplay();
+ if (directoryEntryPath.startsWith(QDir::homePath()))
+ m_bShortMenu = false;
+ else
+ m_bShortMenu = config.readEntry( QString::fromLatin1("X-SuSE-AutoShortMenu"), true );
+ m_bGeneralDescription = config.readEntry( QString::fromLatin1("X-SuSE-GeneralDescription"), false );
m_strBaseGroupName = config.readEntry( "X-KDE-BaseGroup" );
suppressGenericNames = config.readEntry( "X-KDE-SuppressGenericNames", QStringList() );
// d->sortOrder = config.readEntry("SortOrder", QStringList());
@@ -124,6 +129,10 @@ int KServiceGroupPrivate::childCount() c
{
if (m_childCount == -1)
{
+ KConfig cfg(QString::fromLatin1("kdeglobals"));
+ KConfigGroup global = cfg.group(QString::fromLatin1("KDE"));
+ bool showUnimportant = global.readEntry(QString::fromLatin1("showUnimportant"), false);
+
m_childCount = 0;
for( KServiceGroup::List::ConstIterator it = m_serviceList.begin();
@@ -134,7 +143,8 @@ int KServiceGroupPrivate::childCount() c
{
KService::Ptr service = KService::Ptr::staticCast( p );
if (!service->noDisplay())
- m_childCount++;
+ if ( showUnimportant || !service->SuSEunimportant() )
+ m_childCount++;
}
else if (p->isType(KST_KServiceGroup))
{
@@ -219,6 +229,18 @@ QStringList KServiceGroup::suppressGener
return d->suppressGenericNames;
}
+bool KServiceGroup::SuSEgeneralDescription() const
+{
+ Q_D(const KServiceGroup);
+ return d->m_bGeneralDescription;
+}
+
+bool KServiceGroup::SuSEshortMenu() const
+{
+ Q_D(const KServiceGroup);
+ return d->m_bShortMenu;
+}
+
void KServiceGroupPrivate::load( QDataStream& s )
{
QStringList groupList;
@@ -227,16 +249,21 @@ void KServiceGroupPrivate::load( QDataSt
qint8 inlineHeader;
qint8 _inlineAlias;
qint8 _allowInline;
+ qint8 _shortMenu;
+ qint8 _generalDescription;
s >> m_strCaption >> m_strIcon >>
m_strComment >> groupList >> m_strBaseGroupName >> m_childCount >>
noDisplay >> suppressGenericNames >> directoryEntryPath >>
- sortOrder >> _showEmptyMenu >> inlineHeader >> _inlineAlias >> _allowInline;
+ sortOrder >> _showEmptyMenu >> inlineHeader >> _inlineAlias >> _allowInline >>
+ _shortMenu >> _generalDescription;
m_bNoDisplay = (noDisplay != 0);
m_bShowEmptyMenu = ( _showEmptyMenu != 0 );
m_bShowInlineHeader = ( inlineHeader != 0 );
m_bInlineAlias = ( _inlineAlias != 0 );
m_bAllowInline = ( _allowInline != 0 );
+ m_bShortMenu = (_shortMenu != 0);
+ m_bGeneralDescription = (_generalDescription != 0);
if (m_bDeep)
{
@@ -296,10 +323,12 @@ void KServiceGroupPrivate::save( QDataSt
qint8 inlineHeader = m_bShowInlineHeader ? 1 : 0;
qint8 _inlineAlias = m_bInlineAlias ? 1 : 0;
qint8 _allowInline = m_bAllowInline ? 1 : 0;
+ qint8 _shortMenu = m_bShortMenu ? 1 : 0;
s << m_strCaption << m_strIcon <<
m_strComment << groupList << m_strBaseGroupName << m_childCount <<
noDisplay << suppressGenericNames << directoryEntryPath <<
- sortOrder <<_showEmptyMenu <KServiceGroup::Ptr KServiceGroup::groupEntries(EntriesOptions options)
@@ -359,6 +388,21 @@ KServiceGroup::entries(bool sort, bool e
return d->entries(this, sort, excludeNoDisplay, allowSeparators, sortByGenericName);
}
+void KServiceGroup::addSortOrderEntry( const char *entry )
+{
+ Q_D(KServiceGroup);
+ const QString s = QString::fromLatin1(entry);
+ if (!d->sortOrder.contains(s))
+ d->sortOrder << s;
+}
+
+KServiceGroup::List
+KServiceGroup::SuSEsortEntries( KSortableListKServiceGroup::SPtr,QByteArray slist, KSortableListKServiceGroup::SPtr,QByteArray glist, bool excludeNoDisplay, bool allowSeparators )
+{
+ Q_D(KServiceGroup);
+ return d->SuSEsortEntries( this, slist, glist, excludeNoDisplay, allowSeparators );
+}
+
static void addItem(KServiceGroup::List &sorted, const KSycocaEntry::Ptr &p, bool &addSeparator)
{
if (addSeparator && !sorted.isEmpty())
@@ -370,6 +414,12 @@ static void addItem(KServiceGroup::List
KServiceGroup::List
KServiceGroupPrivate::entries(KServiceGroup *group, bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName)
{
+ return SuSEentries(group, sort, excludeNoDisplay, allowSeparators, sortByGenericName);
+}
+
+KServiceGroup::List
+KServiceGroupPrivate::SuSEentries(KServiceGroup *group, bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName, bool excludeSuSEunimportant)
+{
KServiceGroup::Ptr grp;
// If the entries haven't been loaded yet, we have to reload ourselves
@@ -395,11 +445,20 @@ KServiceGroupPrivate::entries(KServiceGr
KSortableListKServiceGroup::SPtr,QByteArray glist;
Q_FOREACH (KSycocaEntry::Ptr p, group->d_func()->m_serviceList)
{
+ if ( !p->isType(KST_KServiceGroup) && !p->isType(KST_KService))
+ continue;
+
bool noDisplay = p->isType(KST_KServiceGroup) ?
static_cast(p.data())->noDisplay() :
static_cast(p.data())->noDisplay();
if (excludeNoDisplay && noDisplay)
continue;
+
+ bool SuSEunimportant = p->isType(KST_KService) &&
+ static_cast(p.data())->SuSEunimportant();
+ if (excludeSuSEunimportant && SuSEunimportant)
+ continue;
+
// Choose the right list
KSortableListKServiceGroup::SPtr,QByteArray & list = p->isType(KST_KServiceGroup) ? glist : slist;
QString name;
@@ -435,6 +494,12 @@ KServiceGroupPrivate::entries(KServiceGr
}
list.insert(key,KServiceGroup::SPtr(p));
}
+ return SuSEsortEntries( group, slist, glist, excludeNoDisplay, allowSeparators );
+}
+
+KServiceGroup::List
+KServiceGroupPrivate::SuSEsortEntries( KServiceGroup *group, KSortableListKServiceGroup::SPtr,QByteArray slist, KSortableListKServiceGroup::SPtr,QByteArray glist, bool excludeNoDisplay, bool allowSeparators )
+{
// Now sort
slist.sort();
glist.sort();
@@ -475,6 +540,8 @@ KServiceGroupPrivate::entries(KServiceGr
// TODO: This prevents duplicates
for(KSortableListKServiceGroup::SPtr,QByteArray::Iterator it2 = slist.begin(); it2 != slist.end(); ++it2)
{
+ if (!(*it2).value()->isType(KST_KService))
+ continue;
const KService::Ptr service = KService::Ptr::staticCast( (*it2).value() );
if (service->menuId() == item)
{
Index: kdecore/services/kservicegroup.h
===================================================================
--- kdecore/services/kservicegroup.h.orig
+++ kdecore/services/kservicegroup.h
@@ -22,6 +22,7 @@
#include
#include
#include
+#include
class KBuildServiceGroupFactory;
@@ -174,6 +175,12 @@ public:
void setLayoutInfo(const QStringList &layout);
/**
+ * SuSE special, not part of KDE API
+ */
+ bool SuSEshortMenu() const;
+ bool SuSEgeneralDescription() const;
+
+ /**
* @internal
* Returns information related to the layout of services in this group.
*/
@@ -200,6 +207,13 @@ public:
List entries(bool sorted = false);
/**
+ * UNOFFICIAL SuSE special
+ */
+ void addSortOrderEntry( const char *entry );
+ KServiceGroup::List SuSEsortEntries( KSortableListKServiceGroup::SPtr,QByteArray slist, KSortableListKServiceGroup::SPtr,QByteArray glist, bool excludeNoDisplay, bool allowSeparators );
+
+
+ /**
* options for groupEntries and serviceEntries
*/
enum EntriesOption
Index: kdecore/services/kservicegroup_p.h
===================================================================
--- kdecore/services/kservicegroup_p.h.orig
+++ kdecore/services/kservicegroup_p.h
@@ -31,7 +31,8 @@ public:
KServiceGroupPrivate(const QString &path)
: KSycocaEntryPrivate(path),
- m_bNoDisplay(false), m_bShowEmptyMenu(false), m_bShowInlineHeader(false), m_bInlineAlias(false),
+ m_bNoDisplay(false), m_bShortMenu(false), m_bGeneralDescription(false),
+ m_bShowEmptyMenu(false), m_bShowInlineHeader(false), m_bInlineAlias(false),
m_bAllowInline(false), m_inlineValue(4), m_bDeep(false), m_childCount(-1)
{
}
@@ -58,6 +59,13 @@ public:
KServiceGroup::List
entries(KServiceGroup *group, bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName);
+
+ /**
+ * UNOFFICIAL SuSE special
+ */
+ KServiceGroup::List SuSEentries(KServiceGroup *group, bool sort, bool excludeNoDisplay, bool allowSeparators, bool sortByGenericName, bool excludeSuSEunimportant = true);
+ KServiceGroup::List SuSEsortEntries( KServiceGroup *group, KSortableListKServiceGroup::SPtr,QByteArray slist, KSortableListKServiceGroup::SPtr,QByteArray glist, bool excludeNoDisplay, bool allowSeparators );
+
/**
* This function parse attributes into menu
*/
@@ -65,6 +73,8 @@ public:
bool m_bNoDisplay : 1;
+ bool m_bShortMenu : 1;
+ bool m_bGeneralDescription : 1;
bool m_bShowEmptyMenu : 1;
bool m_bShowInlineHeader : 1;
bool m_bInlineAlias : 1;
Index: kdecore/services/kservice.h
===================================================================
--- kdecore/services/kservice.h.orig
+++ kdecore/services/kservice.h
@@ -350,6 +350,12 @@ public:
bool noDisplay() const;
/**
+ * check if the application entry is important
+ * SuSE special, not part of KDE API
+ */
+ bool SuSEunimportant() const;
+
+ /**
* Whether the service should be shown in KDE at all
* (including in context menus).
* @return true if the service should be shown.
++++++ commit_4f2eb356f1c23444fff2cfe0a7ae10efe303d6d8.diff ++++++
commit 4f2eb356f1c23444fff2cfe0a7ae10efe303d6d8
Author: David Faure
Date: Wed Oct 24 20:04:31 2012 +0200
Fix crash when a redirect happens in an iframe while the context menu is shown
diff --git a/khtml/rendering/render_replaced.cpp b/khtml/rendering/render_replaced.cpp
index 195dcba..6bc5caa 100644
--- a/khtml/rendering/render_replaced.cpp
+++ b/khtml/rendering/render_replaced.cpp
@@ -1030,7 +1030,7 @@ bool RenderWidget::handleEvent(const DOM::EventImpl& ev)
p.setY(qMin(qMax(0,p.y()),m_widget->height()));
}
- QWidget* target = 0;
+ QPointer<QWidget> target;
target = m_widget->childAt(p);
if (target) {
@@ -1103,16 +1103,18 @@ bool RenderWidget::handleEvent(const DOM::EventImpl& ev)
}
}
- QEvent *e = isMouseWheel ?
+ QScopedPointer<QEvent> e(isMouseWheel ?
static_cast(new QWheelEvent(p, -me.detail()*40, buttons, state, orient)) :
- static_cast(new QMouseEvent(type, p, button, buttons, state));
+ static_cast(new QMouseEvent(type, p, button, buttons, state)));
- ret = bubblingSend(target, e, m_widget);
+ ret = bubblingSend(target, e.data(), m_widget);
+ if (!target)
+ break;
if (needContextMenuEvent) {
QContextMenuEvent cme(QContextMenuEvent::Mouse, p);
- static_cast(target)->sendEvent(&cme);
+ static_cast(target.data())->sendEvent(&cme);
} else if (type == QEvent::MouseMove && target->testAttribute(Qt::WA_Hover)) {
QHoverEvent he( QEvent::HoverMove, p, p );
QApplication::sendEvent(target, &he);
@@ -1120,7 +1122,6 @@ bool RenderWidget::handleEvent(const DOM::EventImpl& ev)
if (ev.id() == EventImpl::MOUSEUP_EVENT) {
view()->setMouseEventsTarget( 0 );
}
- delete e;
break;
}
case EventImpl::KEYDOWN_EVENT:
++++++ commit_65464349951e0df9b5d80c2eb3cc7458d54923ae.diff ++++++
commit 65464349951e0df9b5d80c2eb3cc7458d54923ae
Author: David Faure
Date: Fri Oct 19 11:33:41 2012 +0200
Fix crash when trying to reuse a frame with a null part.
BUG: 271528
FIXED-IN: 4.9.3
diff --git a/khtml/khtml_part.cpp b/khtml/khtml_part.cpp
index ad00ea5..6165710 100644
--- a/khtml/khtml_part.cpp
+++ b/khtml/khtml_part.cpp
@@ -5242,8 +5242,12 @@ KHTMLPart* KHTMLPartPrivate::top()
bool KHTMLPartPrivate::canNavigate(KParts::ReadOnlyPart* bCand)
{
+ if (!bCand) // No part here (e.g. invalid url), reuse that frame
+ return true;
+
KHTMLPart* b = qobject_cast(bCand);
- assert(b);
+ if (!b) // Another kind of part? Not sure what to do...
+ return false;
// HTML5 gives conditions for this (a) being able to navigate b
++++++ default-useragent.diff ++++++
--- kio/kio/kprotocolmanager.cpp
+++ kio/kio/kprotocolmanager.cpp
@@ -645,6 +645,7 @@
d->useragent += QString::number(KDE::versionMajor());
d->useragent += QL1C('.');
d->useragent += QString::number(KDE::versionMinor());
+ d->useragent += QL1S(" SUSE");
}
else
{
++++++ desktop-translations.diff ++++++
Subject: Read .desktop file translations from .mo files if not present
From: Lubos Lunak
Fate: #300461
Patch-upstream: no
Relates: kdelibs3/desktop-translations.diff
Index: kdecore/services/kservicegroup.cpp
===================================================================
--- kdecore/services/kservicegroup.cpp.orig
+++ kdecore/services/kservicegroup.cpp
@@ -56,9 +56,9 @@ void KServiceGroupPrivate::load(const QS
const KConfigGroup config = desktopFile.desktopGroup();
- m_strCaption = config.readEntry( "Name" );
- m_strIcon = config.readEntry( "Icon" );
- m_strComment = config.readEntry( "Comment" );
+ m_strCaption = desktopFile.readName();
+ m_strIcon = desktopFile.readIcon();
+ m_strComment = desktopFile.readComment();
deleted = config.readEntry("Hidden", false );
m_bNoDisplay = desktopFile.noDisplay();
if (directoryEntryPath.startsWith(QDir::homePath()))
Index: kdecore/config/kconfigdata.h
===================================================================
--- kdecore/config/kconfigdata.h.orig
+++ kdecore/config/kconfigdata.h
@@ -175,6 +175,19 @@ class KEntryMap : public QMapdesktopGroup.hasTranslatedKey(key))
+ return d->desktopGroup.readEntry(key);
+
+ if (d->desktopGroup.hasKey(key)) {
+ QString value = d->desktopGroup.readEntryUntranslated(key);
+ QString fName = fileName();
+ fName = fName.mid(fName.lastIndexOf(QLatin1Char('/'))+1);
+ QString po_lookup_key = QString::fromLatin1(key) + QString::fromLatin1("(") + fName + QString::fromLatin1("): ") + value;
+ QString po_value;
+ KGlobal::locale()->translateRaw(po_lookup_key.toUtf8().data(), NULL, &po_value);
+
+ if (po_value == po_lookup_key)
+ return value;
+
+ return po_value;
+ }
+
+ return QString::null;
+}
+
QString KDesktopFile::readType() const
{
Q_D(const KDesktopFile);
@@ -188,20 +213,17 @@ QString KDesktopFile::readIcon() const
QString KDesktopFile::readName() const
{
- Q_D(const KDesktopFile);
- return d->desktopGroup.readEntry("Name", QString());
+ return translatedEntry("Name");
}
QString KDesktopFile::readComment() const
{
- Q_D(const KDesktopFile);
- return d->desktopGroup.readEntry("Comment", QString());
+ return translatedEntry("Comment");
}
QString KDesktopFile::readGenericName() const
{
- Q_D(const KDesktopFile);
- return d->desktopGroup.readEntry("GenericName", QString());
+ return translatedEntry("GenericName");
}
QString KDesktopFile::readPath() const
Index: kdecore/config/kdesktopfile.h
===================================================================
--- kdecore/config/kdesktopfile.h.orig
+++ kdecore/config/kdesktopfile.h
@@ -250,6 +250,8 @@ protected:
// virtual void virtual_hook( int id, void* data );
private:
+ QString translatedEntry(const char*) const;
+
Q_DISABLE_COPY(KDesktopFile)
Q_DECLARE_PRIVATE(KDesktopFile)
Index: kdecore/config/kconfiggroup.h
===================================================================
--- kdecore/config/kconfiggroup.h.orig
+++ kdecore/config/kconfiggroup.h
@@ -621,6 +621,11 @@ public:
*/
QMap entryMap() const;
+ /**
+ * @internal
+ */
+ bool hasTranslatedKey( const char *pKey ) const;
+
protected:
bool hasGroupImpl(const QByteArray &group) const;
KConfigGroup groupImpl(const QByteArray &b);
Index: kdecore/config/kconfig.cpp
===================================================================
--- kdecore/config/kconfig.cpp.orig
+++ kdecore/config/kconfig.cpp
@@ -881,6 +881,17 @@ QString KConfigPrivate::lookupData(const
return entryMap.getEntry(group, key, QString(), flags, expand);
}
+QByteArray KConfigPrivate::lookupExactData(const QByteArray& group, const char* key,
+ KEntryMap::SearchFlags flags) const
+{
+ if (bReadDefaults)
+ flags |= KEntryMap::SearchDefaults;
+ const KEntryMapConstIterator it = entryMap.findExactEntry(group, key, flags);
+ if (it == entryMap.constEnd())
+ return QByteArray();
+ return it->mValue;
+}
+
void KConfig::virtual_hook(int /*id*/, void* /*data*/)
{
/* nothing */
Index: kdecore/config/kconfig_p.h
===================================================================
--- kdecore/config/kconfig_p.h.orig
+++ kdecore/config/kconfig_p.h
@@ -53,6 +53,7 @@ public:
QString lookupData(const QByteArray& group, const char* key, KEntryMap::SearchFlags flags,
bool* expand) const;
QByteArray lookupData(const QByteArray& group, const char* key, KEntryMap::SearchFlags flags) const;
+ QByteArray lookupExactData(const QByteArray& group, const char* key, KEntryMap::SearchFlags flags) const;
void putData(const QByteArray& group, const char* key, const QByteArray& value,
KConfigBase::WriteConfigFlags flags, bool expand=false);
Index: kdecore/config/kconfiggroup.cpp
===================================================================
--- kdecore/config/kconfiggroup.cpp.orig
+++ kdecore/config/kconfiggroup.cpp
@@ -1159,6 +1159,16 @@ bool KConfigGroup::hasKey(const char *ke
return !config()->d_func()->lookupData(d->fullName(), key, flags).isNull();
}
+bool KConfigGroup::hasTranslatedKey(const char* key) const
+{
+ Q_ASSERT_X(isValid(), "KConfigGroup::hasTranslatedKey", "accessing an invalid group");
+
+ KEntryMap::SearchFlags flags = KEntryMap::SearchLocalized;
+ if ( config()->readDefaults() )
+ flags |= KEntryMap::SearchDefaults;
+ return !config()->d_func()->lookupExactData(d->fullName(), key, flags).isNull();
+}
+
bool KConfigGroup::hasKey(const QString &key) const
{
return hasKey(key.toUtf8().constData());
++++++ dont-show-passwords-contained-in-HTTP-URLs-in-error-messages.patch ++++++
commit 65d736dab592bced4410ccfa4699de89f78c96ca
Author: Grégory Oestreicher
Date: Wed May 8 23:16:00 2013 +0200
Don't show passwords contained in HTTP URLs in error messages
BUG: 319428
diff --git a/kioslave/http/http.cpp b/kioslave/http/http.cpp
index 2d139a9..129fc7b 100644
--- a/kioslave/http/http.cpp
+++ b/kioslave/http/http.cpp
@@ -3056,7 +3056,7 @@ try_again:
; // Ignore error
} else {
if (!sendErrorPageNotification()) {
- error(ERR_INTERNAL_SERVER, m_request.url.url());
+ error(ERR_INTERNAL_SERVER, m_request.url.prettyUrl());
return false;
}
}
@@ -3072,9 +3072,9 @@ try_again:
// Tell that we will only get an error page here.
if (!sendErrorPageNotification()) {
if (m_request.responseCode == 403)
- error(ERR_ACCESS_DENIED, m_request.url.url());
+ error(ERR_ACCESS_DENIED, m_request.url.prettyUrl());
else
- error(ERR_DOES_NOT_EXIST, m_request.url.url());
+ error(ERR_DOES_NOT_EXIST, m_request.url.prettyUrl());
return false;
}
} else if (m_request.responseCode >= 301 && m_request.responseCode<= 303) {
++++++ fix-kdirlister-forgetting-to-watch.patch ++++++
From: David Faure
Date: Thu, 29 Nov 2012 16:49:34 +0000
Subject: Fix KDirLister forgetting to watch a directory after listing it from the cache.
X-Git-Tag: v4.9.4
X-Git-Url: http://quickgit.kde.org/?p=kdelibs.git&a=commitdiff&h=75da8e8129f6bc152a781ff47fb8e741c65b584e
---
Fix KDirLister forgetting to watch a directory after listing it from the cache.
Many many thanks to Frank Reininghaus for the unittest that finally made
this issue reproduceable, based on feedback from users in the bug report.
The issue: whether to watch a directory with KDirWatch is refcounted.
Each lister showing the dir counts as one, the cache itself can add one,
and does so initially. If a dir is modified while it's only in the cache,
we mark it as dirty, stop watching, and we'll simply update the directory
when showing it to the user again later. At that point we need to start
watching it again. The old code would do decr+incr, I "optimized" this in
7b9cafaaf6af (oct 2010) to fix the bug that (with an initial refcount of 1),
decr would lead to 0 temporarily.
However if the item wasn't watched anymore (initial refcount of 0), the decr
would do nothing (if (c<0) c=0), and the incr would start the watching.
With 7b9cafaaf6af this all went away (I thought decr+incr==noop), so no watching.
The proper solution is obviously incr+decr_if_not_done_before_already
(when the cache stops watching the dir because a change happened).
BUG: 211472
FIXED-IN: 4.9.4
---
--- a/kio/kio/kdirlister.cpp
+++ b/kio/kio/kdirlister.cpp
@@ -172,18 +172,22 @@
dirData.listersCurrentlyListing.append(lister);
- DirItem *itemFromCache;
+ DirItem *itemFromCache = 0;
if (itemU || (!_reload && (itemFromCache = itemsCached.take(urlStr)) ) ) {
if (itemU) {
kDebug(7004) << "Entry already in use:" << _url;
// if _reload is set, then we'll emit cached items and then updateDirectory.
- if (lister->d->autoUpdate)
- itemU->incAutoUpdate();
} else {
kDebug(7004) << "Entry in cache:" << _url;
- // In this code path, the itemsFromCache->decAutoUpdate + itemU->incAutoUpdate is optimized out
itemsInUse.insert(urlStr, itemFromCache);
itemU = itemFromCache;
+ }
+ if (lister->d->autoUpdate) {
+ itemU->incAutoUpdate();
+ }
+ if (itemFromCache && itemFromCache->watchedWhileInCache) {
+ itemFromCache->watchedWhileInCache = false;;
+ itemFromCache->decAutoUpdate();
}
emit lister->started(_url);
@@ -416,7 +420,7 @@
Q_FOREACH(const KUrl& url, urls) {
stopListingUrl(lister, url, silent);
}
-
+
#if 0 // test code
QHash::iterator dirit = directoryData.begin();
const QHash::iterator dirend = directoryData.end();
@@ -618,9 +622,10 @@
kDebug(7004) << "Not adding a watch on " << item->url << " because it " <<
( isManuallyMounted ? "is manually mounted" : "contains a manually mounted subdir" );
item->complete = false; // set to "dirty"
+ } else {
+ item->incAutoUpdate(); // keep watch
+ item->watchedWhileInCache = true;
}
- else
- item->incAutoUpdate(); // keep watch
}
else
{
@@ -746,7 +751,10 @@
DirItem *item = itemsCached[_dir];
if ( item && item->complete )
{
+ // Stop watching items once they are only in the cache and not used anymore.
+ // We'll trigger an update when listing that dir again later.
item->complete = false;
+ item->watchedWhileInCache = false;
item->decAutoUpdate();
// Hmm, this debug output might include login/password from the _dir URL.
//kDebug(7004) << "directory " << _dir << " not in use, marked dirty.";
--- a/kio/kio/kdirlister_p.h
+++ b/kio/kio/kdirlister_p.h
@@ -319,6 +319,7 @@
{
autoUpdates = 0;
complete = false;
+ watchedWhileInCache = false;
}
~DirItem()
@@ -391,6 +392,9 @@
// this directory is up-to-date
bool complete;
+
+ // the directory is watched while being in the cache (useful for proper incAutoUpdate/decAutoUpdate count)
+ bool watchedWhileInCache;
// the complete url of this directory
KUrl url;
--- a/kio/tests/kdirlistertest.cpp
+++ b/kio/tests/kdirlistertest.cpp
@@ -871,6 +871,68 @@
disconnect(&m_dirLister, 0, this, 0);
}
+// A bug in the decAutoUpdate/incAutoUpdate logic made KDirLister stop watching a directory for changes,
+// and never watch it again when opening it from the cache.
+void KDirListerTest::testBug211472()
+{
+ m_items.clear();
+
+ KTempDir newDir;
+ const QString path = newDir.name() + "newsubdir/";
+ QDir().mkdir(path);
+ MyDirLister dirLister;
+ connect(&dirLister, SIGNAL(newItems(KFileItemList)), this, SLOT(slotNewItems(KFileItemList)));
+
+ dirLister.openUrl(KUrl(path));
+ QVERIFY(QTest::kWaitForSignal(&dirLister, SIGNAL(completed()), 1000));
+ QVERIFY(dirLister.isFinished());
+ QVERIFY(m_items.isEmpty());
+
+ if (true) {
+ // This block is required to trigger bug 211472.
+
+ // Go 'up' to the parent of 'newsubdir'.
+ dirLister.openUrl(KUrl(newDir.name()));
+ QVERIFY(QTest::kWaitForSignal(&dirLister, SIGNAL(completed()), 1000));
+ QVERIFY(dirLister.isFinished());
+ QVERIFY(!m_items.isEmpty());
+ m_items.clear();
+
+ // Create a file in 'newsubdir' while we are listing its parent dir.
+ createTestFile(path + "newFile-1");
+ // At this point, newsubdir is not used, so it's moved to the cache.
+ // This happens in checkUpdate, called when receiving a notification for the cached dir,
+ // this is why this unittest needs to create a test file in the subdir.
+ QTest::qWait(1000);
+ QVERIFY(m_items.isEmpty());
+
+ // Return to 'newsubdir'. It will be emitted from the cache, then an update will happen.
+ dirLister.openUrl(KUrl(path));
+ QVERIFY(QTest::kWaitForSignal(&dirLister, SIGNAL(completed()), 1000));
+ QVERIFY(QTest::kWaitForSignal(&dirLister, SIGNAL(completed()), 1000));
+ QVERIFY(dirLister.isFinished());
+ QCOMPARE(m_items.count(), 1);
+ m_items.clear();
+ }
+
+ // Now try to create a second file in 'newsubdir' and verify that the
+ // dir lister notices it.
+ QTest::qWait(1000); // We need a 1s timestamp difference on the dir, otherwise FAM won't notice anything.
+
+ createTestFile(path + "newFile-2");
+
+ int numTries = 0;
+ // Give time for KDirWatch to notify us
+ while (m_items.isEmpty()) {
+ QVERIFY(++numTries < 10);
+ QTest::qWait(200);
+ }
+ QCOMPARE(m_items.count(), 1);
+
+ newDir.unlink();
+ QVERIFY(QTest::kWaitForSignal(&dirLister, SIGNAL(clear()), 1000));
+}
+
void KDirListerTest::testRedirection()
{
m_items.clear();
@@ -964,8 +1026,14 @@
enterLoop();
QCOMPARE(m_dirLister.spyClear.count(), 1);
QCOMPARE(m_dirLister.spyClearKUrl.count(), 0);
- QCOMPARE(m_dirLister.spyItemsDeleted.count(), 1);
- QCOMPARE(m_dirLister.spyItemsDeleted[0][0].value<KFileItemList>().count(), 1);
+ KUrl::List deletedUrls;
+ for (int i = 0; i < m_dirLister.spyItemsDeleted.count(); ++i)
+ deletedUrls += m_dirLister.spyItemsDeleted[i][0].value<KFileItemList>().urlList();
+ //kDebug() << deletedUrls;
+ KUrl currentDirUrl = QUrl::fromLocalFile(path());
+ currentDirUrl.adjustPath(KUrl::RemoveTrailingSlash);
+ // Sometimes I get ("current/subdir", "current") here, but that seems ok.
+ QVERIFY(deletedUrls.contains(currentDirUrl));
}
int KDirListerTest::fileCount() const
--- a/kio/tests/kdirlistertest.h
+++ b/kio/tests/kdirlistertest.h
@@ -106,6 +106,7 @@
void testOpenUrlTwice();
void testOpenUrlTwiceWithKeep();
void testOpenAndStop();
+ void testBug211472();
void testRedirection();
void testDeleteCurrentDir(); // must be last!
++++++ fix-kdirlisters-rootitem-not-being-updated-when-renaming-the-directory.diff ++++++
commit 8141788c819fa0bcfba7cfaca474095ca819a130
Author: David Faure
Date: Fri Dec 21 21:06:14 2012 +0100
Fix KDirLister's rootItem not being updated when renaming the directory.
The root item kept having the old URL.
Thanks to Emmanuel for the bug investigation, and to Frank for the unittest!
BUG: 294445
FIXED-IN: 4.9.5
diff --git a/kio/kio/kdirlister.cpp b/kio/kio/kdirlister.cpp
index d7de137..ea778e9 100644
--- a/kio/kio/kdirlister.cpp
+++ b/kio/kio/kdirlister.cpp
@@ -2709,8 +2709,11 @@ void KDirLister::setDelayedMimeTypes( bool delayedMimeTypes )
void KDirLister::Private::redirect(const KUrl& oldUrl, const KUrl& newUrl, bool keepItems)
{
if ( url.equals( oldUrl, KUrl::CompareWithoutTrailingSlash ) ) {
- if (!keepItems)
+ if (!keepItems) {
rootFileItem = KFileItem();
+ } else {
+ rootFileItem.setUrl(newUrl);
+ }
url = newUrl;
}
diff --git a/kio/tests/kdirlistertest.cpp b/kio/tests/kdirlistertest.cpp
index b574816..1231fb9 100644
--- a/kio/tests/kdirlistertest.cpp
+++ b/kio/tests/kdirlistertest.cpp
@@ -933,6 +933,33 @@ void KDirListerTest::testBug211472()
QVERIFY(QTest::kWaitForSignal(&dirLister, SIGNAL(clear()), 1000));
}
+void KDirListerTest::testRenameCurrentDir() // #294445
+{
+ m_items.clear();
+
+ const QString path = m_tempDir.name() + "newsubdir-1";
+ QVERIFY(QDir().mkdir(path));
+ MyDirLister secondDirLister;
+ connect(&secondDirLister, SIGNAL(newItems(KFileItemList)), this, SLOT(slotNewItems(KFileItemList)));
+
+ secondDirLister.openUrl(KUrl(path));
+ QVERIFY(QTest::kWaitForSignal(&secondDirLister, SIGNAL(completed()), 1000));
+ QVERIFY(secondDirLister.isFinished());
+ QVERIFY(m_items.empty());
+ QCOMPARE(secondDirLister.rootItem().url().toLocalFile(), path);
+
+ const QString newPath = m_tempDir.name() + "newsubdir-2";
+ QVERIFY(QDir().rename(path, newPath));
+ org::kde::KDirNotify::emitFileRenamed(KUrl(path).url(), KUrl(newPath).url());
+ QVERIFY(QTest::kWaitForSignal(&secondDirLister, SIGNAL(redirection(KUrl,KUrl)), 1000));
+
+ // Check that the URL of the root item got updated
+ QCOMPARE(secondDirLister.rootItem().url().toLocalFile(), newPath);
+
+ disconnect(&secondDirLister, 0, this, 0);
+ QDir().remove(newPath);
+}
+
void KDirListerTest::testRedirection()
{
m_items.clear();
diff --git a/kio/tests/kdirlistertest.h b/kio/tests/kdirlistertest.h
index 2fa863c..b885514 100644
--- a/kio/tests/kdirlistertest.h
+++ b/kio/tests/kdirlistertest.h
@@ -107,6 +107,7 @@ private Q_SLOTS:
void testOpenUrlTwiceWithKeep();
void testOpenAndStop();
void testBug211472();
+ void testRenameCurrentDir();
void testRedirection();
void testDeleteCurrentDir(); // must be last!
++++++ fix-kdirlistertest-on-lxc-containers.diff ++++++
commit d0215455949c60fce01bf6718401f7759db8aa3c
Author: David Faure
Date: Sun Jan 13 00:30:17 2013 +0100
Fix kdirlistertest on LXC containers (such as build.kde.org)
Due to the empty fstab, manually_mounted() thought that /tmp was manually
mounted (like a CD or a USB key), so no watching happened, instead the
directory is marked as dirty, which triggers an update when listing it
again, which kdirlistertest doesn't expect (started() emitted twice)
diff --git a/kio/kio/kdirlister.cpp b/kio/kio/kdirlister.cpp
index ea778e9..94b1d1d 100644
--- a/kio/kio/kdirlister.cpp
+++ b/kio/kio/kdirlister.cpp
@@ -530,8 +530,11 @@ void KDirListerCache::forgetDirs( KDirLister *lister )
static bool manually_mounted(const QString& path, const KMountPoint::List& possibleMountPoints)
{
KMountPoint::Ptr mp = possibleMountPoints.findByPath(path);
- if (!mp) // not listed in fstab -> yes, manually mounted
+ if (!mp) { // not listed in fstab -> yes, manually mounted
+ if (possibleMountPoints.isEmpty()) // no fstab at all -> don't assume anything
+ return false;
return true;
+ }
const bool supermount = mp->mountType() == "supermount";
if (supermount) {
return true;
++++++ fix_kcalc_shortcut.diff ++++++
Subject: Make XF86Calculator key work
From: lplegori@gmail.com
Signed-Off-By: Christian Trippe, ctrippe@opensuse.org
Bug: bnc#726550, kde#257900
Patch-upstream: no
--- kdeui/util/kkeyserver_x11.cpp 2012-02-25 18:53:49.480771132 -0200
+++ kdeui/util/kkeyserver_x11.cpp 2012-02-25 18:20:38.912403430 -0200
@@ -355,7 +355,7 @@
{ Qt::Key_MediaRecord, XF86XK_AudioRecord },
{ Qt::Key_LaunchMail, XF86XK_Mail },
{ Qt::Key_Launch0, XF86XK_MyComputer },
- { Qt::Key_Calculator, XF86XK_Calculator },
+ { Qt::Key_Launch1, XF86XK_Calculator },
{ Qt::Key_Memo, XF86XK_Memo },
{ Qt::Key_ToDoList, XF86XK_ToDoList },
{ Qt::Key_Calendar, XF86XK_Calendar },
++++++ fix_kdeclarative_install_location.diff ++++++
Index: kdelibs-4.8.3/experimental/libkdeclarative/CMakeLists.txt
===================================================================
--- kdelibs-4.8.3.orig/experimental/libkdeclarative/CMakeLists.txt
+++ kdelibs-4.8.3/experimental/libkdeclarative/CMakeLists.txt
@@ -6,6 +6,9 @@ endif(KDE_PLATFORM_FEATURE_BINARY_COMPAT
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-kdeclarative.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kdeclarative.h)
+set (LIB_SUFFIX "" CACHE STRING "Define suffix of library directory name (eg. '64')")
+set( LIB_INSTALL_DIR lib${LIB_SUFFIX} )
+
include_directories(
${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR}
++++++ flash-player-non-oss.diff ++++++
Index: khtml/html/html_objectimpl.cpp
===================================================================
--- khtml/html/html_objectimpl.cpp.orig
+++ khtml/html/html_objectimpl.cpp
@@ -606,14 +606,32 @@ void HTMLObjectBaseElementImpl::slotPart
// Prepare the URL to show in the question (host only if http, to make it short)
KUrl pluginPageURL(embed->pluginPage);
QString shortURL = pluginPageURL.protocol() == "http" ? pluginPageURL.host() : pluginPageURL.prettyUrl();
- int res = KMessageBox::questionYesNo( part->view(),
- i18n("No plugin found for '%1'.\nDo you want to download one from %2?", mimeName, shortURL),
+
+ int res;
+ if (mimeName.startsWith("Shockwave Flash", Qt::CaseInsensitive))
+ {
+ res = KMessageBox::questionYesNo( part->view(),
+ i18n("No plugin found for '%1'.\nDo you want to download one from %2?", mimeName, "openSUSE"),
i18n("Missing Plugin"), KGuiItem(i18n("Download")), KGuiItem(i18n("Do Not Download")), QString("plugin-")+serviceType);
- if (res == KMessageBox::Yes)
+ if (res == KMessageBox::Yes)
+ {
+ // Open YMP file
+ KUrl ymp_flash("http://download.opensuse.org/YaST/flash-player.ymp");
+ ext->openUrlRequest(ymp_flash);
+ return;
+ }
+ }
+ else
{
- // Display vendor download page
- ext->createNewWindow(pluginPageURL);
- return;
+ res = KMessageBox::questionYesNo( part->view(),
+ i18n("No plugin found for '%1'.\nDo you want to download one from %2?", mimeName, "openSUSE"),
+ i18n("Missing Plugin"), KGuiItem(i18n("Download")), KGuiItem(i18n("Do Not Download")), QString("plugin-")+serviceType);
+ if (res == KMessageBox::Yes)
+ {
+ // Display vendor download page
+ ext->createNewWindow(pluginPageURL);
+ return;
+ }
}
}
}
++++++ hidden.desktop ++++++
[Desktop Entry]
Hidden=true
++++++ hotplug-kde3.diff ++++++
Index: kdecore/services/kservice.cpp
===================================================================
--- kdecore/services/kservice.cpp.orig
+++ kdecore/services/kservice.cpp
@@ -106,6 +106,8 @@ void KServicePrivate::init( const KDeskt
m_bValid = false;
return;*/
m_strType = QString::fromLatin1("Application");
+ if( entryPath.contains( QLatin1String("/konqueror/servicemenus") ))
+ m_strType = QLatin1String("Service"); // workaround for bnc#378338, KDE3 entries there miss Type=
} else if (m_strType != QLatin1String("Application") && m_strType != QLatin1String("Service")) {
kWarning(servicesDebugArea()) << "The desktop entry file " << entryPath
<< " has Type=" << m_strType
++++++ ignore-inline-menu.diff ++++++
Index: kded/vfolder_menu.cpp
===================================================================
--- kded/vfolder_menu.cpp.orig
+++ kded/vfolder_menu.cpp
@@ -1448,6 +1448,7 @@ static QString parseAttribute( const QDo
else
kDebug()<<" Error in parsing show_empty attribute :"<entryPath();
bool absPath = !QDir::isRelativePath(entryPath);
+ bool kde3application = config->fileName().startsWith(QLatin1String("/opt/kde3/share/applications/kde/"))
+ || config->fileName().startsWith(QLatin1String("/opt/kde3/share/autostart/"));
// TODO: it makes sense to have a KConstConfigGroup I guess
const KConfigGroup desktopGroup = const_cast(config)->desktopGroup();
@@ -91,6 +93,8 @@ void KServicePrivate::init( const KDeskt
if (i != -1)
m_strName = m_strName.left(i);
}
+ if (kde3application)
+ m_strName += QLatin1String("/KDE3");
m_strType = config->readType();
entryMap.remove(QLatin1String("Type"));
@@ -113,6 +117,18 @@ void KServicePrivate::init( const KDeskt
// NOT readPathEntry, it is not XDG-compliant. Path entries written by
// KDE4 will be still treated as such, though.
m_strExec = desktopGroup.readEntry( "Exec", QString() );
+ if (kde3application && !m_strExec.startsWith(QLatin1String("/")))
+ m_strExec = QLatin1String("/opt/kde3/bin/")+m_strExec;
+ else if (desktopGroup.readEntry(QLatin1String("X-KDE-SubstituteUID")), false) {
+ int space = m_strExec.indexOf(QLatin1String(" "));
+ if (space==-1)
+ m_strExec = KStandardDirs::findExe(m_strExec);
+ else {
+ const QString command = m_strExec.left(space);
+ m_strExec.replace(command,KStandardDirs::findExe(command));
+ }
+ }
+
entryMap.remove(QLatin1String("Exec"));
if (m_strType == QLatin1String("Application")) {
@@ -215,6 +231,8 @@ void KServicePrivate::init( const KDeskt
m_initialPreference = desktopGroup.readEntry( "InitialPreference", 1 );
entryMap.remove(QLatin1String("InitialPreference"));
+ if (kde3application)
+ m_initialPreference = 1;
// Assign the "initial preference" to each mimetype/servicetype
// (and to set such preferences in memory from kbuildsycoca)
@@ -256,6 +274,8 @@ void KServicePrivate::init( const KDeskt
m_DBUSStartusType = KService::DBusNone;
m_strDesktopEntryName = _name.toLower();
+ if (kde3application)
+ m_strDesktopEntryName = QLatin1String("kde-") + m_strDesktopEntryName;
m_bAllowAsDefault = desktopGroup.readEntry("AllowDefault", true);
entryMap.remove(QLatin1String("AllowDefault"));
@@ -275,7 +295,9 @@ void KServicePrivate::init( const KDeskt
// qDebug("Path = %s", entryPath.toLatin1().constData());
QMap::ConstIterator it = entryMap.constBegin();
for( ; it != entryMap.constEnd();++it) {
- const QString key = it.key();
+ QString key = it.key();
+ if (kde3application && key==QLatin1String("OnlyShowIn") && QVariant(*it)==QLatin1String("KDE;"))
+ key = QLatin1String("NotShowIn");
// do not store other translations like Name[fr]; kbuildsycoca will rerun if we change languages anyway
if (!key.contains(QLatin1Char('['))) {
//kDebug(servicesDebugArea()) << " Key =" << key << " Data =" << *it;
++++++ kde4rc ++++++
[Directories]
prefixes=/etc/kde4/
dir_locale=/usr/share/locale-bundle
dir_html=/usr/share/doc-bundle
++++++ kdebug-areas-update.diff ++++++
Index: kdecore/kdebug.areas
===================================================================
--- kdecore/kdebug.areas.orig
+++ kdecore/kdebug.areas
@@ -729,6 +729,8 @@
100200 kfs
+100300 kupdateapplet
+
# rosegarden
200000 rosegarden
++++++ kdesu-settings.diff ++++++
Subject: Change kdesu settings
From: Lubos Lunak
Bug: 216796, 404521
Relates: kdelibs3/kdesu-settings.diff , kdebase4-runtime/kdesu-remember-keep-password.diff
Patch-upstream: never
Change kdesu(d) password keeping timeout only to 5 minutes and enable
it by default (to match kdesu using sudo in 10.3 behaviour).
Update: Change the timeout back to 2 hours (bnc#404521).
Index: kdesu/defaults.h
===================================================================
--- kdesu/defaults.h.orig
+++ kdesu/defaults.h
@@ -15,7 +15,7 @@ namespace KDESu {
const int defTimeout = 120*60;
const int defEchoMode = 0;
-const bool defKeep = false;
+const bool defKeep = true;
}
++++++ kio_revert_slow_filesystems.patch ++++++
diff -Pdpru a/kio/kio/kfileitem.cpp b/kio/kio/kfileitem.cpp
--- a/kio/kio/kfileitem.cpp 2012-06-06 22:49:52.653043147 +0200
+++ b/kio/kio/kfileitem.cpp 2012-09-07 16:21:14.511736277 +0200
@@ -702,8 +702,7 @@ bool KFileItemPrivate::isSlow() const
if (m_slow == SlowUnknown) {
const QString path = localPath();
if (!path.isEmpty()) {
- const KFileSystemType::Type fsType = KFileSystemType::fileSystemType(path);
- m_slow = (fsType == KFileSystemType::Nfs || fsType == KFileSystemType::Smb) ? Slow : Fast;
+ m_slow = Fast;
} else {
m_slow = Slow;
}
++++++ kjs-mark-register-stack.diff ++++++
Index: kjs/collector.cpp
===================================================================
--- kjs/collector.cpp.orig
+++ kjs/collector.cpp
@@ -524,6 +524,9 @@ static inline void* currentThreadStackBa
return stackBase;
}
+#ifdef __ia64__
+extern "C" void *__libc_ia64_register_backing_store_base __attribute__((weak));
+#endif
void Collector::markCurrentThreadConservatively()
{
@@ -543,6 +546,11 @@ void Collector::markCurrentThreadConserv
void* stackBase = currentThreadStackBase();
markStackObjectsConservatively(stackPointer, stackBase);
+#ifdef __ia64__
+ __builtin_ia64_flushrs();
+ void *bsp = __builtin_ia64_bsp();
+ markStackObjectsConservatively(__libc_ia64_register_backing_store_base, bsp);
+#endif
}
#if USE(MULTIPLE_THREADS)
++++++ ksuseinstall.diff ++++++
++++ 992 lines (skipped)
++++++ plasma-libs.diff ++++++
Index: plasma/containment.cpp
===================================================================
--- plasma/containment.cpp.orig
+++ plasma/containment.cpp
@@ -143,6 +143,18 @@ Containment::Containment(const QString &
setHasConfigurationInterface(false);
}
+Containment::Containment(QObject *parent, const QVariantList &args, bool showToolBox)
+ : Applet(parent, args),
+ d(new ContainmentPrivate(this))
+{
+ // WARNING: do not access config() OR globalConfig() in this method!
+ // that requires a scene, which is not available at this point
+ setPos(0, 0);
+ setBackgroundHints(NoBackground);
+ setHasConfigurationInterface(false);
+ d->showToolBox=showToolBox;
+}
+
Containment::~Containment()
{
delete d;
Index: plasma/containment.h
===================================================================
--- plasma/containment.h.orig
+++ plasma/containment.h
@@ -128,6 +128,8 @@ class PLASMA_EXPORT Containment : public
*/
Containment(QObject *parent, const QVariantList &args);
+ Containment(QObject *parent, const QVariantList &args, bool showToolBox);
+
~Containment();
/**
Index: plasma/private/containment_p.h
===================================================================
--- plasma/private/containment_p.h.orig
+++ plasma/private/containment_p.h
@@ -60,6 +60,7 @@ public:
type(Containment::NoContainmentType),
showDropZoneDelayTimer(0),
drawWallpaper(true),
+ showToolBox(true),
dropZoneStarted(false),
containmentActionsSource(Global)
{
@@ -187,6 +188,7 @@ public:
QHash dropMenus;
QTimer *showDropZoneDelayTimer;
bool drawWallpaper : 1;
+ bool showToolBox : 1;
bool dropZoneStarted : 1;
enum ContainmentActionsSource {
Index: plasma/theme.cpp
===================================================================
--- plasma/theme.cpp.orig
+++ plasma/theme.cpp
@@ -80,7 +80,6 @@ public:
colorScheme(QPalette::Active, KColorScheme::Window, KSharedConfigPtr(0)),
buttonColorScheme(QPalette::Active, KColorScheme::Button, KSharedConfigPtr(0)),
viewColorScheme(QPalette::Active, KColorScheme::View, KSharedConfigPtr(0)),
- defaultWallpaperTheme(DEFAULT_WALLPAPER_THEME),
defaultWallpaperSuffix(DEFAULT_WALLPAPER_SUFFIX),
defaultWallpaperWidth(DEFAULT_WALLPAPER_WIDTH),
defaultWallpaperHeight(DEFAULT_WALLPAPER_HEIGHT),
@@ -108,6 +107,10 @@ public:
updateNotificationTimer->setInterval(500);
QObject::connect(updateNotificationTimer, SIGNAL(timeout()), q, SLOT(notifyOfChanged()));
+ KSharedConfigPtr defaultconfig = KSharedConfig::openConfig("plasma-desktoprc");
+ KConfigGroup group = KConfigGroup(defaultconfig, "Defaults");
+ defaultWallpaperTheme = group.readEntry("wallpaper", DEFAULT_WALLPAPER_THEME);
+
if (QPixmap::defaultDepth() > 8) {
QObject::connect(KWindowSystem::self(), SIGNAL(compositingChanged(bool)), q, SLOT(compositingChanged(bool)));
#ifdef Q_WS_X11
@@ -564,7 +567,10 @@ void ThemePrivate::processWallpaperSetti
cg = config();
}
- defaultWallpaperTheme = cg.readEntry("defaultWallpaperTheme", DEFAULT_WALLPAPER_THEME);
+ KSharedConfigPtr defaultconfig = KSharedConfig::openConfig("plasma-desktoprc");
+ KConfigGroup group = KConfigGroup(defaultconfig, "Defaults");
+ defaultWallpaperTheme = cg.readEntry("defaultWallpaperTheme", group.readEntry("wallpaper", DEFAULT_WALLPAPER_THEME));
+
defaultWallpaperSuffix = cg.readEntry("defaultFileSuffix", DEFAULT_WALLPAPER_SUFFIX);
defaultWallpaperWidth = cg.readEntry("defaultWidth", DEFAULT_WALLPAPER_WIDTH);
defaultWallpaperHeight = cg.readEntry("defaultHeight", DEFAULT_WALLPAPER_HEIGHT);
@@ -814,6 +820,10 @@ QString Theme::wallpaperPath(const QSize
}
}
+ if (!QFile::exists(fullPath)) {
+ fullPath = KStandardDirs::locate("wallpaper", d->defaultWallpaperTheme);
+ }
+
return fullPath;
}
++++++ pre_checkin.sh ++++++
#!/bin/bash
# This script is called automatically during autobuild checkin.
version=$(grep '^Version:.*' kdelibs4.spec)
for change in kdelibs4-apidocs; do
cp -f kdelibs4.changes $change.changes
sed -i -e "s,Version:.*,$version," ${change}.spec
done
++++++ windeco-color.diff ++++++
Index: kdeui/kernel/kglobalsettings.cpp
===================================================================
--- kdeui/kernel/kglobalsettings.cpp.orig
+++ kdeui/kernel/kglobalsettings.cpp
@@ -344,7 +344,7 @@ QColor KGlobalSettings::activeTitleColor
return qt_colorref2qrgb(GetSysColor(COLOR_ACTIVECAPTION));
#else
KConfigGroup g( KGlobal::config(), "WM" );
- return g.readEntry( "activeBackground", QColor(48,174,232));
+ return g.readEntry( "activeBackground", QColor(106, 153, 213));
#endif
}
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org