Commit Graph

4035 Commits (7eeb88a5cdcb9684e5cc123731d78e299135cd69)

Author SHA1 Message Date
Marc Mutz 1d0ee89548 QSideBar: replace a QPair with a struct
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>
2017-02-24 08:02:50 +00:00
Marc Mutz 758a56e662 QSizePolicy: plaster API with Q_DECL_NOTHROW
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>
2017-02-23 16:17:07 +00:00
Shawn Rutledge 6aaf853222 make TabletMove hover events conditional on QWidget::tabletTracking
This adds the tabletTracking property in the same way that mouseTracking already
existed: there is a WA_TabletTracking attribute, and a TabletTrackingChange event
to notify when it changes.  So for widget applications it's an opt-in feature.
QtQuick applications don't yet make use of tablet events, but when they do
in the future, we don't yet have a mechanism to turn the move events off;
it remains to be seen whether that will be necessary.

[ChangeLog][QtWidget] QWidget now has a tabletTracking property, analogous
to mouseTracking, which will enable TabletMove events while the stylus is
hovering, even if no button is pressed.  This allows applications to show
feedback based on the other tablet event properties such as rotation and tilt.

Task-number: QTBUG-26116
Change-Id: Ie96e8acad882b167e967796cdd17f1ad747a2771
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-02-23 10:42:42 +00:00
Shawn Rutledge ea615b421b handle TabletMove events during stylus hover
The main reason for this is to get feedback about the stylus orientation
(angles and rotation) before the user presses it.  For example an application
might provide an image of the brush which rotates along with the stylus.  As
with mouse events, applications can distinguish hovering by the fact that no
buttons are pressed.

On the xcb platform we need to stop blocking the hover events, and in
QWidgetWindow we need to send the event to the widget being hovered, while
keeping the existing "grab" behavior: after pressing the stylus (or any button
on the stylus or on the tablet), keep sending the events to the same widget
until release.

Task-number: QTBUG-26116
Change-Id: Iaed8b3b94961290dbb29b5fd2ea892fed7221685
Reviewed-by: Dmitry Kazakov <dimula73@gmail.com>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2017-02-23 10:42:23 +00:00
Marc Mutz b952bd3605 QSizePolicy: make (Policy,Policy) ctor constexpr
Unfortunately, that ctor also takes a ControlType argument (defaulted),
and calls the non-constexpr, non-inline function setControlType().

In order to make at least the two-arg version constexpr, I added
a use of the ternary operator to check for type == DefaultType,
making all calls of the ctor that use type == DefaultType
constexpr. For init'ing an aggregate type without ctor in the
ctor-init-list, I needed to require uniform initialization, too.

C++11-style constexpr cannot call void functions, so I needed
to extract the transformation part of setControlType() into a
new function that returns the result instead of storing it directly.

Saves a surprising 2K in QtWidgets text size on GCC 4.9, AMD64 Linux
stripped release builds.

Change-Id: Ib4adf5fd6e54d5345dbfe1c298554278faf13c58
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2017-02-23 05:44:51 +00:00
Sergio Martins 8c1f147eaf dockwidgets: recalculate the press position if the window resizes
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>
2017-02-22 23:11:01 +00:00
Marc Mutz 9fbe3a9262 QErrorMessage: replace a QPair with a struct
Instead of the incomprehensible "names" .first and .second, the code
can now use .content and .type.

Change-Id: I7fe320ded33a07fb8ff77ac96c17fc5ee1079da3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-22 16:42:29 +00:00
Tor Arne Vestbø c585802e94 QWindow: Remove "_q_foreignWinId" dynamic property
The platform plugins reading this out of the QWindow was a layering
violation, and propagates the notion that a window can shape shift
into representing a new native handle, while none of the platform
plugins support this.

A foreign QWindow is created via the factory function fromWinId(),
at which point we can pass the WId all the way to the platform
plugin as function arguments, where the platform will create a
corresponding platform-window.

The platform window can then answer the question of whether or
not it's representing a foreign window, which determines a few
behavioral changes here and there, as well as supplying the
native window handle back for QWindow::winId();

[ChangeLog][QtGui][QWindow] The "_q_foreignWinId" dynamic property
is no longer set nor read.

[ChangeLog][QtGui][QPA] The function createForeignWindow() has been
added to QPlatormIntegration and is now responsible for creating
foreign windows. The function isForeignWindow() in QPlatformWindow
has been added, and platforms should implement this to return true
for windows created by createForeignWindow().

Task-number: QTBUG-58383
Change-Id: If84142f95172f62b9377eb5d2a4d792cad36010b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-02-22 07:58:07 +00:00
Marc Mutz 7de8745eaa QSizePolicy: add C++14-style constexpr where possible
This is straight-forward, since, unlike with transposed(), we can
assume that every compiler that supports C++14 constexpr also supports
C++11 uniform initialization. For Clang and GCC, this is clear. For
MSVC, we might need to reconsider this, as, according to
qcompilerdetection.h, 2015 still does not support uniform
initialization (but not C++14 constexpr, either), and we don't know
what 2017 will support.

Change-Id: Idac7aa929d275645478a926896dca0dff166e114
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-22 07:12:25 +00:00
Olivier Goffart d57bb19902 Fix crash while dropping a tabbed group into a single floating QDockWidget
The problem was caused by commit 0feeb6f6d2
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 0feeb6f6d2,
and explicitly set the parent in all cases when the animation finishes.

