summaryrefslogtreecommitdiffstats
path: root/src/widgets
Commit message (Collapse)AuthorAgeFilesLines
* Call canFetchMore/fetchMore when scrolled to the bottom of the viewAndy Shaw2017-09-122-0/+22
| | | | | | | | | | | | | | | | | When scrolling to the bottom of the view, if there are expanded items then it should call canFetchMore/fetchMore up the chain until it finds one with more items that can possibly be retrieved. This brings it in line with the QAbstractItemView implementation which would call canFetchMore on the root index, therefore we go up the chain to the root to see if anything before that can be fetched. [ChangeLog][QtWidgets][QTreeView] QTreeView now calls canFetchMore and fetchMore when the bottom of the QTreeView is scrolled to. Task-number: QTBUG-48725 Change-Id: I2b2145684bb34c8c317bfce4a0ef14f243a64719 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* QItemDelegate: Use QString::replace instead of home brew algorithmAndre Hartmann2017-09-081-4/+1
| | | | | | | Change-Id: I491b6167147de48bd3be2aaf616c9dad43dabebb Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* Item widgets: make indexFromItem const-correctGiuseppe D'Angelo2017-09-027-6/+45
| | | | | | | | | The item is not supposed to be modified, so it should be passed as pointer-to-const. A similar change was already done for QTreeWidget in b2aeeaf628839d0fc0149db94e0a02c369ad16bc. Change-Id: I75d597867771f414821693a50f97c94b05a4ccb2 Reviewed-by: David Faure <david.faure@kdab.com>
* Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-08-315-29/+36
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/examples.pro qmake/library/qmakebuiltins.cpp src/corelib/global/qglobal.cpp Re-apply b525ec2 to qrandom.cpp(code movement in 030782e) src/corelib/global/qnamespace.qdoc src/corelib/global/qrandom.cpp src/gui/kernel/qwindow.cpp Re-apply a3d59c7 to QWindowPrivate::setVisible() (code movement in d7a9e08) src/network/ssl/qsslkey_openssl.cpp src/plugins/platforms/android/androidjniinput.cpp src/plugins/platforms/xcb/qxcbconnection.cpp src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/widgets/widgets/qmenu.cpp tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp Change-Id: If7ab427804408877a93cbe02079fca58e568bfd3
| * QWidgets/CommonStyle: Fix tooltip drawing under HighDPIAlessandro Portale2017-08-291-7/+2
| | | | | | | | | | | | | | | | | | | | | | Delegating the border painting to qDrawPlainRect ensures that there are no off-by-one pixel issues. Task-number: QTBUG-61849 Change-Id: I56dc849da80fad00d02a0f9c60dbb621e6de7c48 Reviewed-by: Michael Winkelmann <michael.winkelmann@qt.io> Reviewed-by: J-P Nurmi <jpnurmi@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
| * QCompleter: Add check before setting the widgetGabriel de Dietrich2017-08-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | This prevents unnecessarily removing and reinstalling the completer as event filter on the same widget. This does not prevent what's going on in QComboBox::focusInEvent(), where we'd set the line edit as widget just to immediately override it with combo box itself. Change-Id: I70c081a920f4daf4d7560e5cd7158e4070042d42 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * QMenuPrivate: Fix implicit type conversion warningsGabriel de Dietrich2017-08-251-6/+6
| | | | | | | | | | | | | | | | As reported within Qt Creator. Change-Id: I9dc06b9fba52936e01e01fb0e8cdf4b216c46551 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QWidget: Call appropriate QWindow method from setGeometry_sys()Gabriel de Dietrich2017-08-231-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When calling resize() from showEvent(), we'd set the full geometry on the widget's QWindow. This resulted in the top-level window being moved to the top-left corner, even though no other call to move() or setGeometry() had happened before. The solution consists on calling the proper QWindow methods depending on whether setGeometry_sys() is called for a move, a resize or both. Furthermore, this needs QWindow::resize() to set its position policy to frame-exclusive. The documentation states that is already the case and we're setting the full geometry on the platform window, so we need to convey that bit of information. This also solves the age-old conundrum: "### why do we have isMove as a parameter?" Change-Id: I2e00fd632929ade14b35ae5e6495ed1ab176d32f Task-number: QTBUG-56277 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * macOS: Fix padding around tab label with iconEskil Abrahamsen Blomfeldt2017-08-181-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change c12072c685f7e93d5b84e289ca23106482379eff fixed a problem where tab labels would overlap with the icons if the tab became too small to contain the text. But it did not properly account for the full area occupied by the icon, because the horizontal padding is hardcoded to 4 in the mac style, whereas in the common style (where the icon is drawn) it uses the pixel metric for this. In addition, the change only allocated space on the left side, causing the label to no longer be centered. Task-number: QTBUG-61235 Change-Id: Ieec4f7044584361f92045addbc8bbd81bd5c9fc7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
| * QMenu: Prevent torn-off menus from extending behind the taskbarGabriel de Dietrich2017-08-162-12/+14
| | | | | | | | | | | | | | | | | | | | On Windows and macOS, that area of the menu can become inaccessible if the menu is tall enough. Since these are not popups but tool windows, the test for UseFullScreenForPopupMenu should not apply for torn-off menus. Change-Id: Ife7836bef568896a5bb67d42a2af412f06a871d6 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | New AA_DisableWindowContextHelpButton to globally hide ? buttonKai Koehne2017-08-291-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Dialogs and Sheets by default have the WindowsContextHelpButtonHint set, which adds a question mark button to dialogs on Windows. This button then triggers the 'What's this' mode by changing the cursor, and letting the user explore the UI by showing whatsThis tooltips. Anyhow, the paradigm is little used today and a lot of applications do not set any whatsThis properties, leaving the mode pretty non-functional. It's therefore common to explicitly remove the WindowsContextHelpButtonHint from dialogs. However, this has to be done for _every_ dialog. Instead, this patch adds a global application flag to not set the WindowsContextHelpButtonHint by default. This allows developers to already buy into the Qt 6 behavior, where the flag will not be set anymore by default. [ChangeLog][QtWidgets] Added AA_DisableWindowContextHelpButton attribute. Setting this attribute globally prevents the automatic "What's this" button on dialogs on Windows (WindowsContextHelpButtonHint). Change-Id: I497a79575f222c78b2d5d051a6de346b231f72d3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Reduce usage of QDesktopWidget to resolve screen properties in QtWidgetsTor Arne Vestbø2017-08-1826-68/+178
| | | | | | | | | | | | | | | | | | | | | | Removes the need to initialize QDesktopWidget, just to look up which screen a widget would map to, the geometry of a screen, number of screens, etc. Change-Id: Ieb153b9ff6d3fba645fc528d6e430e8392f990bf Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | QLineEdit: Create a separate undo entry for each middle-click pasteAndreas Hartmetz2017-08-171-1/+1
| | | | | | | | | | | | | | | | | | Previously, a sequence of middle-click pastes produced just one undo item to undo/redo all of the pastes at once. The new code seems to be the intended way to paste the selection anyway. Change-Id: Ifc2e9714628da9e394053ff8c34709578656f54d Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Don't send extra mouse press to popups on dblClickPaul Olav Tvete2017-08-171-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QWidget::event() will turn an unhandled double click into a mouse press. Therefore, we must avoid sending a separate mouse press in that case. This copies the logic from 9063edef796ad10eb9ac2229627f36d60168f0e2, the previous fix for QTBUG-25831, which only applied to the non-popup case. Task-number: QTBUG-25831 Change-Id: I616f398a5ebe1f95d4b65b9f6ce2fe39a6fad83e Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-08-15130-549/+480
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoamenu.h src/plugins/platforms/cocoa/qcocoamenu.mm src/plugins/platforms/cocoa/qcocoawindow.mm src/widgets/styles/qstylehelper_p.h Change-Id: I54247c98dd79d2b3826fc062b8b11048c9c7d9bb
| * Convert features.graphicsview to QT_[REQUIRE_]CONFIGStephan Binner2017-08-1576-321/+209
| | | | | | | | | | Change-Id: I1083097802772624e5d414678b4612308683a56f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Widgets: Fix ImSurroundingText query for a QLineEdit with maskJarkko Koivikko2017-08-112-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QLineEdit with a mask does not return empty fields with the ImSurroundingText query. This is a problem for the input context that is not aware of the mask and relies on the fact that the cursor position never exceeds the boundaries of the surrounding text. This change fixes the issue by returning unmasked text with the ImSurroundingText query. [ChangeLog][QtWidgets][QLineEdit] Fixed behavior of the ImSurroundingText query. Previously, it returned a masked text whose length may be less than the cursor position. Now it returns unmasked text, so the text length is always greater than or equal to the cursor position. Task-number: QTBUG-60319 Change-Id: I1c8009164836a1baa2e3a45958bf1ea5fa9be38d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Convert features.toolbutton to QT_[REQUIRE_]CONFIGStephan Binner2017-08-1018-43/+63
| | | | | | | | | | Change-Id: I4227e1868da21bded76a8ec55996c436c8a8d763 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.splitter to QT_[REQUIRE_]CONFIGStephan Binner2017-08-108-14/+19
| | | | | | | | | | Change-Id: I2eea5004938c581beb5a7c0c01409c576c5e5b39 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.groupbox to QT_[REQUIRE_]CONFIGStephan Binner2017-08-1011-29/+36
| | | | | | | | | | Change-Id: I034286043a880ab777ec3f2311572bdc38e7fafc Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.scrollbar to QT_[REQUIRE_]CONFIGStephan Binner2017-08-1025-43/+67
| | | | | | | | | | Change-Id: Id6ea899c0fddf0de636701cfdc5f01ba20024976 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.toolbox to QT_[REQUIRE_]CONFIGStephan Binner2017-08-107-20/+18
| | | | | | | | | | Change-Id: I7abfe0166a021c439f6ed4465631ba62660ef001 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.progressbar to QT_[REQUIRE_]CONFIGStephan Binner2017-08-1012-23/+33
| | | | | | | | | | Change-Id: I66d00d5bac98ff337ba5877e5f23be5e14a97551 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.textbrowser to QT_[REQUIRE_]CONFIGStephan Binner2017-08-108-18/+17
| | | | | | | | | | Change-Id: I02a0c39c308204f7c67674928973275fa1247d38 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.statusbar to QT_[REQUIRE_]CONFIGStephan Binner2017-08-089-20/+22
| | | | | | | | | | Change-Id: Ifc1881388e559d3235df0202ac6d26f78ba2c691 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * QAction: Note that the QAction parent parameter is optional since 5.7hjk2017-08-081-0/+2
| | | | | | | | | | Change-Id: Id1cb5591dae55cd22621cd8e403d2056f1aa9364 Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
| * Convert features.dial to QT_[REQUIRE_]CONFIGStephan Binner2017-08-0811-28/+25
| | | | | | | | | | Change-Id: I9fea2451fe3567fdd1af1540e9a55f218f54b569 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devThiago Macieira2017-08-082-1/+2
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/widgets/kernel/qwidget.cpp This merge also extends the expected output of the pairdiagnostics teamcity output (added in dev in commit c608ffc56ab37f9a9d5b9c34543126adb89e2b08) after the recent addition of the flowId attribute to the teamcity output (commit 8f036562119dd35ce51dc9230304d893b906bd37 in 5.9). Change-Id: I3868166e5efc45538544fffd14d8aba438f9173c
| * Android: Fix push button label duplication with stylesheetsEskil Abrahamsen Blomfeldt2017-08-041-33/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the Android style, we matched both the full CE_PushButton, and the individual, decomposed CE_PushButtonBevel and CE_PushButtonLabel (and similar for other controls) to the same drawing code which draws both the label and the bevel. When used together with the style sheet style, this caused the label of the button to be drawn multiple times in different locations. For labels, we now skip the part which draws the actual control, and for the non-textual parts of the controls, we skip drawing the label. [ChangeLog][QtWidgets][Android] Fixed label duplication for buttons when using style sheets with the Android style. Task-number: QTBUG-48639 Change-Id: I1a1cdb0a82870cebd0438c5c72199afc3192938c Reviewed-by: BogDan Vatra <bogdan@kdab.com>
| * QAbstractItemView: fix nullptr violationRaschbauer, Reinhard2017-08-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If in a slot connected to QAbstractItemView::clicked QAbstractItemView::setModel(nullptr) is called the method QAbstractItemView::mouseReleaseEvent will cause a segmentation fault. The problem is that the method QAbstractItemView::model used in QAbstractItemView::mouseReleaseEvent will return a nullptr if a null model was set. The solution is to used d->model since it is always a valid model. (See line d->model = (model ? model : QAbstractItemModelPrivate::staticEmptyModel()); in method QAbstractItemView::setModel) Change-Id: I6f01bdeac64495ee4a76adcc7bf8da8a7719ef4d Reviewed-by: David Faure <david.faure@kdab.com>
| * QWidget::render(): Add a call to QPaintEnginePrivate::systemStateChanged()Friedemann Kleint2017-08-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Setting the clip needs to be followed by a call to QPaintEnginePrivate::systemStateChanged() since the raster paint engine overrides the function to set some variables. Amends change 4ae1025c0b54a535ef9f50c6cdab5ef752b667dc. Task-number: QTBUG-44067 Task-number: QTBUG-56282 Task-number: QTBUG-55698 Change-Id: I7983ddd087deb484d9dbbf955eb1d6f903ef59fe Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | Add QTextOption/QTextEdit/QPlainTextEdit::tabStopDistance propertyEskil Abrahamsen Blomfeldt2017-08-064-12/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Qt, we have QTextOption::tabStop, QTextEdit::tabStopWidth and QPlainTextEdit::tabStopWidth. Neither are very good names, since the tab stop is neither a numerical value as in the former, nor does it have any dimensions that can be measured, as in the latter. Vertical text advances may also be supported by Qt at some point in the future, at which point the name would make even less sense. At the same time, we expose the actual type of the tab stop distance as floating point in the QTextEdit and QPlainTextEdit API instead of always rounding it to an int. To avoid duplicating either of these APIs in Qt Quick, we introduce tabStopDistance as the common term instead and deprecate the old names. [ChangeLog][Text] Introduced tabStopDistance property in QTextOption, QTextEdit and QPlainTextEdit as replacement for the inconsistently named tabStop and tabStopWidth properties. QTextOption::tabStop, QTextEdit::tabStopWidth and QPlainTextEdit::tabStopWidth have subsequently been deprecated. Change-Id: Ib7e01387910cddb58adaaaadcd56c0e69edc4bc2 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Fix typoFrederik Gladhorn2017-08-051-2/+2
| | | | | | | | | | Change-Id: Ie82c0996a7b1112fe6d6d259d765737fc3fb6a22 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | xcb: don't rely on _NET_WORKAREA for available geometry on multi-head systemsGatis Paeglis2017-08-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On X11, QScreen::availableGeometry() is broken with multi-head systems, and there doesn't seem to be a real fix for this due to limitation in the protocol and therefore support in WMs (more details in the patch). In Gnome this issue is more visible because on this DE the _NET_WORKAREA rectangle represents the intersection of the available geometries on all monitors. This results in a big area of "dead space" on the secondary screen, when primary screen is positioned lower in the virtual space. If menu is opened by clicking in this dead space, the menu is awfully misplaced (qmenu uses availableGeometry() to calculate the position of menu). On Ubuntu with Unity (same is true for KDE Neon+Kwin and LUbuntu+Openbox), _NET_WORKAREA returns a bounding rectangle containing all monitors. Which does not cause the menu misplacement as "dead space" is outside clickable area. But this does not mean that the QScreen::availableGeometry() reported values are correct. With the same setup as described above, QScreen::availableGeometry() thinks that we have a tool panel on the right screen, when in reality it is on the left screen. AwesomeWM for example does not set _NET_WORKAREA at all, which means QScreen::availableGeometry() == QScreen::geometry(). I am not aware that it would cause any issues for popup/menu window positioning in Qt (Qt positions these windows manually by bypassing WM (via Qt::BypassWindowManagerHint) and using availableGeometry for calculations. With this patch, we would take the same code path as if _NET_WORKAREA was not set (where we know that_NET_WORKAREA is cleary wrong). The solution here is to recognize _NET_WORKAREA as true available geometry only in specific cases (cases where the meaning is cleary defined by the specification) and adjust the documentation accordingly. Not knowing the true available geometry on X11 is mitigated by WMs. Window manager can position windows as it wants. WMs are smart enough not to place windows on top of reserved areas at edges (even if user has explicitly requested this via setGeometry based on inaccurate information from availableGeometry()). [ChangeLog][Platform Specific Changes][Linux] The _NET_WORKAREA atom is used for calculating QScreen::availableGeometry() only on systems with one monitor. In all other cases QScreen::availableGeometry() is equal to QScreen::geometry(). To restore the legacy behavior with untrustworthy values in QScreen::availableGeometry() set QT_RELY_ON_NET_WORKAREA_ATOM=1 environment variable. Task-number: QTBUG-60513 Task-number: QTBUG-29278 Task-number: QTBUG-43768 Task-number: QTBUG-18380 Change-Id: I7e0f62f81d1444991b8a6c007c2527d8f96088c2 Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into devOswald Buddenhagen2017-08-0280-620/+637
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/xcb/qxcbconnection.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp src/plugins/styles/mac/qmacstyle_mac.mm src/widgets/widgets/qdockarealayout.cpp src/widgets/widgets/qmainwindow.cpp src/widgets/widgets/qmainwindowlayout.cpp src/widgets/widgets/qmainwindowlayout_p.h tests/auto/corelib/tools/qlocale/tst_qlocale.cpp tests/auto/other/macnativeevents/BLACKLIST tests/auto/widgets/widgets/qmenu/BLACKLIST Change-Id: Ic8e724b80a65e7b1af25511b0e674d209265e567
| * Add a Q_FALLTHROUGHJesus Fernandez2017-08-021-0/+1
| | | | | | | | | | | | | | | | | | CID 11161 (#1 of 1): Missing break in switch (MISSING_BREAK) unterminated_case: The case for value Qt::BottomToolBarArea is not terminated by a 'break' statement. Coverity-Id: 11161 Change-Id: Ie254d0339e41a58004632e9997febac4a1ab4edd Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
| * Windows/QFileSystemModel: Fix updating of removed drivesFriedemann Kleint2017-07-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the updating of drives in QFileSystemModel was connected to a signal triggering when a drive containing watched files was removed via QFileSystemWatcher notification. This did not trigger when a drive that was not expanded in the view was removed, since no files were watched. Since QFileSystemModel is not interested in the path of the drive being removed, add a generic signal triggered by DBT_DEVTYP_VOLUME/DBT_DEVICEREMOVECOMPLETE and use that to update the drives. Complements 8e79806d08ab77aa0f87b69a2ef65789216f41c0. Task-number: QTBUG-18729 Task-number: QTBUG-53436 Change-Id: Ibcde4665824c41151042237d4d620c48bc1e2e18 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
| * In QFileDialog delete a symlink rather than actual target it points toDongmei Wang2017-07-292-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In QFileDialog, when a resolved symlink gets deleted, the actual target it points to gets deleted instead of the symlink itself. The patch is to delete the symlink rather than actual target by doing the following: 1. In QFileDialog, if a directory being deleted is a resolved symlink, do not remove the directory. Instead, call QFileSystemModel to remove the model index. 2. In QFileSystemModel::remove(), use the full file path instead of the resolved file path for deletion. For a symlink, delete the symlink itself. The patch is for Windows and Linux. Task-number: QTBUG-29770 Change-Id: I4db545f0b5963acde3f89a8ee858338c23104804 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
| * QFileDialog: Fix a crash occurring when deleting a fileDongmei Wang2017-07-271-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A crash has been observed on Windows in the use case below: 1) In a non-native QFileDialog, select a file and press "Del" key to delete it, and a warning message box appears for user to confirm the deletion. 2) Delete the file in the Windows Explorer. 3) Click "Yes" on the warning message box, a crash happens In QFileDialog::_q_deleteCurrent(), use QPersistentModelIndex instead of QModelIndex to ensure that the index is valid to be deleted. The change is intended to fix . The patch is to use QPersistentModelIndex instead of QModelIndex in QFileDialog::_q_deleteCurrent() to ensure that the index is valid to be deleted. Change-Id: I8959124dc071f7cf0ab47f954d611211a789978d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Convert features.tabbar to QT_[REQUIRE_]CONFIGStephan Binner2017-07-2527-205/+216
| | | | | | | | | | Change-Id: Id21a95cbc61b2559a8f517ee60548b61536e3cc4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.dockwidget to QT_[REQUIRE_]CONFIGStephan Binner2017-07-2521-155/+165
| | | | | | | | | | Change-Id: I1d4b0268df01f8bc0aec28af52cc4b639a376863 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.tabwidget to QT_[REQUIRE_]CONFIGStephan Binner2017-07-2517-57/+66
| | | | | | | | | | Change-Id: Iab985564fd2069188df01f8ff3e00add86eb86f4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.itemviews to QT_[REQUIRE_]CONFIGStephan Binner2017-07-2537-107/+84
| | | | | | | | | | | | | | The QT_NO_ITEMVIEWS queries in corelib/ seem to had no effect at all. Change-Id: I494ee2309a96b0cf25de18781fc9a675878a2ee9 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.combobox to QT_[REQUIRE_]CONFIGStephan Binner2017-07-2520-69/+89
| | | | | | | | | | Change-Id: I2f415de8556289a6461a645d559be17089c43c99 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.calendarwidget to QT_[REQUIRE_]CONFIGStephan Binner2017-07-256-17/+14
| | | | | | | | | | Change-Id: I93c2e00828a233f004c599bd0702d0a470ae29ff Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.datawidgetmappper to QT_[REQUIRE_]CONFIGStephan Binner2017-07-253-10/+6
| | | | | | | | | | Change-Id: Icabee2b146a16b489ff6aa40261a694f74268dc1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * Convert features.dirmodel to QT_[REQUIRE_]CONFIGStephan Binner2017-07-254-17/+16
| | | | | | | | | | Change-Id: I8e2c6b49857ffb292c4b08ccab560c59665cc3a4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * QLineEdit: Don't move the cursor after internalInsert() has done soAndy Shaw2017-07-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | internalInsert() will set the cursor to the right position which accounts for any input mask set on the control as well. Therefore it will already be placed at the next correct position and should not be changed again after that. Task-number: QTBUG-40943 Change-Id: Ic0f5fad6999ddd367e435ec4409a5db5b9eacb7b Reviewed-by: Daniel Teske <qt@squorn.de> Reviewed-by: David Faure <david.faure@kdab.com>
| * QListView: Fix item movement in icon modeBłażej Szczygieł2017-07-211-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since b13aa15e1007a1b5ed61049bbd9ef8f95b6d12a5 the event must not be accepted when calling "canDrop()" method. Inside it "dropOn()" method is called which requires not accepted event. Otherwise the event will be ignored later in "QListView::dragMoveEvent()". On next movement it will be accepted again - the event is now ignored, so "dropOn() method will work properly. If "filterDragMoveEvent()" returns false for any reason, the event acceptance is not changed - the same behavior as before. Task-number: QTBUG-61951 Change-Id: I2d49ce5b15300c42e2efc745e8e32d3d17f34a2f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| * Convert features.listview to QT_[REQUIRE_]CONFIGStephan Binner2017-07-2113-24/+33
| | | | | | | | | | Change-Id: I707a839bcfc7ad481342d1adb98c9b593f5ca6e2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>