summaryrefslogtreecommitdiffstats
path: root/src/widgets
Commit message (Collapse)AuthorAgeFilesLines
* Make QWindow's windowState a QFlags of the WindowStateOlivier Goffart2017-03-162-37/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reflects QWidget API, and restores some behavior from Qt4. Some WM can have several state at the same time. On Plasma for example, when a window is both maximized and minimized, the "maximized" checkbox is checked from the taskbar entry. The API of QPlatformWindow was changed to take a QFlag and the platform plugins were adapted. - On XCB: Always send the full state to the WM. And read the full state. - On Windows: The code was originally written with '&' in Qt4, and was changed to == when porting. Some adaptation had to be made so the states would be preserved. - On macOS: Only a single state can be set and is reported back for now, with the possibly to expand this in the future. - Other platforms: Just do as before with the effective state. Task-number: QTBUG-57882 Task-number: QTBUG-52616 Task-number: QTBUG-52555 Change-Id: I7a1f7cac64236bbd4c591f796374315639233dad Reviewed-by: Gunnar Sletta <gunnar@crimson.no> Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
* Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-03-1479-421/+919
|\ | | | | | | | | | | | | Conflicts: src/widgets/widgets/qpushbutton.cpp Change-Id: I615de00e6e64540c50f658d4d8ab3e002d701a81
| * Build fix for -no-feature-sliderPaul Olav Tvete2017-03-092-0/+6
| | | | | | | | | | Change-Id: Ibd7d0c2182c6a11f6d595b6d1015ee7de2d35866 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * QMacStyle: update QTabBar styleOleg Yadrov2017-03-085-207/+310
| | | | | | | | | | | | Task-number: QTBUG-58266 Change-Id: I135e4dae44e2e97d73b7c7c97d8e682bcf459d75 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
| * Add feature.abstractsliderStephan Binner2017-03-089-16/+41
| | | | | | | | | | Change-Id: Ib5d0186162fc3b750e6440c74b1181787093ef97 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| * Doc: QSizePolicy: Fix documentation warningsTopi Reinio2017-03-081-1/+1
| | | | | | | | | | | | | | | | | | warning: Can't link to 'controlType()' warning: Can't link to 'horizontalPolicy()' warning: Can't link to 'verticalPolicy()' Change-Id: I6b31acebf183defee7b4ab36976034ed4a3fc98a Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| * QWidgetWindow::event(): Call base implementation for QEvent::WindowStateChangeFriedemann Kleint2017-03-081-0/+1
| | | | | | | | | | | | | | | | | | | | The base implementation takes care of updating visibility and emitting signals. Task-number: QTBUG-59313 Change-Id: I270b37c894420902488d89dc0c79f4c12b8d9a29 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * QStyleSheetStyle: introduce class Tampered<QPalette|QFont>Marc Mutz2017-03-082-30/+34
| | | | | | | | | | | | | | | | ... as a replacement for two QPairs and move some common QFont/QPalette functionality into it. Change-Id: Iaab92130dd54eaa7900ac2048014a80cbd04bfb6 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * Add feature.pushbuttonStephan Binner2017-03-0615-13/+104
| | | | | | | | | | Change-Id: I654d91635e60b177df16f6dfe00acc940132f66a Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Add feature.checkboxStephan Binner2017-03-068-6/+43
| | | | | | | | | | | | Change-Id: Ib387390b796c3cab6de4ce94e0d217280a300df8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Add feature.dialogbuttonboxStephan Binner2017-03-0613-11/+74
| | | | | | | | | | | | Change-Id: I8c136024c3bf431529033a806be646d867919daa Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * QLineEditPrivate: introduce SideWidgetLocation classMarc Mutz2017-03-062-16/+22
| | | | | | | | | | | | | | | | | | | | | | | | ... as a replacement for QPair<enum, int>, and move some repsonsibilities into it. This avoids the repeated use of the magic number -1 to indicate invalid locations and does away with the confusing .first and .second, replacing them instead with proper names, .position and .index. Change-Id: If904c5333cecf8ce3d5160ca4be9264a13a2b72a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Add feature.label and feature.formlayoutStephan Binner2017-03-0317-22/+122
| | | | | | | | | | | | Change-Id: Ic8dc0aee7f3fc0d8218ba709352b1378078c6070 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Add feature.radiobuttonStephan Binner2017-03-036-4/+26
| | | | | | | | | | Change-Id: Ie11f178ce22e2fafdfdf1760288e90563569e0cb Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Revert "Add expandingListItems property to QListView"Marc Mutz2017-03-033-46/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit a4c25c020554527aa9ff9b533afabffef46be131. The API is too limited in scope, and a good name is hard to find, as evidenced in the API review discussion preceding Qt 5.9 beta. This API will hopefully return as something like setItemAlignment(). [ChangeLog][QtWidgets][QListView] EDIT: REMOVE: Added expandingListItems property. Conflicts: tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp Change-Id: I397acd8a7a6c716e2d3c96eee45a276eb6d4f9dd Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
| * Build fix for -no-feature-shortcutPaul Olav Tvete2017-03-0310-10/+28
| | | | | | | | | | Change-Id: I99144b114b3c2eacb56b522b3059aa53a6bbd969 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Fix DPI of QWidget with parent on a different screenOlivier Goffart2017-03-021-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a floating QWidget has a parent on a different screen, its DPI was still inherited from the parent instead of taken from the screen. The only reason we did was in case there is a customDpi set. (customDpi is a private thing that is only used in designer to change the appearance of the previewed widget) So instead of recursing into QWidget::metric for each ancestor, just use a for loop to find if one parent has a customDpi. If no customDpi is found, then return the DPI of the right screen. Task-number: QTBUG-58959 Task-number: QTBUG-48242 Change-Id: Ie6e9e48cdd10234994c0919ba3aea9b0cdb52494 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Add feature.scrollerStephan Binner2017-03-017-14/+32
| | | | | | | | | | Change-Id: I5313e1f5091d5764994525dae138e288e5125c59 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Fix build with -no-feature-tabbarPaul Olav Tvete2017-03-011-0/+4
| | | | | | | | | | Change-Id: I7b692f5308efa92da8c2101e07e9a803c6c69d99 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Build fix for -no-feature-actionPaul Olav Tvete2017-03-013-1/+22
| | | | | | | | | | Change-Id: I62291af347dca7c1bb4a53d2cb698e4f1a38743d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Build fix for -no-feature-validatorPaul Olav Tvete2017-03-011-0/+2
| | | | | | | | | | Change-Id: I385ce6e37611b7ba32503ef5d041628dd764fe23 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Fix build with -no-feature-draganddropPaul Olav Tvete2017-03-016-20/+12
| | | | | | | | | | Change-Id: If537cb6b7d41b2d6511c369451dde2e9289f724d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Build fix for -no-feature-validatorPaul Olav Tvete2017-03-011-0/+2
| | | | | | | | | | Change-Id: I884381964d692eb5d3eb9088c87779c03057981d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Build fix for -no-feature-imageformat_xpmPaul Olav Tvete2017-03-012-2/+6
| | | | | | | | | | Change-Id: I081fdfb622f21fc63a72e153d4d6c7120107ba67 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Add feature.commandlinkbuttonStephan Binner2017-03-013-2/+16
| | | | | | | | | | Change-Id: I057ed507552c74a787e5bcdaa28a18c667eecd43 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * File dialog does not require features.tooltipStephan Binner2017-03-011-1/+10
| | | | | | | | | | | | | | Also rewrite condition as block Change-Id: Ife0086def80f1806c38dad822265fddf7ca0690b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Remove some redundant code in QActionJake Petroules2017-03-142-3/+2
| | | | | | | | | | | | | | | | Only 2 bits are needed to represent -1, 0, and 1 in a signed integer, and !(n != -1) implies n == -1 so the second condition was redundant. Change-Id: I200a17fe4e49ebc0eaa9a1988b4625267cef61a4 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
* | Add new API to control whether shortcuts are shown in context menusJake Petroules2017-03-146-4/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | Shortcuts are universally not shown on macOS or mobile platforms, making applications look very obviously out of place. Windows and GNOME desktop environments almost never use them. Only KDE appears to do so commonly; default accordingly. Task-number: QTBUG-49435 Change-Id: Ieac4cee57b15a02be5258f3d07749af6316af62b Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
* | Introduce SH_TitleBar_ShowToolTipsOnButtons style hintJake Petroules2017-03-087-7/+22
| | | | | | | | | | | | | | | | | | | | This removes some tight coupling between QMdiSubWindow and QMacStyle in order to allow the latter to be moved into a plugin. Change-Id: I090c2c5774279c0454486c3db2e77f00a646b145 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
* | Remove remaining Carbon includes from QtCore, QtGui and QtWidgetsJake Petroules2017-03-071-2/+0
| | | | | | | | | | | | | | | | | | Carbon is deprecated and we should not rely on it at runtime or compile time. These headers were only included for a small collection of keyboard key constants which have now been hardcoded instead. Change-Id: Ia2eaa267584b63be8019be3bbf64cba897a985a8 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
* | Move widget size policy methods to QStyleHelperJake Petroules2017-03-035-58/+52
| | | | | | | | | | | | | | | | | | While they're relatively Mac-specific, conceivably multiple style implementations could use them, and it breaks a tight coupling between QStyleOption and QMacStyle. Change-Id: I5915c519129538a9ac39a34d5cfc3aeb838145d6 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
* | Remove QT_CONFIG checks for style_macJake Petroules2017-03-031-16/+6
| | | | | | | | | | | | | | These checks are now done entirely at runtime. Change-Id: I63cfee6123fc8465cee2ee36049ece0e5262ce8f Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
* | QBoxLayout: Remove unconventional try/catch blocksGabriel de Dietrich2017-03-021-23/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | These appear in insertSpacing() and insertWidget() only and without any justification of why they may be needed. Several other instances of the pattern these try/catch blocks were guarding, i.e. allocate new QBoxLayoutItem and insert to the list of items, were left unguarded, leading us to believe this may not be useful at all and can be safely removed. Change-Id: I887fbde9d10e10f4f5daaa37f6f2892bd4038d58 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-03-0217-125/+179
|\| | | | | | | Change-Id: I84097f8e7b3b2128028bd7693c913d6968b82bfe
| * Widgets: Replace LGPL21 with LGPL license headerKai Koehne2017-02-281-14/+20
| | | | | | | | | | | | | | Also use canonical contact url. Change-Id: I59ed3d09d2fee877a577a00e7e1cb09782d26512 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * QSizePolicy: inline toControlTypeFieldValue()Marc Mutz2017-02-272-25/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The implementation now uses the relaxed-constexpr qCountTrailingZeroBits() function from QtAlgorithms, making the QSizePolicy(Policy, Policy, ControlType) constructor constexpr on C++14 compilers. The explicit check for DefaultType remains to keep the constructor C++11-constexpr when called with just (Policy, Policy). Extend the constExpr tests a bit. Change-Id: I59690f0921d9bdee08e3615d0d1f4a9b92870c32 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
| * QSizePolicy: simplify implementationMarc Mutz2017-02-271-17/+8
| | | | | | | | | | | | | | | | | | | | Even though we revoke its Q_COMPILER_UNIFORM_INIT for certain bugs that affect existing usage in Qt, it turns out that MSVC 2013 supports enough of braced initialization to make the macro magic in Bits::transformed() moot. Change-Id: I824d7fa298a2b95b4ad45c9e259e91c5ececfc0c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * QSizePolicy: mark as relocatable typeMarc Mutz2017-02-271-0/+2
| | | | | | | | | | | | | | Use Q_RELOCATABLE_TYPE now that we have it. Change-Id: I04bb946695ebb9f0899bb73becbef301805389ef Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Make QPlatformSurface events work with QWindowContainerLaszlo Agocs2017-02-271-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Embeddeding a QWindow via QWidget::createWindowContainer() fails to deliver the SurfaceAboutToBeDestroyed event. This breaks any OpenGL or Vulkan based QWindow that releases resources upon this event, and is particularly critical with Vulkan where the only way to do properly ordered swapchain - surface cleanup is via this event. In the non-embedded case close() eventually ends up in an explicit destroy() in QWindow. In the embedded case destroy() only gets called from ~QWindow. This then silently breaks since the subclass' reimplemented event() virtual is not getting called anymore. To remedy the problem, simply add an explicit destroy() to QWindowContainer. Task-number: QTBUG-55166 Change-Id: I1671e8f4d39f6c44e19eca7b9387f55fe3788294 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * Fix build for -no-feature-textdateStephan Binner2017-02-271-1/+1
| | | | | | | | | | Change-Id: I31ad3fdde293759f04a136d7c7212288cafdc840 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Merge "Merge remote-tracking branch 'origin/5.8' into 5.9" into refs/staging/5.9Simon Hausmann2017-02-245-12/+20
| |\
| | * Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-02-245-12/+20
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/moc.prf Change-Id: Ia71c8e3b3185f7c999bf226d0675051b10b8740b
| | | * QDockWidget: Fix memory leak when dragging a tab outside of a floating tab ↵Olivier Goffart2017-02-241-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | window A QDockWidgetItem will be leaked if a QDockWidget is dragged out of a floating tab window, and then plugged back somewhere. The problem is that QMainWindowLayout::unplug was not returning the QDockWidgetItem* from the floating tab's layout. When that's the case, a new QDockWidgetItem is created in QDockWidgetPrivate::startDrag and will be put into the layout, leaking the old QDockWidgetItem. Change-Id: Ifb9c1c562cb74383ebff1df0f91ee225c5cdb296 Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
| | | * dockwidgets: recalculate the press position if the window resizesSergio Martins2017-02-222-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A window can resize while dragging, this happens on Windows when dragging across screens, to a screen with a bigger scale factor. When that occurs it might lead to the press pos being outside of the window. Change-Id: Ic61ec7088c8fa81395d43ce665952dbd2eecba39 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| | | * Fix crash while dropping a tabbed group into a single floating QDockWidgetOlivier Goffart2017-02-212-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem was caused by commit 0feeb6f6d2cfaa964763ca1fcab65672812b4eef which fixed QTBUG-58036. It reparented widget that used to be skiped. In particular, floating widgets are skiped. But seting the parent of a floating widget docks it. And so as a result it would not be skiped anymore. This has two side effect: This breaks the animation (as the widget is docked too early; and cause crash when QDockWidgetGroupWindow get reparented as this breaks invariant that these are always floating. So restore the skip from before commit 0feeb6f6d2cfaa964763ca1fcab65672812b4eef, and explicitly set the parent in all cases when the animation finishes. Change-Id: I0e3e29ad22d6ffe4d62242d48a18dadb916fc14f Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
| | | * QMacStyle::sizeFromContents: don't do anything in CT_Menu caseOleg Yadrov2017-02-171-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In this case we can safely return the same QSize which we accept since it is already contains the right size for the given menu and this size will be bounded to screen geometry before QMenu will be displayed anyway. We also get rid of one dependency on HITheme. Change-Id: I7502a96d180fc4a41ce3dfabe8a200b886016348 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
| * | | QApplication: Remove code duplicationGabriel de Dietrich2017-02-241-11/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We always send mouse move events through the application event filters even if the widget has no mouse tracking enabled. This code portion is an almost verbatim copy of QCoreApplicationPrivate::sendThroughApplicationEventFilters(). The only difference is that previously the filter and the widget had to be in the same thread. Now, we compare the filter's thread to the application's. This is without consequence since widgets must live in the application thread. Change-Id: Ifee9c041e06d80ea0c2d2a947231e58ee4dfa24d Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * | QStyleSheetStyle: optimize away triple key lookupMarc Mutz2017-02-241-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of contains()/value()/remove(), all of which perform a new lookup, and a new application of qHash(), get an iterator using find(), deref it, then pass it to erase(). Also add some optimistic std::move(). Change-Id: I27a623dcd974de9c67d11d030e9b98d7598efc93 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * | QSideBar: replace a QPair with a structMarc Mutz2017-02-242-6/+13
| | | | | | | | | | | | | | | | | | | | | | | | Instead of the incomprehensible "names" .first and .second, the code can now use .index and .path. Change-Id: I1449ba668f703b9a8b9391b0a0774072c8c6e8aa Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * | QSizePolicy: plaster API with Q_DECL_NOTHROWMarc Mutz2017-02-232-24/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is mostly straight-forward, but some things are worth noting: 1. Yes, this is necessary. The noexcept operator looks for noexcept tagging, not at the contents of the function to determine whether to return true. The more conditionally-noexcept functions are used, the more important it becomes that low-level classes are correctly marked noexcept. In that, it is like constexpr. 2. In accordance with the rules governing noexcept specifications for the standard library itself, the set*Stretch() functions are not marked as noexcept, since they have preconditions and thus a narrow contract. Narrow-contract functions should not be noexcept. All other functions have wide contracts (ie. no preconditions). Change-Id: I853e0fc2d98cf3fcb16402a18ab136cccca24d89 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>