Change-Id: I0e3e29ad22d6ffe4d62242d48a18dadb916fc14f
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2017-02-21 11:12:14 +00:00
Marc Mutz 22a88dce03 QErrorMessage: handle all message types
The perils of adding a default: case to a switch over an enum type:
the compiler no longer warns when the enum is extended.

Provide strings for QtCriticalMsg and QtInfoMsg, too.

[ChangeLog][QtWidgets][QErrorMessage] No longer displays critical
(QtCriticalMsg) and informational (QtInfoMsg) messages as if they were
debug (QtDebugMsg) ones.

Change-Id: Id6776081be736ad92423ec016988dcd92a963cc7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-02-21 09:49:05 +00:00
Olivier Goffart f3a4b4258f QWidget: update the font when the screen is changed
The screen may change the dpi so the font dpi is also changed.
We must tell QWidget that the font has changed by sending the
FontChanged event to all sub widgets so they can update their
geometry.

Task-number: QTBUG-48242
Change-Id: Ibcdcc0c96429b8cd16311928298294f47a23e816
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-20 12:48:34 +00:00
Oleg Yadrov 10d0f4cba9 QMacStyle::sizeFromContents: don't do anything in CT_Menu case
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>
2017-02-17 19:29:44 +00:00
Jarkko Koivikko b07f71a53f Widgets: Update micro focus in QLineEdit and friends
QLineEdit, QAbstractSpinBox and QComboBox did not notify micro focus
changes to the input context.

In particular, the updates were missed during pre-edit stage.

This change adds the missing bindings to QWidget::updateMicroFocus().

Change-Id: I9a7fff962f46dbabd8fb02836c206bace115793b
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-02-17 17:09:50 +00:00
Frederik Schwarzer 07745d7bfb Fix typo in apidoc.
Change-Id: Ibd71c1ed653769637aa176dfb52c4594141be8ce
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-02-17 16:47:21 +00:00
Liang Qi e5c3700a61 Merge "Merge remote-tracking branch 'origin/5.8' into 5.9" into refs/staging/5.9 2017-02-17 10:36:32 +00:00
Liang Qi c577f6edaf Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts:
	src/corelib/plugin/qlibrary_unix.cpp
	src/plugins/platforms/xcb/qxcbconnection.cpp
	tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp

Change-Id: I632c400d909f8c204f55743aadc7886af2f15dfb
2017-02-16 21:51:11 +01:00
Friedemann Kleint 88788667a0 QWindowsVistaStyle: Set theme flag noContent for PE_FrameLineEdit
When the flag is not set, custom background colors for QLineEdit
will not work. Set the flag as does QWindowsXpStyle.

Task-number: QTBUG-57862
Change-Id: I6e653c2cdc8cc523673e1629bf42f833c8504431
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-02-16 19:55:35 +00:00
Sergio Martins 99ce1d3d97 Take window frame into account when dragging dock widget
Dock widgets with custom titlebar are frameless by default, so this
isn't usually a problem. However, the user can override the default and
make it non-frameless (by just removing the native title bar, not the frame).

Task-number: QTBUG-58843
Change-Id: Iff7a2a719cb2f326f2f81bbfb1b53ba01a63f3e1
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-16 15:33:49 +00:00
Tor Arne Vestbø 2b34aefcf0 Lazily create QPlatformWindow for Qt::Desktop windows
QDesktopWidget only needs a QWindow to access its screen, and has no use
for the platform window. To keep old code working that may have called
winId() on the QDekstopWidget we still ensure it gets created lazily,
even if that will just create hidden fake windows on many platforms.

Change-Id: I2d05b96dfeebeaf3f1278cfef6301ef4cb855a57
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-02-16 15:30:02 +00:00
Frederik Schwarzer 1e7143cff8 Fix minor typos in apidoc
Change-Id: I5ce9599a60ea336b469807df075e491f0e6df680
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-02-15 15:01:45 +00:00
Kevin Funk e0c43fb046 QFileDialog: Protect against nullptr dereference
When the QFileDialog receives a language change event, and native
dialogs are used, this code path dereference a nullptr in the qFileDialogUi member.

Protect by checking the return value of QFileDialogPrivate::usingWidgets() as
done in other places deferencing qFileDialogUi.

Fixes a crash in GammaRay

Change-Id: I3e9eb81c75d9fc983519a58c5ec06e316ac80263
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-15 12:46:30 +00:00
Liang Qi 27432d40f2 Merge remote-tracking branch 'origin/5.8' into 5.9
Change-Id: I2bd2e61bae1eab4fc74fa6accd741ed9ae1f0669
2017-02-14 11:33:02 +01:00
Friedemann Kleint 071a120400 Windows styles/wizard: Do not invoke winId() of desktop windows
Call the Win32 API GetDesktopWindow() to obtain a HWND of the desktop
instead of calling QApplicationPrivate::getHWNDForWidget() for desktop
windows. This allows for lazily creating desktop platform windows.

Observed in some tests where no window is visible.

Change-Id: I97074f69606b3d74f3fbc90acb4a077d52eeb84d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-02-13 21:32:04 +00:00
Tor Arne Vestbø 7e98eb5f5f Prevent Qt::ForeignWindow from propagating into QWidget for non-toplevels
Qt::ForeignWindow implies Qt::Window, which QtWidgets interprets as a top
level window, but this is not the case on a QtGui level. A foreign window
can be a child window as well, so we have to make sure the QWindow state
is not propagated to QWidget, which would result in the QWidget becoming
top level.

Change-Id: Ie0c2d769ce92e6988a4d62da46f5fc2da74bdf08
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-09 14:10:36 +00:00
Tor Arne Vestbø a57f2128b1 Add QPlatformWindow::isForeignWindow()
Simplifies code at call sites and allows for refactoring how to decide
if a window is foreign or not at a later point.

