summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews/qheaderview.cpp
Commit message (Collapse)AuthorAgeFilesLines
* QHeaderView - fix a logical / visual index mismatchThorbjørn Martsum2015-06-271-1/+1
| | | | | | | | | | | f9408317e70bc2e635a2f9baeff35d1c06227734 was unfortunately approved though it had an annoying bug. The patch had an assign of a visual index into a logical index. This patch fixes that issue. Change-Id: I9cc75e4e9701858c92e2c3e5817415041b42f8e8 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* Improve QHeaderView::sectionsInserted performanceIvan Komissarov2015-05-281-7/+7
| | | | | | | | | Old implementation had complexity O(oldSectionCount); replace it with O(hiddenSectionCount) algorithm. This boosts performance in case of the vertical headers for models with big row count. Change-Id: I7bb02f5579ce83fbdecf5f8c3aa7dcc0ac60dd40 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Update copyright headersJani Heikkinen2015-02-111-7/+7
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* Make it more obvious that Q_WS_ is dead code, and should perhaps be portedTor Arne Vestbø2015-02-031-1/+1
| | | | | | | | | | | | We still have a bunch of Q_WS_ ifdefs in our code, which are easy to mistake for Q_OS_ ifdefs when quickly scanning the code. By renaming the ifdefs we make it clear that the code in question is dead. In incremental follow-ups, we can then selectively either remove, or port, the pieces that are dead code. Change-Id: Ib5ef3e9e0662d321f179f3e25122cacafff0f41f Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QHeaderView: fix restoring Qt4 state.Arnaud Bienner2015-01-201-1/+3
| | | | | | | | When multiple sections were grouped together, sectionItem.size was the total size of grouped sections, not the size of one section. Task-number: QTBUG-40462 Change-Id: I401a1583dd30880ccf5b4c105a237d6563f212e8 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* QHeaderView: check that length is correct during restoreState.Arnaud Bienner2014-12-171-23/+52
| | | | | | | | | | Length is supposed to be equal to the section items length, but the state saved might be corrupted. If so, print a warning, return false and don't restore this corrupted state. Change-Id: I4d3dfec528a65fc81ed70d1c8cc69c11faf414e0 Task-number: QTBUG-40462 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* Make the defaultSectionSize property of QHeaderView style dependentAlexander Volkov2014-12-111-0/+39
| | | | | | | | | | | | | | | Add new enum items PM_HeaderDefaultSectionSizeHorizontal and PM_HeaderDefaultSectionSizeVertical to QStyle and get corresponding values in QHeaderView. This way we get rid of some magic constants in QHeaderView and we can have reasonable values for the default section size for high-DPI displays. [ChangeLog][QtWidgets][QHeaderView] Default section size is now style-dependent by default. [ChangeLog][QtWidgets][QHeaderView] Added resetDefaultSectionSize(). Change-Id: I44e152c5cf0bec1e5d78e1e62f47a2d1f761dfbf Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* Merge remote-tracking branch 'origin/5.4' into devSimon Hausmann2014-12-101-2/+9
|\ | | | | | | | | | | | | | | Conflicts: doc/global/template/style/online.css mkspecs/android-g++/qmake.conf Change-Id: Ib39ea7bd42f5ae12e82a3bc59a66787a16bdfc61
| * QHeaderView: take the sort indicator into account when eliding textGiuseppe D'Angelo2014-12-091-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | By adding PM_HeaderMarkSize to the margins if the section is showing a sort indicator. Turns out that that particular enum was actually unused in QtWidgets (!), so tune the value to match reality. Task-number: QTBUG-629 Change-Id: I8bc70451656d634a064c8b5014e449977c55aa9d Reviewed-by: Cristian Oneț <onet.cristian@gmail.com> Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* | Auto-scroll while selecting entire rows/columns did not workJan Arve Saether2014-11-291-2/+4
|/ | | | | | | | | | | | | | | If you press and hold a section in a header view you can extend the selection to more rows by moving the mouse. This worked fine until you moved the mouse outside the geometry of the header view. The expected behavior was then to scroll the view (this is what happens with extended selections on regular table cells). [ChangeLog][QtWidgets][QHeaderView] Auto-scroll the view when making extended row/column selections. Change-Id: Ic65aa34d370e74054b2123ab57edb1add0e8adb9 Task-number: QTBUG-21201 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* Update license headers and add new license filesMatti Paaso2014-09-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* Fix the drawing of elided text in QHeaderView.Cristian Oneț2014-09-231-1/+2
| | | | | | | | | | The text was not drawn properly because when eliding the text a fixed value '4' was substracted from the rect to compute the available width instead of the actual value of the header margin. Change-Id: I1e110f1a6490679730ddf5815d3ff7b679dc1a47 Task-number: QTBUG-24772 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* Correct information about all headers being movable.Mitch Curtis2014-09-221-3/+0
| | | | | | | | | This only applies to QTreeView. 8eb3d724a92b8eeb1e96362bd6997fcee178af89 introduced this error. Change-Id: Ia8a2c387afbd19e4d98ea6f81e5ce6409d79bcd9 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* Add missing period to QHeaderView documentation.Mitch Curtis2014-09-181-1/+1
| | | | | Change-Id: Ibf3fdb4e1c149b2dbee7bf3043cec9d3e167381d Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Improve documentation regarding moving item view columns.Mitch Curtis2014-09-181-0/+3
| | | | | | | | | The only way I was able to find information on this was through bug reports. Change-Id: Iac59a82fab9c216495860ad3b1efad1125130002 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QHeaderView::restoreState(): Add sanity check.Friedemann Kleint2014-08-061-9/+26
| | | | | | | | Read data into local variables and apply only after a check. Task-number: QTBUG-40462 Change-Id: Id06060d0d5b0eafc2d303526a86d552ff5747a72 Reviewed-by: David Faure <david.faure@kdab.com>
* Account for the sort indicator being placed above the text on VistaAndy Shaw2014-05-261-9/+3
| | | | | | | | | | | In WindowsVista style and later the sort indicator is placed above the text as opposed to alongside it. Therefore the extra space given is moved to the common style allowing styles that have it placed differently to easily ensure it is not included. Task-number: QTBUG-19915 Change-Id: Ic21fcc1d95f4c3cc2eb9c465e1c8afb9b805389a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* QHeaderView - do simple section move/rotate in moveSectionThorbjørn Martsum2014-02-181-42/+19
| | | | | | | | It is in nearly all cases much faster (in our benchmark it is about a factor 8) - and it also makes the code more readable. Change-Id: I075e1d1a96756e5e9a2bf53b5479094f7d87883d Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QHeaderView - move ishidden into the sectionThorbjørn Martsum2013-12-021-53/+25
| | | | | | | | | | | | Since we already have the section there is no need to have an extra structure. It simplifies the code itself and the code is overall more efficient. The benchmark seems to show overall performance increasement various places (e.g insert, swapSection). Change-Id: I623453b69a9a830908e8d9d5f3816ccebe073c9f Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QHeaderView - do not ignore -1 as minimum section sizeThorbjørn Martsum2013-11-171-1/+1
| | | | | | | | | We claim that -1 is a special automatic value, but calling setMinimumSectionSize with -1 is unfortunately ignored due a regression in 524c3e05e811d81fbcd71eedb377b7eaa0a21ef3 Change-Id: I7d7e5dbbf78e561849d2f2352c9edb2df36aa181 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QHeaderView - remove confusing boolThorbjørn Martsum2013-11-081-6/+1
| | | | | | | | | | It is probably better not to have a default boolean in QHeaderView::setResizeContentsPrecision Task-number: QTBUG-34665 Change-Id: I0bb2c35abc1d5713bb3ee65df3af86c04f175a38 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Don't rely on the Qt version when reading a QHeaderView state streamAndy Shaw2013-10-121-4/+5
| | | | | | | | | | Since the datastream version is not set in previous versions of Qt when streaming the state of the QHeaderView then we cannot rely on this when adding new data to the state. Therefore we check if we read past the end before assigning to the new variable. Change-Id: I7128ffc91e47f9c8797cfa24d206a789d2814908 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* Doc: Adding mark-up to boolean default values.Jerome Pasion2013-10-081-8/+8
| | | | | | | | | | | | | | | | | Default values should have mark-up to denote that they are code. This commit changes: -"property is true" to "property is \c true". -"Returns true" to "Returns \c true". -"property is false" to "property is \c false". -"returns true" to "returns \c true". -"returns false" to "returns \c false". src/3rdparty and non-documentation instances were ignored. Task-number: QTBUG-33360 Change-Id: Ie87eaa57af947caa1230602b61c5c46292a4cf4e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* QHeaderView - add maximum section sizeThorbjørn Martsum2013-09-021-3/+47
| | | | | | | | | | | | | | | When we auto resize it is handy to be able to limit the maximum size (just like the minimum size). [ChangeLog][QtWidgets][QHeaderView]A maximumSize for sections has been introduced. The maximum section size is by default the largest possible section size which in Qt 5.2 has been limited to 1048575 pixels. Task-number: QTBUG-4346 Change-Id: Ida9cbcc11bd5c4498e319df2e6379c69a7033c04 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-211-3/+21
|\ | | | | | | | | | | | | | | | | Conflicts: qmake/doc/src/qmake-manual.qdoc src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/src.pro Change-Id: I0a560826c420e46988da3776bd8f9160c365459a
| * QHeaderView::paintSection(): fix visible index handlingJ-P Nurmi2013-08-151-3/+21
| | | | | | | | | | | | | | | | | | | | | | Sections may be hidden => QStyleOptionHeader::position must reflect the state seen on the screen. Otherwise styles will give wrong visual results. Task-number: QTBUG-32203 Change-Id: I7ef86496be092bf6f52ec45f757b501f38c3a431 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | QHeaderView - reduce memory usageThorbjørn Martsum2013-08-161-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Though the worst case memory usage was improved in b800d8b94a7861ecf8853621f6556fca186fb5b7 the best case usage changed. Since best case is the same as worst case in Qt5, we should use as little as possible, which this patch ensures. We reduce the memory usage from 3 to 2 ints per section - which is half of worst case in Qt4. There seems to be no bigger cost in performance doing that. The recalcSectionStartPos is still very fast. This patch limits the maximum section size to (2^20) ~ 1.000.000 pixels. This alleviates Task-number: QTBUG-32325 Change-Id: I9b7530030a31b4e35cf1ca9e32c6b936f5ea9790 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | QHeaderView - add parameter to control sizeHint precisionThorbjørn Martsum2013-05-131-1/+54
| | | | | | | | | | | | | | | | | | | | | | Currently Qt looks at 1000 rows when scaling a column. That can be slow in some situations and too inaccurate in others. With this patch we leave it up to the user to decide how precise e.g resizeToContents should be. Change-Id: I6ef60f9a3bb40fc331ce1a1544fdc77488d20ca3 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Unify header-based scroll offsets in itemviewsJ-P Nurmi2013-05-071-0/+13
| | | | | | | | | | | | | | | | This is a spin-off of 00b11cc. Change-Id: I042f066bdb1d248a04473d4b0a31002330a73907 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* | QAbstractScrollArea - add SizeAdjustPolicy and viewportSizeHintChristoph Schleifenbaum2013-04-221-0/+28
|/ | | | | | | | | | This patch adds SizeAdjustPolicy to QAbstractScrollArea. If it is set to AdjustToContents it will make use of the new protected viewportSizeHint() (BC since it was reserved in Qt5). This function returns a suggested size based on contents. Change-Id: I5d8aa517e88b8b21c5712e62b4d574c3aad99d3b Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Fix license headers stating QtGui for QtWidgets files.Jake Petroules2013-03-191-1/+1
| | | | | Change-Id: I0ca49e3e1f9f603f0b0f7f3553e854b871efe303 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: Add the missing \since 5.0Debao Zhang2013-02-251-0/+14
| | | | | | Change-Id: I79f67e18b64efe7d22ed80adbc6f024ef35b3aac Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* QHeaderView: - avoid cursor move on setDefaultSectionSizeThorbjørn Lund Martsum2012-11-251-0/+2
| | | | | | | | | | | If we are reacting on the sectionResized signal and we call setDefaultSectionSize we should ensure that we are not moving the mouse-cursor. This is an improvement of f8f6acb05ce9aa5fccc329bf5587adf14ed9a710 Change-Id: I1adee7821bc8fcc9633f692bfd515f2c458b12c8 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QHeaderView - Fix auto-scroll on manual move on sectionsThorbjørn Lund Martsum2012-11-231-0/+2
| | | | | | | | | | | | | This patch fixes the manual move of sections when auto scroll is on. It is done in QAbstractItemView::doAutoScroll by letting the qheaderView use its parents scrollbars if they are childs of a QTableView or QTreeView. Task-number: QTBUG-993 Task-number: QTBUG-1103 Change-Id: I70d999d9a07c3566e42d01cc5ebb47a69a83d9d4 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QHeaderView - call viewport->update() in setDefaultSectionSizeThorbjørn Lund Martsum2012-11-211-0/+1
| | | | | | | | Just like in resizeSection, moveSection, swapSection (and more) we should call update on the viewport after setDefaultSectionSize. Change-Id: I88154138d98f644050054d7cd287a0addd9a9cf9 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QHeaderView::setDefaultSectionSize to handle auto size of sections.Thorbjørn Lund Martsum2012-11-211-0/+3
| | | | | | | | | | | setDefaultSectionSize should respect auto resized sections like QHeaderView::resizeSection(). When setDefaultSectionSize is called we should process a possible pending resize and afterwards we should do a (delayed) resize of the sections (if we have autosized sections) Change-Id: Ie09e6f073c944b58693ffbbd1d1a8b60104c1a55 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QHeaderView:setDefaultSectionSize add invalidateCachedSizeHint callThorbjørn Lund Martsum2012-11-211-0/+1
| | | | | | | | | We cannot rely on the previous sizeHint and we also call it in QHeaderView::resizeSection(). There seems to be no reason not to call it. Change-Id: Ia473fb7163369aafa5c019ff97a030f9f54a33d9 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QHeaderView - do not keep indexes from an obsolete modelThorbjørn Lund Martsum2012-11-201-0/+1
| | | | | | | | | | | | | When we call setModel persistentHiddenSections are no longer relevant. It contains indexes from the previous model. This solves: Task-number: QTBUG-18196 Change-Id: Ida02fa63a915695e3730fd63995ac5f8520ae827 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Regression fix to QHeaderView::setDefaultSectionSizeThorbjørn Lund Martsum2012-11-151-0/+1
| | | | | | | | | | | | When the sections has been resized we need to calculate new values for the section start-positions. Otherwise we break visualIndexAt and sectionPosition. This fixes a regression introduced in b800d8b94a7861ecf8853621f6556fca186fb5b7 Change-Id: I148dbf44f742208787ed59b70d82b8048d721e90 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Qt 5.0 QTreeView. Prevent manual moving of the first sectionThorbjørn Lund Martsum2012-11-021-1/+9
| | | | | | | | | | | | | | | | | | This prevents the user of moving the leftmost column. There will be no API to allow move of the tree-structure. It is very weird to do that, so it shouldn't be a problem. In case it is a big problem somewhere it can be hacked with: QTableView unused; unused.setVerticalHeader(tree->header()); tree->header()->setParent(tree); unused.setVerticalHeader(new QHeaderView(Qt::Horizontal)); Task-number: QTBUG-332 Change-Id: I3a251c8d0fd472ec0ad7edb20a7f3e00af7e0da8 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QHeaderView 5.0 - correct drop on manual QHeaderView sectionmoveThorbjørn Lund Martsum2012-11-021-1/+1
| | | | | | | | | | | | | | | | | This fixes an error in the calculation of the exact drop position when an user is moving a section in QHeaderView. Before we compared a mouse-position local to the widget (pos) with a summed length of sections (posThreshold). However we need to consider/substract the headers offset to make the posThreshold comparable to the local mouse position. This solves e.g. Task-number: QTBUG-14814 Change-Id: If0281cf0c7b98316474f18e8eaa32c6d062dda56 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QHeaderView - call invalidateCachedSizeHint() on clearThorbjørn Lund Martsum2012-11-021-0/+1
| | | | | | | | | This calls invalidateCachedSizeHint on clear, which is a logical thing to do. Task-number: QTBUG-22528 Change-Id: I0befb2d492599fa8a05b1c2162bbca586e1b019d Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* QHeaderView 5.0 - no emit of sortIndicatorChanged when unchangedThorbjørn Lund Martsum2012-10-261-0/+2
| | | | | | | There is no reason to emit this when there is no change. Change-Id: I34f0ceec7c4b0959b77bc5be3ce2c2ad55864598 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Documentation fixes.Frederik Gladhorn2012-09-211-1/+1
| | | | | Change-Id: I2e234ec4307bbe39359cdfa8b13e86661dad43b6 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Whitespace fixesShawn Rutledge2012-08-211-1/+1
| | | | | | Change-Id: Ibfb48076ad62804344db6e9e97ac90fdcf82dc04 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Fix the doc errors in itemmodels and itemviews.Stephen Kelly2012-08-201-3/+3
| | | | | | | | | Other errors remain, but they appear to be due to missing links to QtCore documentation (a generic error not specific to itemviews). Change-Id: I7b83380c3754c26d3d42be9ef0c0721ce3127562 Reviewed-by: Shawn Rutledge <shawn.rutledge@nokia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Fix some spelling errorsSergio Ahumada2012-07-111-2/+2
| | | | | | Change-Id: I19d3b2e9a5180b13deb828b55195404ef20be295 Reviewed-by: Daniel Teske <daniel.teske@nokia.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QHeaderView - resizeSection improvementThorbjørn Lund Martsum2012-07-051-1/+14
| | | | | | | | | | | | | | | | | This patch improves the manual resizeSection a bit. Before we didn't consider that the program could maybe resize other sections when the user was resizing one section. The main issue with that is that setOffset is so smart that it helps moving the mouse cursor - however it really shouldn't do if the program is trying to change something too. Maybe this won't solve all (possible) problems at once - but it is a fixed needed just to make something work - trying to make anything work without this fix is horrible.... Change-Id: I3cefa375a9b8ee4c1ef1e08ba0900025c671e4c6 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>