From d9e1db6ea448c462b5c8497b198fb3fc8ecb1acd Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Tue, 20 Dec 2011 22:20:20 +0100 Subject: Remove child items when a parent item gets deleted BUG: 289447 FIXED-IN: 4.8.0 --- src/kitemviews/kfileitemmodel.cpp | 29 +++++++++++++++++++++++++++-- src/kitemviews/kfileitemmodel.h | 5 +++++ 2 files changed, 32 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index 748a9bae1..8e1943b4b 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -719,13 +719,21 @@ void KFileItemModel::slotItemsDeleted(const KFileItemList& items) { dispatchPendingItemsToInsert(); - if (!m_filteredItems.isEmpty()) { + KFileItemList itemsToRemove = items; + if (m_requestRole[ExpansionLevelRole] && m_rootExpansionLevel >= 0) { + // Assure that removing a parent item also results in removing all children foreach (const KFileItem& item, items) { + itemsToRemove.append(childItems(item)); + } + } + + if (!m_filteredItems.isEmpty()) { + foreach (const KFileItem& item, itemsToRemove) { m_filteredItems.remove(item); } } - removeItems(items); + removeItems(itemsToRemove); } void KFileItemModel::slotRefreshItems(const QList >& items) @@ -1849,4 +1857,21 @@ QList > KFileItemModel::genericStringRoleGroups(const QByte return groups; } +KFileItemList KFileItemModel::childItems(const KFileItem& item) const +{ + KFileItemList items; + + int index = m_items.value(item.url(), -1); + if (index >= 0) { + const int parentLevel = m_itemData.at(index)->values.value("expansionLevel").toInt(); + ++index; + while (index < m_itemData.count() && m_itemData.at(index)->values.value("expansionLevel").toInt() > parentLevel) { + items.append(m_itemData.at(index)->item); + ++index; + } + } + + return items; +} + #include "kfileitemmodel.moc" diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h index 0a68afcfc..2992de065 100644 --- a/src/kitemviews/kfileitemmodel.h +++ b/src/kitemviews/kfileitemmodel.h @@ -306,6 +306,11 @@ private: */ bool isChildItem(int index) const; + /** + * @return Recursive list of child items that have \a item as upper most parent. + */ + KFileItemList childItems(const KFileItem& item) const; + private: QWeakPointer m_dirLister; -- cgit v1.3 From e71bdb0cf624b4fb4ed2ffb37f306f4b78e2aab8 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Tue, 20 Dec 2011 23:05:20 +0100 Subject: Fix autoscroll issue when selecting items If items get selected with the rubberband the scroll offset must stay inside the visible range. BUG: 282353 FIXED-IN: 4.8.0 --- src/kitemviews/kitemlistview.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 20a5f4847..42445dcfe 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -1170,7 +1170,9 @@ void KItemListView::triggerAutoScrolling() // the autoscrolling may not get skipped anymore until a new rubberband is created m_skipAutoScrollForRubberBand = false; - setScrollOffset(scrollOffset() + m_autoScrollIncrement); + const qreal maxVisibleOffset = qMax(qreal(0), maximumScrollOffset() - visibleSize); + const qreal newScrollOffset = qMin(scrollOffset() + m_autoScrollIncrement, maxVisibleOffset); + setScrollOffset(newScrollOffset); // Trigger the autoscroll timer which will periodically call // triggerAutoScrolling() -- cgit v1.3 From 050e094e6b2ecd3c5ff4cc809d4ce3eedc61f3b8 Mon Sep 17 00:00:00 2001 From: Script Kiddy Date: Wed, 21 Dec 2011 09:54:51 +0100 Subject: SVN_SILENT made messages (.desktop file) --- src/dolphinpart.desktop | 3 ++- src/settings/kcm/kcmdolphingeneral.desktop | 1 + src/settings/kcm/kcmdolphinnavigation.desktop | 1 + src/settings/kcm/kcmdolphinservices.desktop | 3 ++- src/settings/kcm/kcmdolphinviewmodes.desktop | 1 + 5 files changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/dolphinpart.desktop b/src/dolphinpart.desktop index ca13c517e..3e3f5487c 100644 --- a/src/dolphinpart.desktop +++ b/src/dolphinpart.desktop @@ -185,8 +185,8 @@ Name[uz]=Nishonchalar Name[uz@cyrillic]=Нишончалар Name[vi]=Biểu tượng Name[wa]=Imådjetes -Name[xh]=Imphawu zemmifanekiso Name[x-test]=xxIconsxx +Name[xh]=Imphawu zemmifanekiso Name[zh_CN]=图标 Name[zh_TW]=圖示 Icon=view-list-icons @@ -199,6 +199,7 @@ Name[ca]=Compacte Name[da]=Kompakt Name[de]=Kompakt Name[es]=Compacta +Name[et]=Kompaktne Name[fi]=Tiivis Name[hu]=Kompakt Name[ia]=Compacte diff --git a/src/settings/kcm/kcmdolphingeneral.desktop b/src/settings/kcm/kcmdolphingeneral.desktop index 9784e6a97..18b862ab8 100644 --- a/src/settings/kcm/kcmdolphingeneral.desktop +++ b/src/settings/kcm/kcmdolphingeneral.desktop @@ -296,6 +296,7 @@ X-KDE-Keywords[ca]=gestor de fitxers X-KDE-Keywords[cs]=správce souborů X-KDE-Keywords[da]=filhåndtering X-KDE-Keywords[de]=Dateimanager +X-KDE-Keywords[et]=failihaldur X-KDE-Keywords[fi]=tiedostonhallinta X-KDE-Keywords[hu]=fájlkezelő X-KDE-Keywords[ia]=gerente de file diff --git a/src/settings/kcm/kcmdolphinnavigation.desktop b/src/settings/kcm/kcmdolphinnavigation.desktop index a0dbe97ac..285698eec 100644 --- a/src/settings/kcm/kcmdolphinnavigation.desktop +++ b/src/settings/kcm/kcmdolphinnavigation.desktop @@ -296,6 +296,7 @@ X-KDE-Keywords[ca]=gestor de fitxers X-KDE-Keywords[cs]=správce souborů X-KDE-Keywords[da]=filhåndtering X-KDE-Keywords[de]=Dateimanager +X-KDE-Keywords[et]=failihaldur X-KDE-Keywords[fi]=tiedostonhallinta X-KDE-Keywords[hu]=fájlkezelő X-KDE-Keywords[ia]=gerente de file diff --git a/src/settings/kcm/kcmdolphinservices.desktop b/src/settings/kcm/kcmdolphinservices.desktop index c18bfb2d5..1bc663935 100644 --- a/src/settings/kcm/kcmdolphinservices.desktop +++ b/src/settings/kcm/kcmdolphinservices.desktop @@ -168,8 +168,8 @@ Name[uz]=Xizmatlar Name[uz@cyrillic]=Хизматлар Name[vi]=Dịch vụ Name[wa]=Siervices -Name[xh]=Iinkonzo Name[x-test]=xxServicesxx +Name[xh]=Iinkonzo Name[zh_CN]=服务 Name[zh_TW]=服務 Comment=Configure file manager services @@ -247,6 +247,7 @@ X-KDE-Keywords[ca]=gestor de fitxers X-KDE-Keywords[cs]=správce souborů X-KDE-Keywords[da]=filhåndtering X-KDE-Keywords[de]=Dateimanager +X-KDE-Keywords[et]=failihaldur X-KDE-Keywords[fi]=tiedostonhallinta X-KDE-Keywords[hu]=fájlkezelő X-KDE-Keywords[ia]=gerente de file diff --git a/src/settings/kcm/kcmdolphinviewmodes.desktop b/src/settings/kcm/kcmdolphinviewmodes.desktop index 0d7ae4a57..7e16b2e36 100644 --- a/src/settings/kcm/kcmdolphinviewmodes.desktop +++ b/src/settings/kcm/kcmdolphinviewmodes.desktop @@ -294,6 +294,7 @@ X-KDE-Keywords[ca]=gestor de fitxers X-KDE-Keywords[cs]=správce souborů X-KDE-Keywords[da]=filhåndtering X-KDE-Keywords[de]=Dateimanager +X-KDE-Keywords[et]=failihaldur X-KDE-Keywords[fi]=tiedostonhallinta X-KDE-Keywords[hu]=fájlkezelő X-KDE-Keywords[ia]=gerente de file -- cgit v1.3