Change-Id: Icc51a83bac187f4975535366b53b4990832b6c82
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-09 14:10:17 +00:00
Liang Qi dd756011da Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts:
	configure.json
	mkspecs/win32-icc/qmake.conf

Change-Id: Ibf40546b024d644c7d9ed490bee15b82597f4d3f
2017-02-08 15:49:18 +01:00
Marc Mutz 626a4d89c2 QFormLayout: take the correct row in takeRow()
I didn't even try to understand what the old code was trying to do;
once you're told by a user that the code is wrong, you see that it is.

Fixed by just using the row as passed to takeRow() instead of trying
to do some storage-index calculations. The m_matrix indexing operator
does it all for us.

Added a test that checks that the expected field widget gets
returned. Fixed expected test data that was wrong, and just checking
that the implementation behaves as implemented, instead of as
documented.

Amends change 8fbae648db.

[ChangeLog][QtWidget][QFormLayout] The functions takeRow() and
removeRow(), new in 5.8.0, now take and remove the correct row.

Task-number: QTBUG-58693
Task-number: QTBUG-15990
Change-Id: I7185ccbc6c03e2579741cad5c0c821d3ed165474
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-08 11:01:31 +00:00
Samuel Gaist 8b1d9d308b Fix result handling in QDialog::done
The setData method of an item view would get an incorrect value of a
QDialog's result. This patch changes the order of functions called to
fix that.

[ChangeLog][QtWidgets][QDialog] Fixed a bug where accessing the result
of QDialog's result could yield an incorrect value in some situation
like using it as a delegate for item views.

Task-number: QTBUG-6018
Task-number: QTBUG-12156
Task-number: QTBUG-14430
Change-Id: I6ee4b6e8cacf6a806631c05c6c5dbcff925df65e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-07 09:09:42 +00:00
Friedemann Kleint 4bf0ddb3f1 Fix some qdoc warnings for 5.9
Fix warnings:
src/network/access/qhstspolicy.cpp:158: warning: Undocumented parameter 'expiry' in QHstsPolicy::setExpiry()
src/network/access/qhstspolicy.cpp:178: warning: Undocumented parameter 'include' in QHstsPolicy::setIncludesSubDomains()
src/network/access/qhstspolicy.cpp:178: warning: Can't link to 'includeSubdomains()'
src/widgets/kernel/qsizepolicy.cpp:402: warning: Cannot find 'transposed(...)' in '\fn' QSizePolicy QSizePolicy::transposed()
src/widgets/kernel/qsizepolicy.h:165: warning: No documentation for 'QSizePolicy::transposed()'
src/widgets/util/qundostack.cpp:164: warning: Undocumented parameter 'obsolete' in QUndoCommand::setObsolete()

Fix the signature of the QStaticByteArrayMatcher member functions. The warnings
src/corelib/tools/qbytearraymatcher.cpp:372: warning: Cannot find 'indexIn(...)' in '\fn' QStaticByteArrayMatcher::indexIn(const char *haystack, int hlen, int from)
src/corelib/tools/qbytearraymatcher.cpp:382: warning: Cannot find 'indexIn(...)' in '\fn' QStaticByteArrayMatcher::indexIn(const QByteArray &haystack, int from)
remain, though since apparently qdoc is thrown off by the constructor.

Change-Id: I157359a881ff3fbc80d2eeb52dd5c27249d009c4
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-06 16:58:04 +00:00
Marc Mutz c876bb1f13 QInputDialog: prevent crash in static get*() functions when parent gets deleted
As explained in

   https://blogs.kde.org/2009/03/26/how-crash-almost-every-qtkde-application-and-how-fix-it-0

creating dialogs on the stack is a bad idea if the
application or the dialog's parent window can be closed
by means other than user interaction (such as a timer or
an IPC call). Since we cannot know whether Qt is used to
build such an application, we must assume it is, create
the dialog on the heap, and monitor its lifetime with a
QPointer.

Instead of using manual resource management, add a
minimal implementation of QAutoPointer, and use that in
all static get*() functions.

Task-number: QTBUG-54693
Change-Id: I6157dca18608e02be1ea2c2defbc31641defc9d1
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2017-02-06 14:41:46 +00:00
Oleg Yadrov ff34633bd0 QTabBar: fix vertical tabs appearance
Fail to take into account vertical tabs led to that vertical tabs were
displayed wrong in some cases (for example, QMovableTabWidget was
one pixel shorter than it should be).

Task-number: QTBUG-58266
Change-Id: I90411eeaa6055538634b62b5d5bd5fa5013b0015
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-02-02 17:33:09 +00:00
Oswald Buddenhagen dcd5cb9736 Merge remote-tracking branch 'gerrit/dev' into HEAD 2017-02-01 21:00:55 +01:00
Sergio Martins dd2a871eae Clear dock indicator when not over a floating dock group window
The rubberband is shown depending if there's a current hovered dock widget,
but there were a few places that were not calling updateGapIndicator().

Additionally, the rubberband will also disappear if the currentHoveredFloat
is destroyed externally (would leave a ghost rubber band behind).

Task-number: QTBUG-58049
Change-Id: Iafdf234aa04b0ee280e51f8fa2fd212c86610cd1
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-01 10:15:07 +00:00
Oleg Yadrov bc232b2bef QCommonStyle: fix a few typos and formatting issues
Change-Id: I7855795bf010865d5c2b8dd51538c446cdff1974
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-01-31 22:24:36 +00:00
Topi Reinio 07218826e5 Doc: Normalize \since usage
Although it's permitted to specify the project name together with
a version number for \since, it's unnecessary for Qt classes and
functions.

