From: Nate Graham Date: Thu, 5 Oct 2023 15:15:35 +0000 (-0600) Subject: Merge branch 'master' into kf6 X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/30a807e44afb334dd153c8bcbdbde4f36942bee0?hp=-c Merge branch 'master' into kf6 --- 30a807e44afb334dd153c8bcbdbde4f36942bee0 diff --combined src/kitemviews/kitemlistview.cpp index d43438c30,457c02ec5..659e59f0f --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@@ -50,9 -50,14 +50,14 @@@ QAccessibleInterface *accessibleInterfa Q_UNUSED(key) if (KItemListContainer *container = qobject_cast(object)) { + if (auto controller = container->controller(); controller) { + if (KItemListView *view = controller->view(); view && view->accessibleParent()) { + return view->accessibleParent(); + } + } return new KItemListContainerAccessible(container); } else if (KItemListView *view = qobject_cast(object)) { - return new KItemListViewAccessible(view); + return new KItemListViewAccessible(view, view->accessibleParent()); } return nullptr; @@@ -231,7 -236,7 +236,7 @@@ void KItemListView::setVisibleRoles(con if (!m_headerWidget->automaticColumnResizing()) { // The column-width of new roles are still 0. Apply the preferred // column-width as default with. - for (const QByteArray &role : qAsConst(m_visibleRoles)) { + for (const QByteArray &role : std::as_const(m_visibleRoles)) { if (m_headerWidget->columnWidth(role) == 0) { const qreal width = m_headerWidget->preferredColumnWidth(role); m_headerWidget->setColumnWidth(role, width); @@@ -337,6 -342,19 +342,19 @@@ KItemListGroupHeaderCreatorBase *KItemL return m_groupHeaderCreator; } + #ifndef QT_NO_ACCESSIBILITY + void KItemListView::setAccessibleParentsObject(KItemListContainer *accessibleParentsObject) + { + Q_ASSERT(!m_accessibleParent); + m_accessibleParent = new KItemListContainerAccessible(accessibleParentsObject); + } + KItemListContainerAccessible *KItemListView::accessibleParent() + { + Q_CHECK_PTR(m_accessibleParent); // We always want the accessibility tree/hierarchy to be complete. + return m_accessibleParent; + } + #endif + QSizeF KItemListView::itemSize() const { return m_itemSize; @@@ -669,7 -687,7 +687,7 @@@ void KItemListView::paint(QPainter *pai { QGraphicsWidget::paint(painter, option, widget); - for (auto animation : qAsConst(m_rubberBandAnimations)) { + for (auto animation : std::as_const(m_rubberBandAnimations)) { QRectF rubberBandRect = animation->property(RubberPropertyName).toRectF(); const QPointF topLeft = rubberBandRect.topLeft(); @@@ -1046,9 -1064,12 +1064,9 @@@ void KItemListView::updateFont( void KItemListView::updatePalette() { - if (scene() && !scene()->views().isEmpty()) { - KItemListStyleOption option = styleOption(); - option.palette = scene()->views().first()->palette(); - - setStyleOption(option); - } + KItemListStyleOption option = styleOption(); + option.palette = palette(); + setStyleOption(option); } void KItemListView::slotItemsInserted(const KItemRangeList &itemRanges) @@@ -1232,7 -1253,7 +1250,7 @@@ void KItemListView::slotItemsRemoved(co // after the deleted items. It is important to update them in ascending // order to prevent overlaps when setting the new index. std::sort(itemsToMove.begin(), itemsToMove.end()); - for (int i : qAsConst(itemsToMove)) { + for (int i : std::as_const(itemsToMove)) { KItemListWidget *widget = m_visibleItems.value(i); Q_ASSERT(widget); const int newIndex = i - count; @@@ -1858,7 -1879,7 +1876,7 @@@ void KItemListView::doLayout(LayoutAnim } // Delete invisible KItemListWidget instances that have not been reused - for (int index : qAsConst(reusableItems)) { + for (int index : std::as_const(reusableItems)) { recycleWidget(m_visibleItems.value(index)); } @@@ -2234,7 -2255,7 +2252,7 @@@ QHash KItemListView: const QFontMetricsF fontMetrics(m_headerWidget->font()); const int gripMargin = m_headerWidget->style()->pixelMetric(QStyle::PM_HeaderGripMargin); const int headerMargin = m_headerWidget->style()->pixelMetric(QStyle::PM_HeaderMargin); - for (const QByteArray &visibleRole : qAsConst(m_visibleRoles)) { + for (const QByteArray &visibleRole : std::as_const(m_visibleRoles)) { const QString headerText = m_model->roleDescription(visibleRole); const qreal headerWidth = fontMetrics.horizontalAdvance(headerText) + gripMargin + headerMargin * 2; widths.insert(visibleRole, headerWidth); @@@ -2250,7 -2271,7 +2268,7 @@@ const int endIndex = startIndex + itemRange.count - 1; for (int i = startIndex; i <= endIndex; ++i) { - for (const QByteArray &visibleRole : qAsConst(m_visibleRoles)) { + for (const QByteArray &visibleRole : std::as_const(m_visibleRoles)) { qreal maxWidth = widths.value(visibleRole, 0); const qreal width = creator->preferredRoleColumnWidth(visibleRole, i, this); maxWidth = qMax(width, maxWidth); @@@ -2291,7 -2312,7 +2309,7 @@@ void KItemListView::applyColumnWidthsFr void KItemListView::updateWidgetColumnWidths(KItemListWidget *widget) { - for (const QByteArray &role : qAsConst(m_visibleRoles)) { + for (const QByteArray &role : std::as_const(m_visibleRoles)) { widget->setColumnWidth(role, m_headerWidget->columnWidth(role)); } widget->setSidePadding(m_headerWidget->sidePadding()); @@@ -2308,7 -2329,7 +2326,7 @@@ void KItemListView::updatePreferredColu if (itemCount == rangesItemCount) { const QHash preferredWidths = preferredColumnWidths(itemRanges); - for (const QByteArray &role : qAsConst(m_visibleRoles)) { + for (const QByteArray &role : std::as_const(m_visibleRoles)) { m_headerWidget->setPreferredColumnWidth(role, preferredWidths.value(role)); } } else { @@@ -2363,7 -2384,7 +2381,7 @@@ void KItemListView::applyAutomaticColum // size does not use the available view-size the size of the // first role will get stretched. - for (const QByteArray &role : qAsConst(m_visibleRoles)) { + for (const QByteArray &role : std::as_const(m_visibleRoles)) { const qreal preferredWidth = m_headerWidget->preferredColumnWidth(role); m_headerWidget->setColumnWidth(role, preferredWidth); } @@@ -2412,7 -2433,7 +2430,7 @@@ qreal KItemListView::columnWidthsSum() const { qreal widthsSum = 0; - for (const QByteArray &role : qAsConst(m_visibleRoles)) { + for (const QByteArray &role : std::as_const(m_visibleRoles)) { widthsSum += m_headerWidget->columnWidth(role); } return widthsSum; diff --combined src/kitemviews/kitemlistviewaccessible.cpp index 8df0b0196,38c883efe..a8d80ab52 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@@ -21,16 -21,18 +21,18 @@@ KItemListView *KItemListViewAccessible: return qobject_cast(object()); } - KItemListViewAccessible::KItemListViewAccessible(KItemListView *view_) + KItemListViewAccessible::KItemListViewAccessible(KItemListView *view_, KItemListContainerAccessible *parent) : QAccessibleObject(view_) + , m_parent(parent) { Q_ASSERT(view()); + Q_CHECK_PTR(parent); m_cells.resize(childCount()); } KItemListViewAccessible::~KItemListViewAccessible() { - for (AccessibleIdWrapper idWrapper : qAsConst(m_cells)) { + for (AccessibleIdWrapper idWrapper : std::as_const(m_cells)) { if (idWrapper.isValid) { QAccessible::deleteAccessibleInterface(idWrapper.id); } @@@ -208,8 -210,7 +210,7 @@@ QAccessibleInterface *KItemListViewAcce QAccessibleInterface *KItemListViewAccessible::parent() const { - // FIXME: return KItemListContainerAccessible here - return nullptr; + return m_parent; } int KItemListViewAccessible::childCount() const diff --combined src/tests/kitemlistcontrollertest.cpp index ac2110c0f,9d345fdd9..f462947c6 --- a/src/tests/kitemlistcontrollertest.cpp +++ b/src/tests/kitemlistcontrollertest.cpp @@@ -109,6 -109,9 +109,9 @@@ void KItemListControllerTest::initTestC m_view = new KFileItemListView(); m_controller = new KItemListController(m_model, m_view, this); m_container = new KItemListContainer(m_controller); + #ifndef QT_NO_ACCESSIBILITY + m_view->setAccessibleParentsObject(m_container); + #endif m_controller = m_container->controller(); m_controller->setSelectionBehavior(KItemListController::MultiSelection); m_selectionManager = m_controller->selectionManager(); @@@ -292,9 -295,9 +295,9 @@@ void KItemListControllerTest::testKeybo break; } - for (int columnCount : qAsConst(columnCountList)) { - for (const KItemListController::SelectionBehavior &selectionBehavior : qAsConst(selectionBehaviorList)) { - for (bool groupingEnabled : qAsConst(groupingEnabledList)) { + for (int columnCount : std::as_const(columnCountList)) { + for (const KItemListController::SelectionBehavior &selectionBehavior : std::as_const(selectionBehaviorList)) { + for (bool groupingEnabled : std::as_const(groupingEnabledList)) { QList> testList; // First, key presses which should have the same effect diff --combined src/views/dolphinview.cpp index e27f423f6,d8eab142d..5bdc9e15f --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@@ -35,7 -35,7 +35,7 @@@ #include #include #include -#include +#include #include #include #include @@@ -49,6 -49,9 +49,6 @@@ #include -#include -#include - #include #include #include @@@ -126,6 -129,9 +126,9 @@@ DolphinView::DolphinView(const QUrl &ur m_container = new KItemListContainer(controller, this); m_container->installEventFilter(this); + #ifndef QT_NO_ACCESSIBILITY + m_view->setAccessibleParentsObject(m_container); + #endif setFocusProxy(m_container); connect(m_container->horizontalScrollBar(), &QScrollBar::valueChanged, this, [=] { hideToolTip(); @@@ -623,7 -629,7 +626,7 @@@ void DolphinView::requestStatusBarText( return; } - m_statJobForStatusBarText = KIO::statDetails(m_model->rootItem().url(), KIO::StatJob::SourceSide, KIO::StatRecursiveSize, KIO::HideProgressInfo); + m_statJobForStatusBarText = KIO::stat(m_model->rootItem().url(), KIO::StatJob::SourceSide, KIO::StatRecursiveSize, KIO::HideProgressInfo); connect(m_statJobForStatusBarText, &KJob::result, this, &DolphinView::slotStatJobResult); m_statJobForStatusBarText->start(); }