]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Merge branch 'master' into kf6
authorNate Graham <nate@kde.org>
Thu, 5 Oct 2023 15:15:35 +0000 (09:15 -0600)
committerNate Graham <nate@kde.org>
Thu, 5 Oct 2023 15:15:35 +0000 (09:15 -0600)
1  2 
src/kitemviews/kitemlistview.cpp
src/kitemviews/kitemlistviewaccessible.cpp
src/tests/kitemlistcontrollertest.cpp
src/views/dolphinview.cpp

index d43438c30026409a6cdb817c253c360c35a359ea,457c02ec5f5253f70f504ee50b76384aa7b8ec52..659e59f0f40e7fb9794aebd1f491f042110f0e2c
@@@ -50,9 -50,14 +50,14 @@@ QAccessibleInterface *accessibleInterfa
      Q_UNUSED(key)
  
      if (KItemListContainer *container = qobject_cast<KItemListContainer *>(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<KItemListView *>(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<QByteArray, qreal> 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);
          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<QByteArray, qreal> 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);
      }
  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;
index 8df0b0196eedc818078bdbfced6cf1f33e091cb1,38c883efec52da321e9d4fd52563304e84cc2d65..a8d80ab52baa039b63533f28b83ba62e35cc9610
@@@ -21,16 -21,18 +21,18 @@@ KItemListView *KItemListViewAccessible:
      return qobject_cast<KItemListView *>(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
index ac2110c0fcd49b76cde6c894a30d1515e0afadd5,9d345fdd96995465b91fda46ddef69688626eb87..f462947c6d667e45629073fb69fd545c3865ff4d
@@@ -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<QPair<KeyPress, ViewState>> testList;
  
                      // First, key presses which should have the same effect
index e27f423f6b79c2a2f863f79f921696b30b2d6218,d8eab142d54f4f37860337893e0089f6bb741bca..5bdc9e15f93ea9856a46218233670b4fef6d7b65
@@@ -35,7 -35,7 +35,7 @@@
  #include <KFileItemListProperties>
  #include <KFormat>
  #include <KIO/CopyJob>
 -#include <KIO/DeleteJob>
 +#include <KIO/DeleteOrTrashJob>
  #include <KIO/DropJob>
  #include <KIO/JobUiDelegate>
  #include <KIO/Paste>
@@@ -49,6 -49,9 +49,6 @@@
  
  #include <kwidgetsaddons_version.h>
  
 -#include <KIO/DeleteOrTrashJob>
 -#include <kio_version.h>
 -
  #include <QAbstractItemView>
  #include <QActionGroup>
  #include <QApplication>
@@@ -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();
      }