This change also normalizes the version formatting: '<major>.<minor>'

Change-Id: Ie5a43662077d13c31e241bcde8a7a2849d27d330
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2017-01-31 08:59:50 +00:00
Marc Mutz 714100f631 QSizePolicy: implement transpose() via transposed()
Having two implementations was nice for testing, but now remove
one of them.

Change-Id: I70dc7d16496427dd36ba2464c9f650ec865202b1
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2017-01-31 00:39:06 +00:00
Marc Mutz f66319faa1 QtWidgets: convert some users of QSizePolicy::transpose() to transposed()
Change-Id: I492c3825ac10145c6ca69029ad1bcda6efc971b7
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2017-01-31 00:38:53 +00:00
Liang Qi 246799d8a7 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	examples/network/network-chat/peermanager.cpp
	src/widgets/util/qsystemtrayicon.cpp
	src/widgets/util/qsystemtrayicon_qpa.cpp
	src/widgets/util/qsystemtrayicon_win.cpp
	src/widgets/util/qsystemtrayicon_x11.cpp

Change-Id: I1c026df83818c0ccaf956980370e7522960627db
2017-01-30 12:46:20 +01:00
Paul Olav Tvete bec3658e19 Fix build with -no-feature-animation
Change-Id: Ieecb9cdbf4373e295148ae5b3d59c43aaf46175e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-30 11:39:08 +00:00
Marc Mutz 8b9b27bced QSizePolicy: add a transposed() method
In some situations, this allows for nicer code. It's also possible to
make this constexpr in C++11, whereas the mutable transpose() would
require C++14-style constexpr.

The new function should also be faster, since it just swaps the member
variables.

Because of constexpr-function limitations, the way the return value is
constructed needs to depend on the level of the compiler's C++11 support.
This is not the only class that requires uniform init to provide a fully
constexpr interface (QUuid and QBasicAtomic come to mind), so this should
probably be generalized across Qt at some point.

Added tests.

[ChangeLog][QtWidgets][QSizePolicy] Added transposed() method.

Change-Id: Ic1077a0d5a861e7c63bd1daeeb42b97c3a2f71ef
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2017-01-28 07:46:27 +00:00
Marc Mutz ce3402b5ef QSizePolicy: add some constexpr
Also add a basic test for constexpr expressions involving QSizePolicy.

GCC < 4.8.0 has problems with initializing variant members in constexpr ctors:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54922

Instead of revoking its Q_COMPILER_CONSTEXPR, which is a source-incompatible
change, simply note the fact so we can selectively provide constexpr for
QSizePolicy.

Change-Id: Iba8e5a7cdf847d73e8e2b6bb6211fb3c9846aa0a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-28 07:46:22 +00:00
Friedemann Kleint af7cefd272 Widgets/qwidgetbackingstore.cpp: Fix developer build with MinGW
In  showYellowThing_win(), replace the switch by an array of COLORREF
and simplify the code accordingly, fixing:

kernel\qwidgetbackingstore.cpp: In function 'void showYellowThing_win(QWidget*, const QRegion&, int)':
kernel\qwidgetbackingstore.cpp:188:39: error: 'brush' may be used uninitialized in this function [-Werror=maybe-uninitialized]
         FillRect(hdc, &winRect, brush);
                                       ^

Change-Id: Id60be0e01e1edb2fa939d64abaf2e58357bcc14d
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2017-01-27 17:16:14 +00:00
Alexander Volkov 30d0e1770c Use std::enable_if instead of QEnableIf
Change-Id: Ideca8283141484cb6da47c50333f5c96e416f082
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-01-27 10:30:31 +00:00
Andy Shaw 02cc57f4ed QKeySequenceEdit: Allow for the case where pressing SHIFT+letter gives a different letter
On some keyboard layouts it is possible that pressing SHIFT+letter does
not give the upper case version of the character. So we depend on QKeyMapper
here to give us the right keysequence as then it will compare against
a shortcut created with this combination then.

Task-number: QTBUG-57928
Task-number: QTBUG-57931
Change-Id: I9421f3ab4d3f8d1ee42f9680200d4b017d551057
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-01-27 01:56:52 +00:00
Sergio Martins 0feeb6f6d2 Fix dock widget having the wrong parent after a drag
When dragging a dock widget from a floating group to the main window
reparentWidgets() is supposed to be called. It's usually triggered
by some unrelated event, like a LayoutRequest.

Instead of relying on luck for reparentWidgets() to get called be
explicit, otherwise the dock widget that was dropped into main window
will still have as parent the floating group window.

The item.skip() condition seems overly restrictive.

Task-number: QTBUG-58036
Change-Id: I65b5699e1acb6ca9bedb10620daa055fa9d91943
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-01-26 16:13:32 +00:00
Paul Olav Tvete 1327526d8e Remove duplicated feature definition
The "spinbox" feature was defined twice, and in two different ways.

Change-Id: Iabc8939036e2166c5c5a417181ae8fb244829123
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-26 13:52:16 +00:00
Paul Olav Tvete 0d3b3534ee Fix build with -no-feature-lineedit
Change-Id: I171aed5d134db88f211da0e1a6ce236e32f3c35c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-26 13:52:00 +00:00
Liang Qi 398a7e736c Merge "Merge remote-tracking branch 'origin/5.8' into dev" into refs/staging/dev 2017-01-26 00:37:14 +00:00
Allan Sandfeld Jensen 4d3a35f637 Make wheelScrollLines a QStyleHint
The number of lines to scroll on a wheel click have previously been
a QPlatformTheme hint and QApplication setting, this patch moves it to
QStyleHint so it may be easier read by QGuiApplications.

