Commit Graph

19099 Commits

Author SHA1 Message Date
Marc Mutz
1005b7a0de Long live qUtf16Printable()
QString::asprintf() has the ability to take a ushort* array as
obtained from QString::utf16() and insert that into the output
with an %ls conversion.

But no-one ever used this, because just passing QString::utf16()
to QString::asprintf() creates a warning about wchar_t* expected,
but ushort* provided.

The new qUtf16Printable() macro adds the necessary casts (via void*
to prevent any "type-punned pointer" warnings) to make
passing QString::utf16() to QString::asprintf() work silently.

This should greatly reduce the need to do a round-trip via utf-8
just to print the contents of a QString.

[ChangeLog][QtCore] Added qUtf16Printable().

Change-Id: I7ddd8d2b2a2191c9faa26aca95d49850d94b287c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-11-21 14:25:55 +00:00
Marc Mutz
226ce6020e QPair: use std::type_traits for exception specifications
This should solve problems with our use of the noexcept
operator, because that's how std::pair is defined, too.

Mid-term, we should kill QPair and use std::pair instead.
It really has gotten way too complicated to implement a
C++11 pair correctly.

Task-number: QTBUG-48780
Change-Id: Ied0acd220e5131000a957dc356d6efcdd8f83828
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-11-20 20:17:47 +00:00
Marc Mutz
e4e10fa2d5 QString::vasprintf: remove egcs-2.91.66 workaround
We don't support that compiler anymore.

Change-Id: I6d100a2d149ce4e506c7f8be3b56a33fa9d7092f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-11-20 11:09:21 +00:00
Erik Verbruggen
5ff7a3d96e Add {add,sub,mul}_overflow for signed integers.
In C++, signed overflow math is Undefined Behavior. However, many CPUs
do implement some way to check for overflow. Some compilers expose
intrinsics to use this functionality. If the no intrinsic is exposed,
overflow checking can be done by widening the result type and "manually"
checking for overflow. Or, for X86, by using inline assembly to use the
CPU features.

Used in QtQml.

Change-Id: I2ef2523ccaa98f6757a45e24862a2fa730a26bb0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-11-20 11:08:05 +00:00
Rafael Roquetto
986a5262e3 Add QPixmapStyle class
The QPixmapStyle class provides a mechanism for implementing pixmap based
QStyles, using the same concept introduced by the BorderImage QML component.

The bb10style plugin in qtstyleplugins uses this class and is currently the
only user.

Change-Id: Ibfa2104e95ba6a91e89a6277baa97a7fc9edaec2
Done-with: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-11-19 15:43:53 +00:00
Alex Trotsenko
3d93fb0771 QAbstractSocket: simplify a check for data availability
We know that the QAbstractSocketPrivate::canReadNotification() slot is
called by the engine's read notifier only when new data is available for
reading, or when the socket has been closed. This allows us to remove
additional checks for engine validity and data availability for unbuffered
sockets.

Change-Id: Ic278cf2214d418d8fe471ea24a765b8d5840b0a5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-11-19 14:58:11 +00:00
John Cumming
208496091d Add Section Symbol at end of text flow when showing paragraphs
Insert a section symbol (U+00A7) to the end of a text flow instead of a
space as many text layout applications do.

Task-number: QTBUG-49252
Change-Id: Ib1276b508c24824b6329e0458ae5171bc1a288c3
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-11-19 11:53:30 +00:00
Marc Mutz
bbe65832f5 QString::vasprintf: avoid allocating memory for format text copied verbatim
... by using the new QUtf8::convertToUnicode() function in
conjunction with QString::resize().

For this to be a clear optimization, resize() must be banned
from shrinking capacity, which another patch will implement.

Change-Id: I6394af95ef1aaae131e23a4227734eb76fa685cd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-11-19 11:30:43 +00:00
Marc Mutz
db9a0befca Add a QUtf8::convertToUnicode() overload that operates on an existing buffer
... and therefore doesn't need to allocate and thus
can be marked as nothrow.

Technically, the function doesn't have a wide
contract, because it has the precondition that
the buffer pointed to by the first argument needs
to be large enough to hold the result.

But that precondition can't be checked from within
the function, so no failure can be generated for
it and thus the nothrow guarantee is acceptable
(and desireable).

