Hello community, here is the log from the commit of package kdebase4 for openSUSE:Factory checked in at 2013-04-18 10:19:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kdebase4 (Old) and /work/SRC/openSUSE:Factory/.kdebase4.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdebase4", Maintainer is "kde-maintain...@suse.de" Changes: -------- --- /work/SRC/openSUSE:Factory/kdebase4/kdebase4.changes 2013-03-14 11:27:52.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.kdebase4.new/kdebase4.changes 2013-04-18 10:20:11.000000000 +0200 @@ -1,0 +2,5 @@ +Mon Apr 1 19:11:34 UTC 2013 - tittiatc...@gmail.com + +- Update to 4.10.2 \n * Bugfixes + +------------------------------------------------------------------- Old: ---- kde-baseapps-4.10.1.tar.xz New: ---- kde-baseapps-4.10.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdebase4.spec ++++++ --- /var/tmp/diff_new_pack.bmPICN/_old 2013-04-18 10:20:13.000000000 +0200 +++ /var/tmp/diff_new_pack.bmPICN/_new 2013-04-18 10:20:13.000000000 +0200 @@ -17,7 +17,7 @@ Name: kdebase4 -Version: 4.10.1 +Version: 4.10.2 Release: 0 Summary: The Base KDE Apps License: GPL-2.0+ ++++++ kde-baseapps-4.10.1.tar.xz -> kde-baseapps-4.10.2.tar.xz ++++++ Files old/kde-baseapps-4.10.1/doc/dolphin/index.cache.bz2 and new/kde-baseapps-4.10.2/doc/dolphin/index.cache.bz2 differ Files old/kde-baseapps-4.10.1/doc/konqueror/index.cache.bz2 and new/kde-baseapps-4.10.2/doc/konqueror/index.cache.bz2 differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kfileitemmodel.cpp new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kfileitemmodel.cpp --- old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kfileitemmodel.cpp 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kfileitemmodel.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -33,6 +33,9 @@ #include <QTimer> #include <QWidget> +#include <algorithm> +#include <vector> + // #define KFILEITEMMODEL_DEBUG KFileItemModel::KFileItemModel(QObject* parent) : @@ -120,6 +123,11 @@ void KFileItemModel::refreshDirectory(const KUrl& url) { + // Refresh all expanded directories first (Bug 295300) + foreach (const KUrl& expandedUrl, m_expandedDirs) { + m_dirLister->openUrl(expandedUrl, KDirLister::Reload); + } + m_dirLister->openUrl(url, KDirLister::Reload); } @@ -438,6 +446,29 @@ itemsToRemove.append(m_itemData.at(index)->item); ++index; } + + QSet<KUrl> urlsToRemove; + urlsToRemove.reserve(itemsToRemove.count() + 1); + urlsToRemove.insert(url); + foreach (const KFileItem& item, itemsToRemove) { + KUrl url = item.url(); + url.adjustPath(KUrl::RemoveTrailingSlash); + urlsToRemove.insert(url); + } + + QSet<KFileItem>::iterator it = m_filteredItems.begin(); + while (it != m_filteredItems.end()) { + const KUrl url = it->url(); + KUrl parentUrl = url.upUrl(); + parentUrl.adjustPath(KUrl::RemoveTrailingSlash); + + if (urlsToRemove.contains(parentUrl)) { + it = m_filteredItems.erase(it); + } else { + ++it; + } + } + removeItems(itemsToRemove); } @@ -1584,6 +1615,11 @@ return !m_dirLister->url().isLocalFile(); } +static bool localeAwareLessThan(const QChar& c1, const QChar& c2) +{ + return QString::localeAwareCompare(c1, c2) < 0; +} + QList<QPair<int, QVariant> > KFileItemModel::nameRoleGroups() const { Q_ASSERT(!m_itemData.isEmpty()); @@ -1593,7 +1629,6 @@ QString groupValue; QChar firstChar; - bool isLetter = false; for (int i = 0; i <= maxIndex; ++i) { if (isChildItem(i)) { continue; @@ -1609,31 +1644,31 @@ if (firstChar != newFirstChar) { QString newGroupValue; - if (newFirstChar >= QLatin1Char('A') && newFirstChar <= QLatin1Char('Z')) { - // Apply group 'A' - 'Z' - newGroupValue = newFirstChar; - isLetter = true; + if (newFirstChar.isLetter()) { + // Try to find a matching group in the range 'A' to 'Z'. + static std::vector<QChar> lettersAtoZ; + if (lettersAtoZ.empty()) { + for (char c = 'A'; c <= 'Z'; ++c) { + lettersAtoZ.push_back(QLatin1Char(c)); + } + } + + std::vector<QChar>::iterator it = std::lower_bound(lettersAtoZ.begin(), lettersAtoZ.end(), newFirstChar, localeAwareLessThan); + if (it != lettersAtoZ.end()) { + if (localeAwareLessThan(newFirstChar, *it) && it != lettersAtoZ.begin()) { + // newFirstChar belongs to the group preceding *it. + // Example: for an umlaut 'A' in the German locale, *it would be 'B' now. + --it; + } + newGroupValue = *it; + } else { + newGroupValue = newFirstChar; + } } else if (newFirstChar >= QLatin1Char('0') && newFirstChar <= QLatin1Char('9')) { // Apply group '0 - 9' for any name that starts with a digit newGroupValue = i18nc("@title:group Groups that start with a digit", "0 - 9"); - isLetter = false; } else { - if (isLetter) { - // If the current group is 'A' - 'Z' check whether a locale character - // fits into the existing group. - // TODO: This does not work in the case if e.g. the group 'O' starts with - // an umlaut 'O' -> provide unit-test to document this known issue - const QChar prevChar(firstChar.unicode() - ushort(1)); - const QChar nextChar(firstChar.unicode() + ushort(1)); - const QString currChar(newFirstChar); - const bool partOfCurrentGroup = currChar.localeAwareCompare(prevChar) > 0 && - currChar.localeAwareCompare(nextChar) < 0; - if (partOfCurrentGroup) { - continue; - } - } newGroupValue = i18nc("@title:group", "Others"); - isLetter = false; } if (newGroupValue != groupValue) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp --- old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp 2013-03-01 07:36:05.000000000 +0100 +++ new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kfileitemmodelrolesupdater.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -996,7 +996,7 @@ const bool resolveAll = (hint == ResolveAll); bool mimeTypeChanged = false; - if (!item.isMimeTypeKnown()) { + if (!item.isMimeTypeKnown() || !item.isFinalIconKnown()) { item.determineMimeType(); mimeTypeChanged = true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kitemlistcontainer.cpp new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kitemlistcontainer.cpp --- old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kitemlistcontainer.cpp 2013-03-01 07:36:05.000000000 +0100 +++ new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kitemlistcontainer.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -261,7 +261,9 @@ smoothScroller = m_verticalSmoothScroller; scrollOffsetScrollBar = verticalScrollBar(); singleStep = view->itemSize().height(); - pageStep = view->size().height(); + // We cannot use view->size().height() because this height might + // include the header widget, which is not part of the scrolled area. + pageStep = view->verticalPageStep(); } else { smoothScroller = m_horizontalSmoothScroller; scrollOffsetScrollBar = horizontalScrollBar(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kitemlistview.cpp new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kitemlistview.cpp --- old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kitemlistview.cpp 2013-03-01 07:36:05.000000000 +0100 +++ new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kitemlistview.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -388,6 +388,15 @@ } } +qreal KItemListView::verticalPageStep() const +{ + qreal headerHeight = 0; + if (m_headerWidget->isVisible()) { + headerHeight = m_headerWidget->size().height(); + } + return size().height() - headerHeight; +} + int KItemListView::itemAt(const QPointF& pos) const { QHashIterator<int, KItemListWidget*> it(m_visibleItems); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kitemlistview.h new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kitemlistview.h --- old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kitemlistview.h 2013-03-01 07:36:05.000000000 +0100 +++ new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kitemlistview.h 2013-03-29 08:01:18.000000000 +0100 @@ -163,6 +163,12 @@ virtual void setGeometry(const QRectF& rect); /** + * @return The page step which should be used by the vertical scroll bar. + * This is the height of the view except for the header widget. + */ + qreal verticalPageStep() const; + + /** * @return Index of the item that is below the point \a pos. * The position is relative to the upper right of * the visible area. Only (at least partly) visible diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kstandarditemlistwidget.cpp new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kstandarditemlistwidget.cpp --- old/kde-baseapps-4.10.1/dolphin/src/kitemviews/kstandarditemlistwidget.cpp 2013-03-01 07:36:05.000000000 +0100 +++ new/kde-baseapps-4.10.2/dolphin/src/kitemviews/kstandarditemlistwidget.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -249,17 +249,46 @@ const KItemListStyleOption& itemListStyleOption = styleOption(); if (isHovered()) { - const qreal opacity = painter->opacity(); - // Blend the unhovered and hovered pixmap if the hovering - // animation is ongoing if (hoverOpacity() < 1.0) { - painter->setOpacity((1.0 - hoverOpacity()) * opacity); - drawPixmap(painter, m_pixmap); - } + /* + * Linear interpolation between m_pixmap and m_hoverPixmap. + * + * Note that this cannot be achieved by painting m_hoverPixmap over + * m_pixmap, even if the opacities are adjusted. For details see + * https://git.reviewboard.kde.org/r/109614/ + */ + // Paint pixmap1 so that pixmap1 = m_pixmap * (1.0 - hoverOpacity()) + QPixmap pixmap1(option->rect.size()); + pixmap1.fill(Qt::transparent); + { + QPainter p(&pixmap1); + p.setOpacity(1.0 - hoverOpacity()); + drawPixmap(&p, m_pixmap); + } + + // Paint pixmap2 so that pixmap2 = m_hoverPixmap * hoverOpacity() + QPixmap pixmap2(option->rect.size()); + pixmap2.fill(Qt::transparent); + { + QPainter p(&pixmap2); + p.setOpacity(hoverOpacity()); + drawPixmap(&p, m_hoverPixmap); + } - painter->setOpacity(hoverOpacity() * opacity); - drawPixmap(painter, m_hoverPixmap); - painter->setOpacity(opacity); + // Paint pixmap2 on pixmap1 using CompositionMode_Plus + // Now pixmap1 = pixmap2 + m_pixmap * (1.0 - hoverOpacity()) + // = m_hoverPixmap * hoverOpacity() + m_pixmap * (1.0 - hoverOpacity()) + { + QPainter p(&pixmap1); + p.setCompositionMode(QPainter::CompositionMode_Plus); + p.drawPixmap(0, 0, pixmap2); + } + + // Finally paint pixmap1 on the widget + painter->drawPixmap(0, 0, pixmap1); + } else { + drawPixmap(painter, m_hoverPixmap); + } } else { drawPixmap(painter, m_pixmap); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/dolphin/src/panels/information/informationpanelcontent.cpp new/kde-baseapps-4.10.2/dolphin/src/panels/information/informationpanelcontent.cpp --- old/kde-baseapps-4.10.1/dolphin/src/panels/information/informationpanelcontent.cpp 2013-03-01 07:36:05.000000000 +0100 +++ new/kde-baseapps-4.10.2/dolphin/src/panels/information/informationpanelcontent.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -105,6 +105,7 @@ QFont font = m_nameLabel->font(); font.setBold(true); m_nameLabel->setFont(font); + m_nameLabel->setTextFormat(Qt::PlainText); m_nameLabel->setAlignment(Qt::AlignHCenter); m_nameLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); @@ -163,7 +164,7 @@ const KUrl itemUrl = item.url(); const bool isSearchUrl = itemUrl.protocol().contains("search") && item.nepomukUri().isEmpty(); if (!applyPlace(itemUrl)) { - setNameLabelText(Qt::escape(item.text())); + setNameLabelText(item.text()); if (isSearchUrl) { // in the case of a search-URL the URL is not readable for humans // (at least not useful to show in the Information Panel) @@ -233,7 +234,7 @@ KIconLoader::NoGroup, KIconLoader::SizeEnormous); m_preview->setPixmap(icon); - setNameLabelText(i18ncp("@info", "%1 item selected", "%1 items selected", items.count())); + setNameLabelText(i18ncp("@label", "%1 item selected", "%1 items selected", items.count())); if (m_metaDataWidget) { m_metaDataWidget->setItems(items); @@ -361,7 +362,7 @@ for (int i = 0; i < count; ++i) { const PlacesItem* item = m_placesItemModel->placesItem(i); if (item->url().equals(url, KUrl::CompareWithoutTrailingSlash)) { - setNameLabelText(Qt::escape(item->text())); + setNameLabelText(item->text()); m_preview->setPixmap(KIcon(item->icon()).pixmap(128, 128)); return true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/dolphin/src/panels/terminal/terminalpanel.cpp new/kde-baseapps-4.10.2/dolphin/src/panels/terminal/terminalpanel.cpp --- old/kde-baseapps-4.10.1/dolphin/src/panels/terminal/terminalpanel.cpp 2013-03-01 07:36:05.000000000 +0100 +++ new/kde-baseapps-4.10.2/dolphin/src/panels/terminal/terminalpanel.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -144,6 +144,7 @@ void TerminalPanel::sendCdToTerminal(const QString& dir) { if (dir == m_konsolePartCurrentDirectory) { + m_clearTerminal = false; return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/dolphin/src/tests/kfileitemmodeltest.cpp new/kde-baseapps-4.10.2/dolphin/src/tests/kfileitemmodeltest.cpp --- old/kde-baseapps-4.10.1/dolphin/src/tests/kfileitemmodeltest.cpp 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/dolphin/src/tests/kfileitemmodeltest.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -76,6 +76,7 @@ void testNameFilter(); void testEmptyPath(); void testRemoveHiddenItems(); + void collapseParentOfHiddenItems(); void removeParentOfHiddenItems(); private: @@ -851,6 +852,55 @@ } /** + * Verify that filtered items are removed when their parent is collapsed. + */ +void KFileItemModelTest::collapseParentOfHiddenItems() +{ + QSet<QByteArray> modelRoles = m_model->roles(); + modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount"; + m_model->setRoles(modelRoles); + + QStringList files; + files << "a/1" << "a/b/1" << "a/b/c/1" << "a/b/c/d/1"; + m_testDir->createFiles(files); + + m_model->loadDirectory(m_testDir->url()); + QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout)); + QCOMPARE(m_model->count(), 1); // Only "a/" + + // Expand "a/". + m_model->setExpanded(0, true); + QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout)); + QCOMPARE(m_model->count(), 3); // 3 items: "a/", "a/b/", "a/1" + + // Expand "a/b/". + m_model->setExpanded(1, true); + QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout)); + QCOMPARE(m_model->count(), 5); // 5 items: "a/", "a/b/", "a/b/c", "a/b/1", "a/1" + + // Expand "a/b/c/". + m_model->setExpanded(2, true); + QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout)); + QCOMPARE(m_model->count(), 7); // 7 items: "a/", "a/b/", "a/b/c", "a/b/c/d/", "a/b/c/1", "a/b/1", "a/1" + + // Set a name filter that matches nothing -> only the expanded folders remain. + m_model->setNameFilter("xyz"); + QCOMPARE(m_model->count(), 3); + QCOMPARE(itemsInModel(), QStringList() << "a" << "b" << "c"); + + // Collapse the folder "a/". + QSignalSpy spyItemsRemoved(m_model, SIGNAL(itemsRemoved(KItemRangeList))); + m_model->setExpanded(0, false); + QCOMPARE(spyItemsRemoved.count(), 1); + QCOMPARE(m_model->count(), 1); + QCOMPARE(itemsInModel(), QStringList() << "a"); + + // Remove the filter -> no files should appear (and we should not get a crash). + m_model->setNameFilter(QString()); + QCOMPARE(m_model->count(), 1); +} + +/** * Verify that filtered items are removed when their parent is deleted. */ void KFileItemModelTest::removeParentOfHiddenItems() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/konq-plugins/autorefresh/autorefresh.desktop new/kde-baseapps-4.10.2/konq-plugins/autorefresh/autorefresh.desktop --- old/kde-baseapps-4.10.1/konq-plugins/autorefresh/autorefresh.desktop 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/konq-plugins/autorefresh/autorefresh.desktop 2013-03-29 08:01:18.000000000 +0100 @@ -31,7 +31,7 @@ Name[he]=רענון אוטומטי Name[hr]=Automatsko osvježavanje Name[hu]=Automatikus frissítés -Name[ia]=refresca automaticamente +Name[ia]=Refrescamento automatic Name[is]=Uppfæra sjálfkrafa Name[it]=Autoaggiornamento Name[ja]=自動更新 @@ -89,7 +89,7 @@ Comment[hne]=अपने अपन ताजा करे के प्लगइन Comment[hr]=Priključak za automatsko osvježavanje Comment[hu]=Automatikusfrissítés-bővítmény -Comment[ia]=Plug-in de refresc automatic +Comment[ia]=Plug-in de refrescamento automatic Comment[is]=Íforrit fyrir sjálfvirka endurhleðslu Comment[it]=Estensione di autoaggiornamento Comment[ja]=自動更新プラグイン diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/konq-plugins/imagerotation/jpegorient.desktop new/kde-baseapps-4.10.2/konq-plugins/imagerotation/jpegorient.desktop --- old/kde-baseapps-4.10.1/konq-plugins/imagerotation/jpegorient.desktop 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/konq-plugins/imagerotation/jpegorient.desktop 2013-03-29 08:01:18.000000000 +0100 @@ -28,7 +28,7 @@ X-KDE-Submenu[hne]=फोटू बदलव X-KDE-Submenu[hr]=Transformiranje slike X-KDE-Submenu[hu]=Kép átalakítása -X-KDE-Submenu[ia]=Imagine de tranformar +X-KDE-Submenu[ia]=Transforma imagine X-KDE-Submenu[is]=Breyta mynd X-KDE-Submenu[it]=Trasforma immagine X-KDE-Submenu[ja]=画像を変換 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/konq-plugins/khtmlsettingsplugin/khtmlsettingsplugin.desktop new/kde-baseapps-4.10.2/konq-plugins/khtmlsettingsplugin/khtmlsettingsplugin.desktop --- old/kde-baseapps-4.10.1/konq-plugins/khtmlsettingsplugin/khtmlsettingsplugin.desktop 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/konq-plugins/khtmlsettingsplugin/khtmlsettingsplugin.desktop 2013-03-29 08:01:18.000000000 +0100 @@ -32,7 +32,7 @@ Name[hne]=के-एचटीएमएल सेटिंग Name[hr]=Postavke KHTML-a Name[hu]=KHTML-beállítások -Name[ia]=Preferentias de KHTML +Name[ia]=Preferentias de KHTML Name[is]=Stillingar KHTML Name[it]=Impostazioni KHTML Name[ja]=KHTML 設定 Files old/kde-baseapps-4.10.1/konqueror/pics/indicators/indicator_empty.png and new/kde-baseapps-4.10.2/konqueror/pics/indicators/indicator_empty.png differ Files old/kde-baseapps-4.10.1/konqueror/pics/indicators/indicator_viewactive.png and new/kde-baseapps-4.10.2/konqueror/pics/indicators/indicator_viewactive.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/konqueror/settings/konq/filebehavior.desktop new/kde-baseapps-4.10.2/konqueror/settings/konq/filebehavior.desktop --- old/kde-baseapps-4.10.1/konqueror/settings/konq/filebehavior.desktop 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/konqueror/settings/konq/filebehavior.desktop 2013-03-29 08:01:18.000000000 +0100 @@ -200,7 +200,7 @@ X-KDE-Keywords[ca]=konqueror,gestor de fitxers,kfm,consells,consells de fitxers,finestres separades,finestres engendrades,comportament,ús de memòria,URL inicial,operacions de xarxa,diàleg de progrés,paperera,esborrat,confirmació X-KDE-Keywords[ca@valencia]=konqueror,gestor de fitxers,kfm,consells,consells de fitxers,finestres separades,finestres engendrades,comportament,ús de memòria,URL inicial,operacions de xarxa,diàleg de progrés,paperera,esborrat,confirmació X-KDE-Keywords[da]=konqueror,filhåndtering,kfm,tips,filtips,separat vindue,affød vinduer,opførsel,hukommelsesforbrug,startside,netværksoperationer,fremgangsdialog,affald kan,slette,bekræftelse -X-KDE-Keywords[de]=Konqueror,Dateimanager,kfm,Tipps,Fenster,Verhalten,Persönlicher Ordner,Speicherverwendung,URL,Adressen,Netzwerkoperationen,Fortschrittsanzeige,Mülleimer,Papierkorb,Löschen,Bestätigung +X-KDE-Keywords[de]=Konqueror,Dateimanager,kfm,Tipps,Fenster,Verhalten,Persönlicher Ordner,Speicherverwendung,URL,Adressen,Netzwerkoperationen,Fortschrittsanzeige,Papierkorb,Papierkorb,Löschen,Bestätigung X-KDE-Keywords[el]=konqueror,filemanager,kfm,συμβουλές,συμβουλές αρχείων,ξεχωριστό παράθυρο,παραγόμενα παράθυρα,συμπεριφορά,συμπεριφορά,χρήση μνήμης,αρχική σελίδα,δικτυακές λειτουργίες,διάλογος προόδου,δοχείο απορριμμάτων,διαγραφή,επιβεβαίωση X-KDE-Keywords[es]=konqueror,gestor de archivos,kfm,consejos,consejos sobre archivos,separar ventanas,lanzar ventanas,comportamiento,uso de memoria,URL de inicio,operaciones de red,diálogo de progreso,papelera,borrar,confirmación X-KDE-Keywords[et]=konqueror,failihaldur,kfm,vihjed,soovitused,eraldi aken,aknad,käitumine,mälukasutus,Kodu,URL,võrguoperatsioonid,edenemine,dialoog,prügikast,kustutamine,kinnitus diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/konqueror/sidebar/default_entries/history.desktop new/kde-baseapps-4.10.2/konqueror/sidebar/default_entries/history.desktop --- old/kde-baseapps-4.10.1/konqueror/sidebar/default_entries/history.desktop 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/konqueror/sidebar/default_entries/history.desktop 2013-03-29 08:01:18.000000000 +0100 @@ -107,7 +107,7 @@ Comment[bs]=Istorijat URL‑ova koje ste nedavno posjetili. Možete ih poređati na nekoliko načina. Comment[ca]=Aquest és l'historial amb els URL que heu visitat recentment. Podeu ordenar-los de moltes maneres. Comment[ca@valencia]=Este és l'historial amb els URL que heu visitat recentment. Podeu ordenar-los de moltes maneres. -Comment[cs]=Toto je historie URL, které jste naposledy navštívili. Můžete si je různými způsoby setřídit. +Comment[cs]=Toto je historie URL, které jste naposledy navštívili. Můžete si je různými způsoby seřadit. Comment[csb]=Historëjô slédno òbzérónëch adresów URL. Mòże jã na wszelejaczé ôrte zortowac. Comment[cy]=Dyma hanes y safleoedd rydych wedi ymweld a nhw. Gallwch eu didoli mewn sawl ffordd. Comment[da]=Dette er historikken for de URL'er du har besøgt for nyligt. Du kan sortere dem på mange måder. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/konqueror/src/konqsessionmanager.cpp new/kde-baseapps-4.10.2/konqueror/src/konqsessionmanager.cpp --- old/kde-baseapps-4.10.1/konqueror/src/konqsessionmanager.cpp 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/konqueror/src/konqsessionmanager.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -475,6 +475,11 @@ configGroup.writeEntry("Number of Windows", counter); } +QString KonqSessionManager::autosaveDirectory() const +{ + return m_autosaveDir; +} + QStringList KonqSessionManager::takeSessionsOwnership() { // Tell to other konqueror instances that we are the one dealing with diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/konqueror/src/konqsessionmanager.h new/kde-baseapps-4.10.2/konqueror/src/konqsessionmanager.h --- old/kde-baseapps-4.10.1/konqueror/src/konqsessionmanager.h 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/konqueror/src/konqsessionmanager.h 2013-03-29 08:01:18.000000000 +0100 @@ -154,6 +154,11 @@ * Save current session in a given path (absolute path to a file) */ void saveCurrentSessionToFile(const QString& sessionConfig); + + /** + * Returns the autosave directory + */ + QString autosaveDirectory() const; public Q_SLOTS: /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/konqueror/src/tests/konqviewmgrtest.cpp new/kde-baseapps-4.10.2/konqueror/src/tests/konqviewmgrtest.cpp --- old/kde-baseapps-4.10.1/konqueror/src/tests/konqviewmgrtest.cpp 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/konqueror/src/tests/konqviewmgrtest.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -32,6 +32,7 @@ #include <konqsessionmanager.h> #include <kstandarddirs.h> #include <kconfiggroup.h> +#include <ktempdir.h> #include <kio/job.h> #include <QLayout> @@ -116,6 +117,7 @@ void ViewMgrTest::initTestCase() { + KTempDir::removeDir(KonqSessionManager::self()->autosaveDirectory()); KonqSessionManager::self()->disableAutosave(); QCOMPARE(KGlobal::mainComponent().componentName(), QString("konqueror")); QCOMPARE(KonqSettings::mmbOpensTab(), true); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/plasma/applets/folderview/folderview.cpp new/kde-baseapps-4.10.2/plasma/applets/folderview/folderview.cpp --- old/kde-baseapps-4.10.1/plasma/applets/folderview/folderview.cpp 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/plasma/applets/folderview/folderview.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -87,6 +87,8 @@ K_EXPORT_PLASMA_APPLET(folderview, FolderView) Q_DECLARE_METATYPE(Qt::SortOrder) +Q_DECLARE_METATYPE(ProxyModel::FilterMode) +Q_DECLARE_METATYPE(IconView::Flow) MimeModel::MimeModel(QObject *parent) : QStringListModel(parent) @@ -388,10 +390,9 @@ m_sortColumn = cg.readEntry("sortColumn", int(KDirModel::Name)); m_sortOrder = sortOrderStringToEnum(cg.readEntry("sortOrder", "ascending")); m_filterFiles = cg.readEntry("filterFiles", "*"); - m_filterType = cg.readEntry("filter", 0); + m_filterType = static_cast<ProxyModel::FilterMode>(cg.readEntry("filter", 0)); m_filterFilesMimeList = cg.readEntry("mimeFilter", QStringList()); m_blankLabel = cg.readEntry("blankLabel", false); - m_userSelectedShowAllFiles = m_filterType; m_showSelectionMarker = KGlobalSettings::singleClick(); if (isContainment()) { @@ -401,7 +402,7 @@ } m_flow = static_cast<IconView::Flow>(cg.readEntry("flow", static_cast<int>(m_flow))); - m_model->setFilterMode(ProxyModel::filterModeFromInt(m_filterType)); + m_model->setFilterMode(m_filterType); m_model->setMimeTypeFilterList(m_filterFilesMimeList); m_model->setFileNameFilter(m_filterFiles); m_model->setSortDirectoriesFirst(m_sortDirsFirst); @@ -573,15 +574,13 @@ m_flow = static_cast<IconView::Flow>(flow); } - const int filterType = cg.readEntry("filter", m_filterType); + const ProxyModel::FilterMode filterType = static_cast<ProxyModel::FilterMode>(cg.readEntry("filter", static_cast<int>(m_filterType))); if (filterType != m_filterType) { m_filterType = filterType; - m_model->setFilterMode(ProxyModel::filterModeFromInt(m_filterType)); + m_model->setFilterMode(m_filterType); needReload = true; } - m_userSelectedShowAllFiles = m_filterType; - const QString filterFiles = cg.readEntry("filterFiles", m_filterFiles); if (filterFiles != m_filterFiles) { m_filterFiles = filterFiles; @@ -752,10 +751,14 @@ uiDisplay.sortCombo->addItem(KGlobal::locale()->removeAcceleratorMarker(m_actionCollection.action("sort_type")->text()), KDirModel::Type); uiDisplay.sortCombo->addItem(KGlobal::locale()->removeAcceleratorMarker(m_actionCollection.action("sort_date")->text()), KDirModel::ModifiedTime); - uiDisplay.flowCombo->addItem(i18n("Top to Bottom, Left to Right"), IconView::TopToBottom); - uiDisplay.flowCombo->addItem(i18n("Top to Bottom, Right to Left"), IconView::TopToBottomRightToLeft); - uiDisplay.flowCombo->addItem(i18n("Left to Right, Top to Bottom"), IconView::LeftToRight); - uiDisplay.flowCombo->addItem(i18n("Right to Left, Top to Bottom"), IconView::RightToLeft); + uiDisplay.flowCombo->addItem(i18n("Top to Bottom, Left to Right"), QVariant::fromValue(IconView::TopToBottom)); + uiDisplay.flowCombo->addItem(i18n("Top to Bottom, Right to Left"), QVariant::fromValue(IconView::TopToBottomRightToLeft)); + uiDisplay.flowCombo->addItem(i18n("Left to Right, Top to Bottom"), QVariant::fromValue(IconView::LeftToRight)); + uiDisplay.flowCombo->addItem(i18n("Right to Left, Top to Bottom"), QVariant::fromValue(IconView::RightToLeft)); + + uiFilter.filterCombo->addItem(i18n("Show All Files"), QVariant::fromValue(ProxyModel::NoFilter)); + uiFilter.filterCombo->addItem(i18n("Show Files Matching"), QVariant::fromValue(ProxyModel::FilterShowMatches)); + uiFilter.filterCombo->addItem(i18n("Hide Files Matching"), QVariant::fromValue(ProxyModel::FilterHideMatches)); uiDisplay.alignToGrid->setChecked(m_alignToGrid); uiDisplay.clickToView->setChecked(m_clickToView); @@ -774,12 +777,21 @@ } for (int i = 0; i < uiDisplay.flowCombo->maxCount(); i++) { - if (m_flow == uiDisplay.flowCombo->itemData(i).toInt()) { + if (m_flow == uiDisplay.flowCombo->itemData(i).value<IconView::Flow>()) { uiDisplay.flowCombo->setCurrentIndex(i); break; } } + for (int i = 0; i < uiFilter.filterCombo->maxCount(); i++) { + if (m_filterType == uiFilter.filterCombo->itemData(i).value<ProxyModel::FilterMode>()) { + uiFilter.filterCombo->setCurrentIndex(i); + break; + } + } + + filterChanged(uiFilter.filterCombo->currentIndex()); + // Hide the icon arrangement controls when we're not acting as a containment, // since this option doesn't make much sense in the applet. if (!isContainment()) { @@ -797,25 +809,18 @@ connect(parent, SIGNAL(okClicked()), this, SLOT(configAccepted())); connect(uiLocation.showPlace, SIGNAL(toggled(bool)), uiLocation.placesCombo, SLOT(setEnabled(bool))); connect(uiLocation.showCustomFolder, SIGNAL(toggled(bool)), uiLocation.lineEdit, SLOT(setEnabled(bool))); - connect(uiFilter.filterType, SIGNAL(currentIndexChanged(int)), this, SLOT(filterChanged(int))); - connect(uiFilter.selectAll, SIGNAL(clicked(bool)), this, SLOT(selectUnselectAll())); - connect(uiFilter.deselectAll, SIGNAL(clicked(bool)), this, SLOT(selectUnselectAll())); + connect(uiFilter.filterCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(filterChanged(int))); + connect(uiFilter.selectAll, SIGNAL(clicked(bool)), this, SLOT(selectAllMimetypes())); + connect(uiFilter.deselectAll, SIGNAL(clicked(bool)), this, SLOT(deselectAllMimeTypes())); connect(uiDisplay.previewsAdvanced, SIGNAL(clicked()), this, SLOT(showPreviewConfigDialog())); connect(uiDisplay.showPreviews, SIGNAL(toggled(bool)), uiDisplay.previewsAdvanced, SLOT(setEnabled(bool))); - KConfigGroup cg = config(); - const int filter = cg.readEntry("filter", 0); - uiFilter.filterType->setCurrentIndex(filter); - filterChanged(filter); - - QStringList selectedItems = cg.readEntry("mimeFilter", QStringList()); - - if (selectedItems.count()) { + if (m_filterFilesMimeList.count()) { for (int i = 0; i < pMimeModel->rowCount(); i++) { const QModelIndex index = pMimeModel->index(i, 0); const KMimeType *mime = static_cast<KMimeType*>(pMimeModel->mapToSource(index).internalPointer()); - if (mime && selectedItems.contains(mime->name())) { - selectedItems.removeAll(mime->name()); + if (mime && m_filterFilesMimeList.contains(mime->name())) { + m_filterFilesMimeList.removeAll(mime->name()); uiFilter.filterFilesList->model()->setData(index, Qt::Checked, Qt::CheckStateRole); } } @@ -833,7 +838,7 @@ connect(uiDisplay.colorButton, SIGNAL(changed(QColor)), parent, SLOT(settingsModified())); connect(uiDisplay.drawShadows, SIGNAL(toggled(bool)), parent, SLOT(settingsModified())); - connect(uiFilter.filterType, SIGNAL(currentIndexChanged(int)), parent, SLOT(settingsModified())); + connect(uiFilter.filterCombo, SIGNAL(currentIndexChanged(int)), parent, SLOT(settingsModified())); connect(uiFilter.filterFilesPattern, SIGNAL(textChanged(QString)), parent, SLOT(settingsModified())); connect(uiFilter.filterFilesList->model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), parent, SLOT(settingsModified())); @@ -893,8 +898,8 @@ const int sortColumn = uiDisplay.sortCombo->itemData(uiDisplay.sortCombo->currentIndex()).toInt(); cg.writeEntry("sortColumn", sortColumn); - const int flow = uiDisplay.flowCombo->itemData(uiDisplay.flowCombo->currentIndex()).toInt(); - cg.writeEntry("flow", flow); + const IconView::Flow flow = uiDisplay.flowCombo->itemData(uiDisplay.flowCombo->currentIndex()).value<IconView::Flow>(); + cg.writeEntry("flow", static_cast<int>(flow)); cg.writeEntry("alignToGrid", uiDisplay.alignToGrid->isChecked()); cg.writeEntry("clickForFolderPreviews", uiDisplay.clickToView->isChecked()); @@ -905,7 +910,10 @@ cg.writeEntry("url", url); cg.writeEntry("filterFiles", uiFilter.filterFilesPattern->text()); - cg.writeEntry("filter", uiFilter.filterType->currentIndex()); + + const ProxyModel::FilterMode filterMode = + uiFilter.filterCombo->itemData(uiFilter.filterCombo->currentIndex()).value<ProxyModel::FilterMode>(); + cg.writeEntry("filter", static_cast<int>(filterMode)); // Now, we have to iterate over all items (not only the filtered ones). For that reason we have // to ask the source model, not the proxy model. @@ -1866,22 +1874,31 @@ void FolderView::filterChanged(int index) { - uiFilter.filterFilesPattern->setEnabled(index != 0); - uiFilter.searchMimetype->setEnabled(index != 0); - uiFilter.filterFilesList->setEnabled(index != 0); - uiFilter.selectAll->setEnabled(index != 0); - uiFilter.deselectAll->setEnabled(index != 0); - if ((index != 0) && (m_userSelectedShowAllFiles == 0)) { - for (int i = 0; i < uiFilter.filterFilesList->model()->rowCount(); i++) { - const QModelIndex index = uiFilter.filterFilesList->model()->index(i, 0); - uiFilter.filterFilesList->model()->setData(index, Qt::Checked, Qt::CheckStateRole); - } + const ProxyModel::FilterMode filterMode = uiFilter.filterCombo->itemData(index).value<ProxyModel::FilterMode>(); + const bool filterActive = (filterMode != ProxyModel::NoFilter); + + uiFilter.filterFilesPattern->setEnabled(filterActive); + uiFilter.searchMimetype->setEnabled(filterActive); + uiFilter.filterFilesList->setEnabled(filterActive); + uiFilter.selectAll->setEnabled(filterActive); + uiFilter.deselectAll->setEnabled(filterActive); + if (filterActive) { + selectAllMimetypes(); } } -void FolderView::selectUnselectAll() +void FolderView::selectAllMimetypes() +{ + toggleAllMimetypes(Qt::Checked); +} + +void FolderView::deselectAllMimeTypes() +{ + toggleAllMimetypes(Qt::Unchecked); +} + +void FolderView::toggleAllMimetypes(Qt::CheckState state) { - Qt::CheckState state = sender() == uiFilter.selectAll ? Qt::Checked : Qt::Unchecked; for (int i = 0; i < uiFilter.filterFilesList->model()->rowCount(); i++) { const QModelIndex index = uiFilter.filterFilesList->model()->index(i, 0); uiFilter.filterFilesList->model()->setData(index, state, Qt::CheckStateRole); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/plasma/applets/folderview/folderview.h new/kde-baseapps-4.10.2/plasma/applets/folderview/folderview.h --- old/kde-baseapps-4.10.1/plasma/applets/folderview/folderview.h 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/plasma/applets/folderview/folderview.h 2013-03-29 08:01:18.000000000 +0100 @@ -36,6 +36,7 @@ #include "iconview.h" #include "dirlister.h" +#include "proxymodel.h" #include "ui_folderviewFilterConfig.h" #include "ui_folderviewDisplayConfig.h" @@ -140,7 +141,8 @@ void configAccepted(); void filterChanged(int index); - void selectUnselectAll(); + void selectAllMimetypes(); + void deselectAllMimeTypes(); void fontSettingsChanged(); void iconSettingsChanged(int group); void clickSettingsChanged(int category); @@ -171,6 +173,7 @@ void timerEvent(QTimerEvent *event); void recreateLayout(); void setAppletTitle(); + void toggleAllMimetypes(Qt::CheckState); private: KFileItemDelegate *m_delegate; @@ -189,7 +192,7 @@ KUrl m_url; QColor m_textColor; QString m_titleText; - int m_filterType; + ProxyModel::FilterMode m_filterType; QString m_filterFiles; QStringList m_filterFilesMimeList; QPointer<KNewFileMenu> m_newMenu; @@ -209,7 +212,6 @@ bool m_alignToGrid; bool m_clickToView; bool m_showSelectionMarker; - bool m_userSelectedShowAllFiles; bool m_blankLabel; QString m_customLabel; QStringList m_previewPlugins; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/plasma/applets/folderview/folderviewFilterConfig.ui new/kde-baseapps-4.10.2/plasma/applets/folderview/folderviewFilterConfig.ui --- old/kde-baseapps-4.10.1/plasma/applets/folderview/folderviewFilterConfig.ui 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/plasma/applets/folderview/folderviewFilterConfig.ui 2013-03-29 08:01:18.000000000 +0100 @@ -24,7 +24,7 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <widget class="QComboBox" name="filterType"> + <widget class="QComboBox" name="filterCombo"> <property name="toolTip"> <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -36,21 +36,6 @@ <property name="whatsThis"> <string/> </property> - <item> - <property name="text"> - <string>Show All Files</string> - </property> - </item> - <item> - <property name="text"> - <string>Show Files Matching</string> - </property> - </item> - <item> - <property name="text"> - <string>Hide Files Matching</string> - </property> - </item> </widget> </item> <item> @@ -201,11 +186,6 @@ <extends>QLineEdit</extends> <header>klineedit.h</header> </customwidget> - <customwidget> - <class>KComboBox</class> - <extends>QComboBox</extends> - <header>kcombobox.h</header> - </customwidget> </customwidgets> <includes> <include location="global">KDE/KUrlRequester</include> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/plasma/applets/folderview/proxymodel.cpp new/kde-baseapps-4.10.2/plasma/applets/folderview/proxymodel.cpp --- old/kde-baseapps-4.10.1/plasma/applets/folderview/proxymodel.cpp 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/plasma/applets/folderview/proxymodel.cpp 2013-03-29 08:01:18.000000000 +0100 @@ -226,18 +226,6 @@ return QString::compare(leftItem.url().url(), rightItem.url().url(), Qt::CaseSensitive); } -ProxyModel::FilterMode ProxyModel::filterModeFromInt(int filterMode) -{ - switch (filterMode) { - case 0: - return ProxyModel::NoFilter; - case 1: - return ProxyModel::FilterShowMatches; - default: - return ProxyModel::FilterHideMatches; - } -} - inline bool ProxyModel::matchMimeType(const KFileItem &item) const { if (m_mimeSet.isEmpty()) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kde-baseapps-4.10.1/plasma/applets/folderview/proxymodel.h new/kde-baseapps-4.10.2/plasma/applets/folderview/proxymodel.h --- old/kde-baseapps-4.10.1/plasma/applets/folderview/proxymodel.h 2013-03-01 07:36:06.000000000 +0100 +++ new/kde-baseapps-4.10.2/plasma/applets/folderview/proxymodel.h 2013-03-29 08:01:18.000000000 +0100 @@ -61,8 +61,6 @@ bool isDir(const QModelIndex &index, const KDirModel *dirModel) const; bool lessThan(const QModelIndex &left, const QModelIndex &right) const; - static FilterMode filterModeFromInt(int filterMode); - protected: bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; bool matchMimeType(const KFileItem &item) const; -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org