Change-Id: I80673c7b99d78c6407b1202b3742e1cb5fef0583
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-01-25 19:10:29 +00:00
Liang Qi 318b58562a Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	.qmake.conf
	mkspecs/common/msvc-desktop.conf
	mkspecs/common/msvc-version.conf
	mkspecs/common/winrt_winphone/qmake.conf
	mkspecs/features/mac/default_post.prf
	mkspecs/features/mac/sdk.prf
	mkspecs/features/qt.prf
	mkspecs/features/uikit/default_post.prf
	mkspecs/features/winrt/default_pre.prf
	mkspecs/winphone-arm-msvc2013/qmake.conf
	mkspecs/winphone-x86-msvc2013/qmake.conf
	mkspecs/winrt-arm-msvc2013/qmake.conf
	mkspecs/winrt-x64-msvc2013/qmake.conf
	mkspecs/winrt-x86-msvc2013/qmake.conf
	qmake/generators/win32/msvc_vcproj.cpp
	src/gui/kernel/qwindowsysteminterface.cpp
	src/network/kernel/qhostaddress.cpp
	src/plugins/platforms/mirclient/qmirclientplugin.cpp
	src/plugins/platforms/mirclient/qmirclientplugin.h
	src/widgets/util/qsystemtrayicon.cpp
	tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp
	tools/configure/Makefile.mingw
	tools/configure/Makefile.win32

Done-with: Jake Petroules <jake.petroules@qt.io>
Done-with: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Change-Id: I4be3262d3994e11929d3b1ded2c3379783797dbe
2017-01-25 20:06:06 +01:00
Paul Olav Tvete 195298326f Fix build with -no-feature-whatsthis
Change-Id: I2f31357e91b01f826ef44710f477b80fde1f3fbf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:38:39 +00:00
Paul Olav Tvete da21d20b85 Fix build with -no-feature-treewidget
Make sure the feature is defined before testing it.

Change-Id: I4d4b555c9f2629c8a3ca58cf52efff279f6a78f5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:38:34 +00:00
Paul Olav Tvete 08e8a02e51 Compile with -no-feature-tooltip
Change-Id: I6093559dd7b8df578ebd050655fb9bd07e5f6809
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:38:28 +00:00
Paul Olav Tvete 033fa96b6c Fix build with -no-feature-toolbutton
Change-Id: I16495548fa3ed24409883fadab08ddb8545efd0d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:38:23 +00:00
Paul Olav Tvete b0b726f8c7 Fix build with -no-feature-tabbar
Change-Id: I97c5345f2627743876aa05a94ffc03f2a6012b6c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:38:17 +00:00
Paul Olav Tvete 624b67c6fb Fix build with -no-feature-tabwidget
Change-Id: I0fbabdfec763f1647bf85582afe088a3e5b42e1f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:38:12 +00:00
Paul Olav Tvete 0f6cfd2217 Fix build with -no-feature-slider
Change-Id: I36e5c850068c2f9ac2ae078a3734ddb88d88c532
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:38:05 +00:00
Paul Olav Tvete 2bbeebf80c Fix build with -no-feature-textedit
Change-Id: I4a75c134803043180c57287ca352e26e3422204c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:38:00 +00:00
Paul Olav Tvete 2ac7fb78b9 Fix styles compilation with features removed, round 2
Change-Id: I8f09a8844e5edc1ad3e3dfd39eca9f3b42c5c828
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:37:54 +00:00
Paul Olav Tvete cabf2950f7 Fix build with -no-feature-rubberband
Change-Id: Ida6698c4868507ccbf5b4c5e3eb1d2f5a7109f53
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:37:48 +00:00
Paul Olav Tvete 6bf9f49072 Fix build with -no-feature-menubar
Change-Id: I23b23fcaf6fcc655d38a06495127b108975f4a58
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 14:37:39 +00:00
Alexander Volkov 69e233d2ba Avoid detaching temporary objects
Found with clazy [detaching-temporary]:
- don't call QList::first() on temporary
- don't call QString::operator[]() on temporary
- don't call QByteArray::data() on temporary

Change-Id: I390962ef6020e4fcb0b0e447a63eed1e314d18a4
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2017-01-25 14:28:34 +00:00
Paul Olav Tvete 056a35d02f Fix build with -no-feature-menu
Change-Id: I8f9d5ef6b7f7102e56816677f1d3a5b5144b7083
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 10:34:11 +00:00
Paul Olav Tvete eae92384b0 Compile with -no-feature-itemviews
Change-Id: I23506f06df35f124f5eb9fcc8426c63b407a0872
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 10:33:51 +00:00
Paul Olav Tvete 6d06d4b07c Fix build with -no-feature-graphicsview
Change-Id: I9ae724ddf90efc9e951d475e3332083e6f8207d6
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 10:33:46 +00:00
Paul Olav Tvete fcab718666 Fix build with -no-feature-dockwidget
Change-Id: Id484b54fd7191715e61ba6708247357b83159f28
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 10:33:41 +00:00
Paul Olav Tvete 27792ea098 Fix style compilation with -no-feature-...
Change-Id: Ic7fadf0622f98d339322a4a1d4d5c36908f4f7f6
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 10:33:36 +00:00
Paul Olav Tvete 7cafa85a49 Remove reimplementations of removed features
Avoid the "marked ‘override’, but does not override" compile error.