Change-Id: Iaf6ea6788ef6b4bbb6d8de59a3d0b14d66582307
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-11-19 11:30:37 +00:00
Marc Mutz
110e82f5e9 QString::vasprintf: avoid allocating memory just to parse a number
Port parse_field_width from constructing a QString and
then calling toInt() on it to use qstrtoull().

Not only do we not allocate memory anymore, we even
don't need to copy the digits out of the format
string - qstrtoull() does it all for us.

In order to preserve behavior with the previous code,
which consumed all digits before performing error
checking on them, we also consume all digits, even if
qstrtoull() would have returned the start of the range
as the end pointer.

Change-Id: Ief941ce3a8ea43d2e5475d9eab77d7d0d7abc450
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-11-19 11:30:30 +00:00
Marc Mutz
e17629e32d QString::vasprintf: Extract Method parse_field_width
... and reuse the function to parse precision, too.

This also allows to more easily simplify it (done in a
follow-up commit).

Change-Id: I9da27c4b06565f676e15ef9cab7c53b5d464515e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-11-19 11:30:23 +00:00
Marc Mutz
139fd9bd0d QString::vasprintf: Extract Method parse_flag_characters
... and simplify the method afterwards:

Drop the boolean that was used to control program
flow when the code was still part of vasprintf(),
by taking advantage of the fact that we can now
just return from the function to break out of both
the switch and the loop.

Change-Id: I97f050b63c0c309aaed3cb0fe979d53c8d970003
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-11-19 11:30:07 +00:00
Erik Verbruggen
72c68f5f22 Reimplement qt_inf/qt_snan/qt_qnan using std::numeric_limits.
Qt already assumes a working IEEE-754 implementation, so we can rely
on a working std::numeric_limits<double>.

This patch also gets rid of three cases of type-punning with unions
(which is undefined behavior in C++).

Change-Id: Ic3747f49d55e372960abf2091c1d5752c1eccdff
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-11-19 10:56:41 +00:00
Liang Qi
c7934f2489 Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
	src/corelib/io/qprocess.cpp
	src/corelib/io/qprocess_unix.cpp
	src/network/kernel/qnetworkinterface_winrt.cpp
	tools/configure/configureapp.cpp

Change-Id: I47df00a01597d2e63b334b492b3b4221b29f58ea
2015-11-18 09:01:51 +01:00
Oliver Wolff
08f9a1bd6a winrt: Fixed listening to tcp socket
For some reason add_ConnectionReceived has to be
called on the Xaml thread now. Otherwise the callback
function won't be called and thus listening on a TCP
socket won't work at all.

Task-number: QTBUG-49121
Change-Id: I11ce2f72b0c1d3bb20e9579de5a2ce5150ca966a
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Samuel Nevala <samuel.nevala@intopalo.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2015-11-18 06:05:44 +00:00
Samuel Nevala
aecf3006bd winrt: Fix startup orientation handling
Calling QWinRTScreen::onOrientationChanged in the class constructor
can lead to situation where QWinRTScreen is expected to be fully
constructed. Moving the onOrientationChanged call to
QWinRTScreen::initialize ensures that QWinRTScreen is fully
constructed when it is called.

Task-Id: QTBUG-49470
Change-Id: I52748f33a9011dec3a172c1a74023cad15aae38a
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-11-18 06:05:23 +00:00
Thiago Macieira
3dd6ac244f Add support for the C++11 features fixed in MSVC 2015 Update 1
This brings MSVC 2015 support to almost C++11 feature completion.
Constexpr support still has one annoying bug, for which the fix is
promised for Update 2.

Change-Id: I92c2ee6638625c61e3a16690563434e32d853368
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-11-18 00:30:47 +00:00
Thiago Macieira
7ad560b2bc Fix build with OS X 10.8 SDK
The ffsll function is missing with that SDK, but Clang and GCC support
it as the builtin.

Change-Id: I9f4d900898814b569c1affff140e15fb59fb45d8
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
2015-11-18 00:30:45 +00:00
Thiago Macieira
1378e7af1d qdrawhelper.cpp: Fix constexpr build with MSVC 2015 Update 1
error C2397: conversion from 'uint' to 'uchar' requires a narrowing conversion

