From 7af39fb960352e0504153c627db0615d80758ebe Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sun, 5 Feb 2012 19:14:17 +0100 Subject: Fix potential endless loop in layout Usecase: - No scrollbar is shown - Window size will be decreased so that a scrollbar gets necessary The decreased window size minus the space required for the scrollbar results in a relayout of the items. In 99 % of all cases a decreased window size won't result in showing more items in parallel in comparison to a larger window size. However in the remaining 1 % this can happen (e.g. see bug 293318 for a sample). This results in an endless loop as now no scrollbar is required anymore, the layout changes again, the scrollbar is required again, ... BUG: 293318 FIXED-IN: 4.8.1 --- src/kitemviews/kitemlistview.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/kitemviews/kitemlistview.h') diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index 9c34daba3..e675df221 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -461,6 +461,13 @@ private: */ bool animateChangedItemCount(int changedItemCount) const; + /** + * @return True if a scrollbar for the given scroll-orientation is required + * when using a size of \p size for the view. Calling the method is rather + * expansive as a temporary relayout needs to be done. + */ + bool scrollBarRequired(const QSizeF& size) const; + /** * Helper function for triggerAutoScrolling(). * @param pos Logical position of the mouse relative to the range. @@ -512,6 +519,7 @@ private: KItemListHeader* m_header; bool m_useHeaderWidths; + friend class KItemListContainer; // Accesses scrollBarRequired() friend class KItemListController; friend class KItemListControllerTest; }; -- cgit v1.3