Change-Id: I4b125f1951614045781f3059fbc5cb65dd26775c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 10:33:32 +00:00
Paul Olav Tvete d82e23e775 Make sure features are defined before testing them
Include the file defining the feature before testing whether
the feature exists. Also use the new feature macro to make
sure this bug doesn't happen again.

Change-Id: I204836fee59b143a7ce7d256a7aed223c4d0ceb1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-25 10:33:27 +00:00
Friedemann Kleint fec5405f4d Fix some qdoc-warnings for 5.9
qtbase/src/corelib/global/qoperatingsystemversion.cpp:119: warning: Cannot find 'QOperatingSystemVersion(...)' in '\fn' QOperatingSystemVersion::QOperatingSystemVersion(int maj, int min, int mic)
qtbase/src/corelib/io/qdir.cpp:1852: warning: Unknown command '\p'
qtbase/src/corelib/kernel/qabstracteventdispatcher.cpp:482: warning: Cannot find 'registerEventNotifier(...)' in '\fn' bool QAbstractEventDispatcher::registerEventNotifier(QWinEventNotifier *notifier);
qtbase/src/corelib/kernel/qabstracteventdispatcher.cpp:495: warning: Cannot find 'unregisterEventNotifier(...)' in '\fn' bool QAbstractEventDispatcher::unregisterEventNotifier(QWinEventNotifier *notifier);
qtbase/src/corelib/global/qoperatingsystemversion.cpp:268: warning: Can't link to 'macro()'
qtbase/src/corelib/global/qoperatingsystemversion.cpp:296: warning: Can't link to 'typeName()'
qtbase/src/corelib/io/qdir.cpp:1845: warning: Undocumented parameter 'filters' in QDir::isEmpty()
qtbase/src/corelib/kernel/qobject.cpp:1636: warning: No such parameter 'interval' in QObject::startTimer()
qtbase/src/network/bearer/qnetworkconfiguration.cpp:343: warning: Undocumented parameter 'timeout' in QNetworkConfiguration::setConnectTimeout()
qtbase/src/gui/kernel/qoffscreensurface.cpp:337: warning: Undocumented parameter 'handle' in QOffscreenSurface::setNativeHandle()
qtbase/src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc:109: warning: Unknown command '\role'
qtbase/src/widgets/util/qundostack.cpp:727: warning: Command '\li' outside of '\list' and '\table' ...

Change-Id: I57bff895a8e1afd94b582a6a72a06771514ee27e
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-01-25 04:50:16 +00:00
Jake Petroules c1cece8e54 Fix deprecated API usage
Change-Id: I62448507f80daf6be72994ee99f0fb1aa107eb78
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-24 19:40:40 +00:00
Friedemann Kleint fc893d949c model-view-programming.qdoc: Add missing list/endlist
Fixes qdoc-warnings:
qtbase/src/widgets/doc/src/model-view-programming.qdoc:2076: warning: Command '\li' outside of '\list' and '\table'
qtbase/src/widgets/doc/src/model-view-programming.qdoc:2077: warning: Command '\li' outside of '\list' and '\table'
qtbase/src/widgets/doc/src/model-view-programming.qdoc:2078: warning: Command '\li' outside of '\list' and '\table'
qtbase/src/widgets/doc/src/model-view-programming.qdoc:2079: warning: Command '\li' outside of '\list' and '\table'

Amends change 7adfe7494b.

Change-Id: Ifa1121ba743c17d7223058e780ad03211565e3ff
Reviewed-by: David Faure <david.faure@kdab.com>
2017-01-24 12:33:09 +00:00
Gabriel de Dietrich aa8fb36089 QMacNativeWidget: Remove Carbon reference from documentation
Change-Id: Ie1f1064a98f202194cad98aa3fa106e87eba7f39
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-01-23 18:30:03 +00:00
Gabriel de Dietrich 40827457a7 QMacCocoaViewContainer: Fix typos, wording in documentation
Also removes reference to Carbon and the old dual backend.

Change-Id: I01292caa7efcbe85526cd7602ec8ac678fd78eab
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-01-23 18:29:57 +00:00
Topi Reinio 2597d27732 Doc: Remove specific mention of 'Qt 4' from Model/View documentation
Change-Id: If2101124d1bc772c9412c3d09d2d7753d9b51569
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2017-01-23 08:37:19 +00:00
Oleg Yadrov a41677d04c QQuickWidget: fix drag and drop
QQuickWidget did not receive mouse release events after drag and drop
because the logic was so:
1) QWidgetWindow::handleMouseEvent() was called on press and
qt_button_down was set to the corresponding QQuickWidget;
2) After drag started, qt_button_down was set to 0 in
QApplicationPrivate::notifyDragStarted();
3) On mouse release QWidgetWindow::handleMouseEvent() was called again,
but because qt_button_down was 0
QApplicationPrivate::pickMouseReceiver() returned 0 and as a result
QWidgetWindow ignored the event and did not propagate it to QQuickWidget
for further processing.

The step 2 is a widgets-specific fix for QTBUG-26145 that does not work
for QQuickWidget (QtQuick has its own focus system).

Note that because Widgets and QtQuick do not share the sources, there is
no possibility to cast the pointer to check whether qt_button_down is
a QQuickWidget or some other QWidget-derived class object, so we have to
use QObject::inherits() method to check that.

Task-number: QTBUG-56713
Change-Id: I599b843e903c64329e6178752e0dc49f674bb890
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-01-20 17:43:52 +00:00
Gabriel de Dietrich d22579f51e QWidget::winId(): Remove documentation bit about macOS
The Carbon port has been removed since 5.0, so there's
only one framework against which we can build Qt.

