On wince with freetype engine can't render text for non-latin text.
because wince doesn't have truetype font FONTSIGNATURE api. so match
function in qwindowsfontdatabase_ft.cpp was always failed and render
incorrect text.
this patch has 3 changes.
1. extract font unicode signature using GetFontData function
2. append font fallback data from registry
(see. http://msdn.microsoft.com/en-us/library/ms901076.aspx)
3. wince's default font path is windows. correct fontdir
Task-number: QTBUG-31974
Change-Id: If969df353492141669eeab33119f3506602871b3
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Optimize isViewItemCached() a bit by reordering conditions so that
conditions that going to change more often in a common case evaluated first.
Change-Id: Ibb406f964345e8f2bff7b433bf33e09a99dcbdc4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
As of 5.0, this always return true.
Change-Id: If225c7219e283da97e870f0d66a87b21c3cacfc0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This fixes rendering in the OpenGL paint engine,
simplifies our internal code paths and also produces
nicer text for non-90 rotated glyphs
Change-Id: Ib206065cd486ac29067f9ebf4a0d74189a673f1e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Whilst having the objectName set for each engine is
somewhat handy when debugging, deriving from QObject just for that
is a wasting of memory in all other cases.
This also broke the font engine abstraction by allowing qobject_cast()
to access some private data; the only sane way to distinguish
engines is querying their Type value.
Change-Id: Ib1d195692859eb39089f6d8d9016cb8f9dcc0400
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This removes the trailing slashes from the path and then removes dirs
set twice in XDG_DATA_DIRS (always removes those from the right side).
There's no use for duplicit dirs in XDG_DATA_DIRS because if whatever is
being looked up is not found in the duplicated dir the first time, it
won't be there the second time.
Currently it causes troubles for example in mime types, where it returns
duplicated mime types as the same dir is searched multiple times.
For obtaining the original value of XDG_DATA_DIRS, one can use
qgetenv("XDG_DATA_DIRS").
Change-Id: Ic4f8ef6c6fe096555948e318899207e9d4ca8289
Reviewed-by: David Faure KDE (deprecated, use kdab instead) <faure@kde.org>
Clang is perfectly able to deal with the libstdc++ headers. The
problem on Mac is that those headers are mightily old (from GCC 4.2),
so they are insufficient for C++11 support.
So make a more accurate test. This allows Clang to enable C++11 in the
presence of newer libstdc++ header (e.g., Clang on Linux or Clang on
FreeBSD).
Change-Id: I4f457ca82bf13feca0af78c9363cb6365bb3f68e
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Replace that need with a macro so that registration of the
container helper conversions is done at the time of registration
of the container (usually when it is put into a QVariant).
Change-Id: I823fb3fdbce306ebc9f146675ac43724cec678d5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
The old code used to check for usingWinMain, which is not set when
Qt is used within a DLL. Try to check for presence of stderr
by checking for a console window or a redirected stderr-handle.
Task-number: QTBUG-32044
Change-Id: I87893c3438f5e92d73488e9c25b95cbfeaacc1f6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Not strictly needed yet, but helps to reduce the size of QDateTime and
make it easier to read a major re-write. Imposes separation of parser
which will be needed if we make QLocale always use the system backends,
after which only QDateTimeEdit widget will need the parser and it can
be moved there.
Change-Id: I6a5e9a3edf6fe8ff2340af6afecd8ba4bfde9dd4
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
To be consistent with signals which are public since Qt5.
Change-Id: I633077e37d0851b118c22da0681e8b8b1892ddbb
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
The dialog thread can outlive the platform dialog helper if
the helper is destroyed. In that case, IFileDialog::Show()
returns since the parent window is destroyed and then tried
to emit signals on the destroyed helper class instance.
Pass a shared pointer to the native dialog instead of a pointer
to the helper class to the dialog.
Task-number: QTBUG-32494
Task-number: QTBUG-30513
Change-Id: I7c2e769460270a26d886fdefee93ea59c2a17196
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Change-Id: I7149ec2fdabdfcfa7d6f28b1105da154a333096f
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
The QT_POINTER_SIZE is not detected on Windows. We can safely set
this to 32 bit for Android since we only support 32 bit builds
on Windows.
Task-number: QTBUG-33397
Change-Id: I891cf01444d1ba9216ed2c3ba33ef40c61d50dd9
Reviewed-by: BogDan Vatra <bogdan@kde.org>
The third parameter is `extraCondition`, which is false by default,
and it is used in condition
`if (!extraCondition && QThread::currentThread() != qApp->thread()) {`.
Passing extraCondition=true makes this condition always evaluate to false
and thus hides a respective warning at all.
Change-Id: Ia8ef48f341bd22f58375034d1992da716f78121d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
These are wrapper classes that do not document their functions.
This change adds links to docs on opengl.org / khronos.org where
suitable, and changes the \brief commands to mention the correct
OpenGL version/profile.
Change-Id: I48154d5bce26f6753ca4400962939847c78a527d
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
QT_MUTEX_LOCK_NOEXCEPT is defined as Q_DECL_NOTHROW
on Linux, the latter being already ignored by qdoc.
This change ignores also the former, clearing
related documentation warnings.
Change-Id: Iaeee7a851b4b6d3c2e3308c1b376406c11271807
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
This triggered when building on Android. Make sure we cast the
sizeof() to the same type as the variable we compare to.
Change-Id: I65d4fe7edc2a39f1a4b68e78f4c19bff6e4aa0f8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Match the preprocessor conditions for using the randTLS() function
in the place where it's defined, otherwise we will get a warning
for this.
Change-Id: I0fa20f2671da618e31f30a4536f55bc680131e4d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Both context.file and context.function are already char*, so
using qPrintable() here would first convert them to QString()
with the scary constructor and then back again.
Change-Id: I822655c37fb8b9baaddc8f95d7c1842519859a0e
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Build failed with error
"array subscript is above array bounds [-Werror=array-bounds]"
because GCC optimizes three inline calls and sees A[4][4] != A[16].
According to Thiago this may lead to an undefined behavior after all.
Change-Id: I31ec01377d856890f6072369b3acd1f37e4118ab
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Remove global variable and duplicated lookup in the old code
(map.contains() followed by map.value()).
Change-Id: Id68c34bf38c6706db69dcb8422c3b1ea718aa064
Y# issue or contains a behavior change that is relevant to others,
Reviewed-by: David Faure <david.faure@kdab.com>
QMap explicitly sorts its entries by key value. For an ordered container
it's (often?) useful to access the first or last entry, for instance to
quickly compute the next key of the mapping. The first entry is easily
accessible by the STL begin() method, but for accessing the last entry
pretty ugly iterator arithmetics must be applied: *(end() - 1). With
their first() and last() accessors the container classes QList and
QVector provide a much nicer method of accessing extrema, so for
consistency this syntactical sugar also should be applied to QMap.
Change-Id: Ibd544acbad8c3ac16f12a1e74362207ea1694375
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Some features are of limited usefulness for now (same as with HB-old):
* mixed scripts cases aren't handled correctly due to an outdated
script and bidi itemization implementation;
* language-by-script detection: the only fallback to locale's LANG is used
Some features are missing entirely (in compare to HB-old):
* justification points support: not implemented in HarfBuzz-NG
Task-number: QTBUG-18980
Task-number: QTBUG-14590
Task-number: QTBUG-16128
Change-Id: Ic98a10054be5fac55224ef31c7261168c0bf8739
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Use Q_UNREACHABLE() instead of silly return to catch shaping errors,
which are fatal ones in fact, since the application would assert/crash
some later due to a hard dependency on the shaping result.
Change-Id: Ie58a2f2686a795f6178a588de6f2a2e37e1ed13c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Move (sub-)item boundaries calculation (aka fallback font items)
outside to be shared with HarfBuzz-NG based shaping a bit later.
This implementation might silently break words or even graphemes
so it needs to be reworked anyways; keeping it in a single place
would make futher work some cheaper.
Change-Id: Id9ca82b40e90b07ca29363fd43247c5fa9897eff
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Documentation for SHFILEINFO says iIcon is an index, so lets
initialize defaultFolderIIcon with -1 so it doesn't clash
with some icon that might exist at index 0.
Change-Id: Ic16538ee62e5433f3cdcceee19eb5d8d18d55c1e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
'T' is a fairly common name for template parameter. So if we use it in
Q_OBJECT, it means you cannot use it as a template parameter name of the
object itself (otherwise it does not compile as it shadow a template
parameter)
Use a more explicit name instead
Change-Id: Id317c5b11d87f370eed6d1dc0b0142c9eb4994db
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QGraphicsItem::GraphicsItemFlag is unsigned, so a comparison to -1
is always false.
qgraphicsitem.cpp:847:39: error: comparison of constant -1 with expression of type 'QGraphicsItem::GraphicsItemFlag' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
Change-Id: I3fc59b777d09060dd34e81f51ed8bdf41354a0f1
Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
qBinaryFind is not going to be deprecated now. This commits prepares
the deprecation of the qLowerBound function.
Change-Id: I6131582c981c151d632ad44305fe602c76735e14
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Change the debug format from Qt::TextDate to a more detailed ISO style
format including better time spec output.
[ChangeLog][QtCore][QDateTime] The debug datastream is now an ISO-like
format instead of Qt::TextDate
Change-Id: Iddbb8199c3bfbf7bca845482617e7a85da43259d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Before this patch,
qRegisterMetaType<QSharedPointer<double> >("QSharedPointer<double>")
without a metatype declaration fails to compile, whereas it works
with Qt 5.1 (ie, before commit e9a69c3ba9)
Change-Id: I9408f711c9df810ff29b879b7696dab81c1160f1
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>