Change-Id: Ic1b9e0a78b2faa5a0ae4e6de33ab2ee4b654af5f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-11-18 00:30:41 +00:00
Thiago Macieira
f29b6943f0 QString: Fix in-place toUpper/Lower when there's size expansion
When that happens, we need to detach (in-place conversion won't work),
so we recurse back into the same function, but the template version that
does detaching.

Task-number: QTBUG-49181
Change-Id: Idba8c29717f34c70a58fffff1412fea3acc95f98
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-11-18 00:30:40 +00:00
Thiago Macieira
7c05a0cc99 Merge "Merge remote-tracking branch 'origin/5.5' into 5.6" into refs/staging/5.6 2015-11-18 00:30:38 +00:00
Oswald Buddenhagen
ded63fbb94 make a proper header-only module for QtZlib
that way other modules can use the headers without hacks.

this required making the base directory for paths in headers.pri
configurable in syncqt.

Change-Id: Id35cfe05bcf4c576d3f2d0d8d09590a5e23d21d3
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-11-17 20:22:17 +00:00
Alexander Volkov
2047fe9253 xcb: Process _NET_WORKAREA and screen geometry changes separately
This commit allows to avoid superfluous calls to the X server.
We don't request _NET_WORKAREA values when the screen geometry changes,
and we avoid RandR calls on each _NET_WORKAREA change.
Besides, update the available geometry of all screens with the
same root window, rather than only that one which corresponds
to Qt::Desktop window.

Change-Id: I5ec624717f5f261c986cd9aaf2425f22985e11c0
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2015-11-17 18:08:31 +00:00
Alexander Volkov
8beec99899 xcb: Handle screen siblings in QXcbVirtualDesktop
Change-Id: I2f3c3ad75bb3914667cf6f27dc2d91aac103607b
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2015-11-17 18:08:21 +00:00
Volker Krause
874aaa6ea0 QTest::mouseEvent expects window-local coordinates.
This makes the automatic center click feature of the mouse event methods
also work if the target window isn't positioned at 0,0.

Change-Id: I0d711e484620900ba2ffc4139f7e13346a7482d3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-11-17 15:30:40 +00:00
Samuel Nevala
4f1234033b wirt: Fix cursor position method.
The native position is given in device-independent pixels, so multiply
that by the window scale factor. If no cursor is present (e.g. on
Windows Phone), the native API returns SHRT_MIN as the coordinate values.
Catch that and pass Infinity instead in order to enable the cursorless
fall-back behavior in QQuickMenu::popup().

Change-Id: Ibe8ebcdbe257e8df25eea9873e8f4fa647ae1ab2
Task-Id: QTBUG-48265
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-11-17 14:59:47 +00:00
Tim Blechmann
f49deb790f Windows: Open GL - Blacklist all 6th generation intel hd graphics devices
the windows driver for Intel HD Graphics 3000 is buggy. the original
blacklist was using device ids from:
http://www.pcidatabase.com/search.php?device_search_str=graphics

however this list seems to be incomplete. to be on the safe side, we should
blacklist all 6th generation devices, as taken from:
https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units#Sixth_generation

Change-Id: I1bb6c39a310d741b7a9eb0fed9767bb316415996
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-11-17 14:29:20 +00:00
Dmitry Shachnev
2a2ca8e6bb Use “Adwaita” as the default icon theme for QGnomeTheme
That is the new name for gnome-icon-theme for more than 1.5 years. See [1]
for details.

Still keep “gnome” as the fallback icon theme, so this commit should not
break anything.

[1]: https://mail.gnome.org/archives/desktop-devel-list/2014-April/msg00086.html

Change-Id: Ifc2178827ad2cf6fdbc4e5248c83789ebc5b797e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Jens Bache-Wiig <jensbw@gmail.com>
2015-11-17 14:19:35 +00:00
Liang Qi
17dc773221 Merge remote-tracking branch 'origin/5.5' into 5.6
Change-Id: I6b1fe0c6c360a0d5285911869f0f4f93d86d822e
2015-11-17 07:14:16 +01:00
Maurice Kalinowski
99d061ffd5 winrt: Do not emit keyboard changes in the constructor
QWinRTInputContext is created from the XAML Thread, which can cause
problems when handleVisibilityChange is invoked. Instead just query the
keyboardRect and skip the emit.

Task-number: QTBUG-49389
Change-Id: I158204a07b9e000adffdc308e68b0f1425ed7c62
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-11-16 19:44:28 +00:00
Olivier Goffart
6a2f7aa3ae QVariantIsNull: remove the non-C++11 implementation
decltype is required now

Change-Id: I69173127bd35f1d29945c8cfa47e1fbf1479c14d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2015-11-16 19:08:01 +00:00
Olivier Goffart
ae35b2dc62 foreach: remove implementations not using decltype
decltype is mandatory now so we can remove the implementations
of Q_FOREACH that are not using decltype

Change-Id: If42a7fb078230ee7bdb55a9442125d7af70913e6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-11-16 19:07:58 +00:00
Olivier Goffart
1e30be700a qobject.h: remove hack that simulated decltype
In order to know the type of the arguments of a functor with compilers
not having decltype, it was simulated with an intermediary function.

Now that decltype is mandatory, we can remove this hack

Change-Id: I7eb283943abeeb4ef1c62358da89b0ede70b3ef5
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-11-16 19:07:56 +00:00
Aleix Pol
d2792d2ed9 Fix screenForGeometry on a corner case
QRect only deals with integers, and I had a window set on the corner and
without a size. When this screen was created, it was reported to be on the
wrong screen, thus created there wrong.
The reason for this is that ::center is not prepared for this use.
QRect(QPoint(500,500), QSize()).center() is QRect(499, 499)

Change-Id: I24e57182f84873306f180749e96368d6da1147a9
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-11-16 16:01:03 +00:00
Nico Vertriest
d0f57439d0 Doc: Added info about sorting in QItemSelectionModel::selectedIndexes
Task-number: QTBUG-40726
Change-Id: I450f9735fbbdc6574e8a14ea0076a28ee65077de
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-11-16 15:26:11 +00:00
Nico Vertriest
90c81366d1 Doc: added specs to setHorizontalHeaderItem()
Added that adding an item deletes an existing one

Task-number: QTBUG-42105
Change-Id: Ibcf08e6e2bf9c9239e7eca5aa48f2f30c8417fec
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-11-16 15:26:04 +00:00
Nico Vertriest
50f91545a3 Doc: removed 2 invalid external links in external resources.
Link to Using a Designer UI File

Task-number: QTBUG-49251
Change-Id: I9d2e5ad746ce5c3933f28b8159e381dcdb8e643a
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-11-16 15:25:56 +00:00
Nico Vertriest
c81fcffed8 Doc: Corrected minor typo
Task-number: QTBUG-27499
Change-Id: I20b8da6300b84a107f6f581b99c63a39f8455d6c
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-11-16 15:25:47 +00:00
Nico Vertriest
5c4c5dd7a2 Doc: corrected snippet QSqlTableModel
Wrongly used QSQLQueryModel previously

Task-number: QTBUG-35860
Change-Id: I059ba45e54ac67b75b68eb0b804f66642b87a29f
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-11-16 15:25:35 +00:00
Oswald Buddenhagen
778e6de8a2 move addition of libdl to right project
Change-Id: Ifae8b906ef3767d9c21f09953076bd640829858f
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-11-16 14:40:27 +00:00
Oswald Buddenhagen
79cdc7a26c remove abuse of module include path overrides
these modules simply have no "proper" include paths (they are used only
within qtbase, with explicit INCLUDEPATH statements).

Change-Id: Iec6aa6ae0bc449eb8cac2fa1c86a791755eec06e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-11-16 14:40:24 +00:00
Konstantin Ritt
e593e5aa67 QChar: Simplify case convertion code with template magic
Same as in QString, though simpler a bit due to fixed-length sequence.

Change-Id: Idd6670a7b6415f5d515987c30931d16b73dd280e
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-11-16 14:34:13 +00:00
Konstantin Ritt
c267646867 Move CasexTraits from qstring.cpp to qunicodetables_p.h
and implement TitlecaseTraits as well,
to be re-used in the following commit.

Change-Id: I5c0bff42fe3b9bc9c2454cc16916cc2be87f604f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-11-16 14:34:04 +00:00
Konstantin Ritt
4d5b57825a QFontEngineFT: Optimize format convertion code with template magic
Avoids in-loop check for every pixel by costs of slightly bigger code.

Change-Id: I8321d0945ac6b677786431670b2316c60e4db492
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-11-16 14:33:51 +00:00
Konstantin Ritt
6a7155997b QFontEngineFT: Revise the legacy LCD filter implementation
Use an optimized version of the intra-pixel filter found
in FreeType's _ft_lcd_filter_legacy().
Gives us somewhat better accuracy and better performance.

Change-Id: Id4200b67e6ff55f605037c3e5464fef8bb03fbde
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-11-16 14:33:37 +00:00
Eskil Abrahamsen Blomfeldt
a856c4a902 Fix falsely reported style for fallback font
In change 8f6b328410 we override
the fontDef of the fallback font with the fontDef of the
original font (with the family name replaced) to fix a
regression where boldness was not inherited by the fallback
font.

This caused a bug, though, since the contents of the fontDef
would now misrepresent the actual font used. The side effect
of this was that isSmoothlyScalable() returned false because
the family and styleName combination we claim to have did
not exist in the font database. Result: We fell back to
native rendering for the font even though it's scalable.

Weight and style are the only parts that should be inherited,
since they are synthesized. So rather than overwriting
the fontDef completely, we copy the weight and style when
needed.

The bug in QTBUG-42963 is still fixed after this change.

[ChangeLog][Text] Fixed problem where fallback fonts for text
with certain styles would be reported as unscalable.

Change-Id: I95ef67f818852aea5a6ae8df789a52364ecb59a6
Task-number: QTBUG-47547
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-11-16 14:33:23 +00:00
Tor Arne Vestbø
96cebb46c2 OS X: Don't forward key events to popup window if it's a tooltip
676edc006e introduced a regression by not filtering the active
popup window for tooltips, which is what the corresponding mouse
handler in QNSView does.

Change-Id: I5091dba0dd43be2e859ea360dfd812c0f081fd32
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-11-16 14:26:44 +00:00
Richard Moe Gustavsen
f3593564da iOS: add support for native message dialogs
This patch will add support for native message dialogs on iOS.

Change-Id: Iba2237b371ccbdfe4c772d25c3ea925eb64e5a0c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-11-16 12:47:20 +00:00
Richard Moe Gustavsen
a955d9d142 Widgets: enable scroll buttons to be placed anywhere on a QTabBar
If a tab bar contain more tabs than it can fit inside its geometry, it
will show two scroll buttons that lets the user scroll left or right.
From before, those buttons where hard coded to always be placed
together on the right side of the tab bar.

This patch will make it possible for the style to specify the exact
geometry of both scroll buttons. The reason for this is that 3rd party
styles has a specific need to place the "scroll left" button on the left
side, and the "scroll right" on the right side. Additionally, there is a
need to draw fade-out effects on tabs that end up half-way obscured by the
buttons. This can already be achieved by extending the tab tear concept to
include two tears/fade effects, one for each side of the tab bar.

Previous code in QTabBar that hard-coded scroll buttons and related
functionality will now be factored out to the style, and the base
style (QCommonStyle) will implement the old default logic of placing the
buttons together on the right side. Six new style enums will be added:

SE_TabBarScrollLeftButton: the rect of the left scroll button
SE_TabBarScrollRightButton: the rect of the right scroll button
SE_TabBarTearIndicatorLeft: the rect of the left tab tear
SE_TabBarTearIndicatorRight: the rect of the right tab tear
PE_IndicatorTabTearLeft: draw the left tab tear
PE_IndicatorTabTearRight: draw the right tab tear

Change-Id: I4cda05c2f7323de5cbd3ca071eb796085257c19b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-11-16 12:47:01 +00:00
Timur Pocheptsov
52e335e191 Fix for a native socket engine on Windows
nativeConnect calls WSAConnect, tests its return value and  then in case of SOCKET_ERROR
checks WSAGetLastError and calls getsockopt to extract SO_ERROR. While MSDN
says that getsockopt  should clear the error, it's not true and this error can later affect in some
weird way the next WSAConnect attempt/or nativeConnect's logic.
Found in tst_qtcpsocket::bindThenResolveHost failing in this scenario: QHostInfo
has a list of invalid/valid addresses,
and as a result test doing strange things in waitForConnected and failing (and sometimes
passing).

Task-number: QTBUG-49255
Change-Id: I71f771647f305d8ca327d25ac7382a2edab96d17
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-11-16 04:19:38 +00:00