Change-Id: I38ce410f50cd4eda7abcc50ac4c4c7a23b3e1f45
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-19 23:37:40 +00:00
Sergio Martins 814a2c8ddf docs: Mention that QWidget::ensurePolished() also affects children
Change-Id: I083d1c503039010024c89db59003fb6fca050c26
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Martin Smith <martin.smith@qt.io>
2017-01-19 15:51:49 +00:00
Dmitry Shachnev 287f548d4c Make shortcuts work for platform menu bars
When a platform menu bar is used, the QMenuBar is hidden, so shortcuts
for QActions attached only to it do not work.

Extend the macOS-specific code to treat such menubars as visible to
other platforms, to make the shortcuts work.

The exception is made for internal QMenuBar shortcuts, which are
forwarded to the platform menu. A follow-up change will add support
for this to QDBusPlatformMenu. The updateGeometries() method is called
for platform menu bars too to make sure the internal shortcuts are
registered even if the global menu is in use.

Add two cases to the tst_QMenuBar::activatedCount() test to test
both native and non-native menu bars when possible (it now passes with
native menu bars too).

Change-Id: I2d7128512719ac199cd3f8f7ba28333d04d84ed4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-19 08:41:55 +00:00
Gabriel de Dietrich 04a74c362f QMacStyle: fix focus ring thickness on retina displays
NSSetFocusRingStyle() doesn't take the device pixel ratio
into account for offscreen graphics contexts. As a result,
the focus ring would appear too thin on retina displays.
Therefore, we need to render the focus ring in a more manual
way. The only added dependency is the focus ring's opacity
value and thickness.

This patch fixes CE_FocusFrame and the focus ring around
regular QPushButtons. More work needs to be done for other
widgets that currently rely on HITheme or NSControl–NSCell
to draw their focus ring.

Task-number: QTBUG-57843
Change-Id: I2c6f273698fdfd5ad7344a9688e96aef6da906f0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-17 20:12:37 +00:00
Alexander Volkov 27e27966bf QListView: Remove unneeded check inside the if block
info.wrap is already checked in the outer if condition.

Change-Id: I3a40dbaae22f00c66acb6f483b7b4786c5580d94
Reviewed-by: David Faure <david.faure@kdab.com>
2017-01-17 18:45:04 +00:00
Aleksei Ilin 0243863382 Fix access incorrect index in QListView with batch layout
The size of flowPositions is larger by one than the number
of rows in the model so the last correct row number is
flowPositions.count()-2, not flowPositions.count()-1.

Change-Id: Idf8bbd155151d553947d5d299dd01ffaff0c95fa
Task-number: QTBUG-47694
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: David Faure <david.faure@kdab.com>
2017-01-17 14:00:31 +00:00
Andy Shaw e12b9b0db3 QKeySequenceEdit: If the next key is Key_unknown then it should be ignored
When triggering a combination of keys which is causing a dead key then
it will send Key_unknown which is not a valid key to be used in a
shortcut so it should just skip past it as if it were a modifier key.

Task-number: QTBUG-57932
Change-Id: I16e004b84f3aa854f8f8f2bbdf86beb6d764de48
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2017-01-17 09:15:19 +00:00
Marc Mutz 6292ecdf6d QSystemTrayIcon: initialize all members
The 'showArrow' member was not init'ed.

Initialize it to true, which is the default value of the
QBalloonTip::showBalloon() function's argument of the same
purpose.

Reported as new by Coverity, but dating back all the way to
cc3875c2e4, so affects all
current branches.

Coverity-Id: 171482
Change-Id: Ica519ecda3a4ae413f606faab8c22f7072f412a8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-01-14 18:18:19 +00:00
Giuseppe D'Angelo 6255cb893d Remove qtypetraits.h's contents altogether
So that QFlags can use an (un)signed int matching the
underlying type as identified by the compiler and not by us.

Requires fixing a few warnings about sign conversion due to
QFlags misusages in qtbase that were either plain wrong, or
were relying on the enum being backed by an (un)signed int
when it wasn't.

Keep qtypetraits.h in the source tree in order to prevent
source breaks if some downstream #includes it (note however
that it did not contain any public API).

Change-Id: Ib3a92b98db7031e793a088fb2a3b306eff4d7a3c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-12 22:16:06 +00:00
Alexander Volkov a4c25c0205 Add expandingListItems property to QListView
This property allows to change the default behavior in
which list items occupy the entire width of the column.
Setting it to false will reduce their widths to the
minimum values, thus allowing to have intermediate free
space. Then the user will be able to begin selections
by mouse from this space.

[ChangeLog][QtWidgets][QListView] Added expandingListItems property.

Change-Id: I6bd1b147fd0335324310a165104c36f6b0d6ac9f
Task-number: QTBUG-56606
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
2017-01-12 17:54:52 +00:00
Alexander Volkov dcec1420ea Use QString::asprintf(), QStringBuilder, and the multi-arg overload of QString::arg()
... instead of sequential .arg(const QString &) callings.
It saves memory allocations and prevents unexpected results
if replacing strings contain place markers.
Found with clazy's qstring-arg check.

Change-Id: I3912275a6e11c6fb7559ff5623f2e8cde9b7f07a
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-12 17:54:28 +00:00
Marc Mutz 2ee5b5de22 Remove unused QEmptyModel
It's not exported and, while all-inline, is not used anywhere in Qt.
Since it's in a private header, it follows that we can safely remove
it.

Change-Id: I4b5534e4cf8187232bdce0a9f7a4795ece1e3555
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-11 13:07:10 +00:00
Sergio Martins 461549c35a Don't show bogus empty window when calling QMainWindow::restoreState()
Qt doesn't create the actual QDockWidgets when restoring, the user must
ensure they are created before restoring state. So lets not create an empty
QDockWidgetGroupWindow which you can't close and with no tabs.

Change-Id: If0a6aa7cf6f3932ff4274e03f787e27aef8fa53d
Task-Id: QTBUG-57492
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-01-11 10:52:16 +00:00
Tor Arne Vestbø 6f504a1cdd Widgets: report focus object change to QtGui before sending widget events
Updating the focus child means the focus object of the window has changed.
We need to report this to QtGui immediately so that it can e.g. inform the
input context of the new focus object, before widgets reacting to the focus
events start calling update() on the input method.

Change-Id: Ie3f7b835591e71519e3f384c2abdad53242c9736
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-01-10 23:24:57 +00:00
Kavindra Palaraja dfa08d65a5 Replace non-existent signals with the correct ones
activated() is actually triggered(), highlighted() is actually hovered()

Task-number: QTBUG-50315
Change-Id: Ieefdc8376102d80d0885a6c7ca47a9380945afef
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-01-10 06:37:53 +00:00
Nico Vertriest 280f067fe0 Doc: corrected qdoc list syntax
qundostack.cpp: Command '\li' outside of '\list' and '\table'

Change-Id: Ic162e246c754e125f6ae82a2a66312e925b231c2
Reviewed-by: Martin Smith <martin.smith@qt.io>
2017-01-09 15:30:25 +00:00
Jake Petroules 6b7e633248 Remove compatibility code paths for macOS < 10.10 and iOS < 8.0
Change-Id: I11bec0efc2b4d86adf64a58990260fee70f050ac
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2017-01-09 10:11:48 +00:00
Pierre Rossi 5311d481c2 Doc update: reflect use of native font dialog by default on macOS
The documentation still stated that the Qt standard font dialog was
used.

Task-number: QTBUG-47572
Change-Id: Iff4262869efde2d9fefb38264b2f6f8a9d2f7483
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-01-08 09:07:51 +00:00
Marc Mutz 1d1b60dee4 QStylesheetStyle: don't lose precision when drawing a progress bar
When qreal is float, it cannot represent all values an int can take,
so we may lose precision in the expression

  qreal(a) / b

as opposed to the double result

  double(a) / b

For lack of trying, I do not know of a value where this would change
the resulting 'fillWidth' value, but better be safe than sorry, and
use double instead of qreal arithmetic.

Also, when calculating fillRatio, we were converting values back and
forth between qreal and double. Using double everywhere avoids that.

Found while reviewing integer arithmetic in QProgressBar as part of
the fix for QTBUG-57857.

Change-Id: I054cb11d35e3ecf5bf79b5c8ee39029bd23bcf49
Reviewed-by: David Faure <david.faure@kdab.com>
2017-01-07 10:48:45 +00:00
Marc Mutz 555a0f3c51 QFusionStyle: don't lose precision when drawing a progress bar
When qreal is float, it cannot represent all values an int can take,
so we may lose precision in the expression

  qreal(value) - minimum

as opposed to the exact result

  qint64(value) - minimum'

For lack of trying, I do not know of a value where this would change
the resulting 'progressBarWidth' value, but better be safe than sorry,
and use the 64-bit integer expression instead of floating-point.

Found while reviewing integer arithmetic in QProgressBar as part of
the fix for QTBUG-57857.

Change-Id: I0240c143bb75af6986910489b34042ce9b3a8caa
Reviewed-by: David Faure <david.faure@kdab.com>
2017-01-07 10:48:38 +00:00
Marc Mutz 3f996edbb6 QPixmapStyle: do not assume minimum == 0 when painting progress bars
The arithmetic used to calculate the size of the progress bar fill in
QPixmapStyle assumed minimum == 0, but that does not necessarily
hold, since the minimum value is user-defined.

So, fix the arithmetic to take the minimum into account, taking care,
as done elsewhere, to avoid signed integer and qreal=float overflows,
by using qint64 and double, respectively.

[ChangeLog][QtWidgets][QPixmapStyle] Now handles progress bars with
minimum != 0 correctly.

Change-Id: I738ded56e8234716c36a5e9fde15bae691c43a35
Reviewed-by: David Faure <david.faure@kdab.com>
2017-01-07 08:19:38 +00:00
Marc Mutz a3d0983f59 QProgressBar: don't lose precision in text()
When qreal is float, it cannot represent all values an int can take,
so we may lose precision in the expression

  qreal(d->value) - d->minimum

as opposed to the exact result

  qint64(d->value) - d->minimum'

For lack of trying, I do not know of a value where this would change
the resulting 'progress' value, but better be safe than sorry, and use
the 64-bit integer expression instead.

Found while reviewing integer arithmetic in QProgressBar as part of
the fix for QTBUG-57857.

While touching the line, make the (intended) double → int truncation
explicit, by using a static_cast.

Change-Id: I03dbfce24c709310c3bbad9487a2bf0d1d78137a
Reviewed-by: David Faure <david.faure@kdab.com>
2017-01-07 08:19:31 +00:00
Marc Mutz e35c993020 QProgressBar: remove unneeded ctor-style no-op cast
The expression '100' already has type int, so the cast is not necessary,
and confusing.

Remove it.

Change-Id: Id63f56645b1b13532f73e481547c2a606dfc9c9a
Reviewed-by: David Faure <david.faure@kdab.com>
2017-01-07 08:19:23 +00:00