summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Use the new warning enabling/disabling macros in qtbaseThiago Macieira2014-12-038-50/+28
| | | | | | Change-Id: I91ff06644e8047c2ca483f9768b46c1372eb6171 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Add macros for enabling/disabling warningsThiago Macieira2014-12-031-1/+45
| | | | | | | | | | This allows us to avoid the ugly #if for compiler versions. We might still need for when a warning only occurs in one compiler version, but otherwise the code will be much cleaner. Change-Id: Ibc941d898b3dad2e3d87c11378f29139c31f0fff Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* QVariant: simple improvement to numeric type checkingThiago Macieira2014-12-031-8/+24
| | | | | | | Results in faster code. Change-Id: Ibeeac8c0f9d8a525fa233e00301338d3170ee413 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Hoist the numeric comparisons in QVariant::{cmp,compare} furtherThiago Macieira2014-12-031-16/+47
| | | | | | | | | | | I had already hoisted them a little in the previous commit, so that the comparisons run without conversion. This now moves the numeric compare() before the cmp() equality check, so it saves us a few more cycles. Another benefit is reduced code duplication. Change-Id: Ia96da94e169fe0b8d4e761177fc2b74e47d4daff Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Implement proper C++ type numeric promotion for QVariant comparisonsThiago Macieira2014-12-032-8/+104
| | | | | | | | | | | | | | | | | | | | | | Previously, QVariant would try to convert one operand to the other's type, which would produce unexpected results: the results would depend in the order of the operands and whether there was data loss in the conversion. In addition, ordering comparisons were only done with signed values, yielding other unexpected results, like QVariant(LLONG_MAX / 2) < QVariant(Q_UINT64_C(0)). Instead, try to obey the C++ standard rules for type promotion in expressions. Our code is a little simpler than the standard would seem to require since we know some more details from the ABI. [ChangeLog][Important Behavior Changes][QVariant] QVariant now obeys the C++ type promotion rules when comparing numeric types (integrals, float and double), including the fact that unsigned comparisons are preferred for types of the same rank (that is, now QVariant(-1) > QVariant(0U)). Task-number: QTBUG-42722 Change-Id: Ie7b19073dcb45485354710975e561bcdb1a753f1 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* QAbstractScrollArea: add a getter for the marginsGiuseppe D'Angelo2014-12-032-2/+16
| | | | | | | | | | | | Strange API asymmetry that needed to be fixed. Task-number: QTBUG-8315 [ChangeLog][QtWidgets][QAbstractScrollArea] A getter for the viewport margins has been added. Change-Id: Ie1460b572206922031fc4effc2aa8261e25088b5 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Add Q_DECL_OVERRIDE in the src subdirectoryOlivier Goffart2014-12-03454-3862/+3862
| | | | | | | | | | Done automatically with clang-modernize on linux (But does not add Q_DECL_OVERRIDE to the function that are marked as inline because it a compilation error with MSVC2010) Change-Id: I2196ee26e3e6fe20816834ecea5ea389eeab3171 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QSslEllipticCurve: remove a copy when setting the curvesGiuseppe D'Angelo2014-12-032-6/+6
| | | | | | | | | The only reason for copying QSslEllipticCurves into a temporary array would be to be extra-pedantic about type safety, but in the end, we can simply force a cast and remove the copy. Change-Id: Ice8a036fe4b79ba438ce83b5eacf6158eb3f0ce7 Reviewed-by: Richard J. Moore <rich@kde.org>
* QRingBuffer: cache the last released blockAlex Trotsenko2014-12-021-8/+26
| | | | | | | | | | A typical ring buffer usage is a sequence of reserve()->chop()->read() cycles. Usually, between these cycles, the buffer doesn't contain data and all blocks are released. To reduce reallocations, keep the most recently used block while the buffer is empty. Change-Id: I8128f1f04649ae005fd0a480f17f95de01a9a135 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Add DeepBind option to QLibraryAllan Sandfeld Jensen2014-12-023-1/+11
| | | | | | | | | | | | | | | | Adds an option to request the RTLD_DEEPBIND flag to dlopen. On Linux this can be used to force a library to resolve global symbols locally instead of using the similarly named symbols already loaded. This makes it possible to load and use plugins linked against Qt 4 without crashing. [ChangeLog][QtCore][QLibrary] Added DeepBindHint which maps to RTLD_DEEPBIND on Linux making it possible to load libraries with external symbols that clash with already loaded ones, such as plugins linked to Qt4. Change-Id: I4edb4af68e4a47e932a87d108360dba8d91dc34a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QTreeWidget: optimize childrenCheckStatejkobus2014-12-021-2/+3
| | | | | | | | | | When we met at least one checked child and at least one unchecked child return immediately PartiallyChecked state (no need to check other children state). Change-Id: I17ec07a925667231a1d809695f347a0f3cfffa0e Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* Don't rely on hasChanged() in ensureGeometriesJan Arve Saether2014-12-016-32/+7
| | | | | | | | | | | | It can be removed now because we now have a better caching mechanism than before. It should therefore not be needed anymore. Since nothing else calls hasChanged, we can finally get rid of it. This simplifies the code and enables us to further improvements to the code. Change-Id: I51afe5a97311e3e361ae8b491ecbcd21bbedacd1 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* SSL: let a server choose the most appropriate curve for a clientGiuseppe D'Angelo2014-11-291-5/+12
| | | | | | | | | | OpenSSL 1.0.2 introduces SSL_CTX_set_ecdh_auto, which allows us to stop using one specific temporary curve, and instead makes the server negotiate the best curve. Task-number: QTBUG-42925 Change-Id: I3a68f29030bdf04f368bfdf79c888401ce82bdd8 Reviewed-by: Richard J. Moore <rich@kde.org>
* Auto-scroll while selecting entire rows/columns did not workJan Arve Saether2014-11-291-2/+4
| | | | | | | | | | | | | | | If you press and hold a section in a header view you can extend the selection to more rows by moving the mouse. This worked fine until you moved the mouse outside the geometry of the header view. The expected behavior was then to scroll the view (this is what happens with extended selections on regular table cells). [ChangeLog][QtWidgets][QHeaderView] Auto-scroll the view when making extended row/column selections. Change-Id: Ic65aa34d370e74054b2123ab57edb1add0e8adb9 Task-number: QTBUG-21201 Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* Fix assertion introduced in 8e3fdf13543f43d7a4cb4fa41f7279f9a5d274d3Konstantin Ritt2014-11-291-4/+4
| | | | | | | | It is clear from the commit itself that `m_engines[1]` isn't accessible after `m_engines.resize(1)`. Change-Id: I7b3977cca3f3aeaabadb5ff4f3e52a418022123c Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
* Use special value SMOOTH_SCALABLE where appropriateKonstantin Ritt2014-11-291-3/+2
| | | | | | | | It is the same as USHRT_MAX but mentioning a special value makes the code more readable. Change-Id: I91063e472a6130ceb47f866344709786e4b05f20 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* QTextDocument: Don't use QRegExp for string search overloadsSamuel Gaist2014-11-271-8/+68
| | | | | | | | | Currently both find function with QString input uses QRegExp under the hood. This patch aims to use only QString search facility to allow the proper disabling of QRegExp Change-Id: I3525fd0e969eced635f3d98feb54eb6a05950d8f Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-11-2759-265/+572
|\ | | | | | | Change-Id: Id20053d261b4fbbcc0ac8ba49dd3ef2253fa4b95
| * iOS: override QPlatformWindow::propagateSizeHints()Richard Moe Gustavsen2014-11-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | propagate size hints means that we should forward minimum/maximum size set on QWindow to the underlying native window to restrict how the user can resize the window. On iOS this does not make sense, but nevertheless, if we don't override the function, the default implementation will issue a warning. This again will always make creator inform that the application ended with error upon exit. Change-Id: I0a8bd74c47fafe2115add5b6eb4e77616fcbc365 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * Implement heightForWidth().Friedemann Kleint2014-11-277-1/+87
| | | | | | | | | | | | | | | | | | | | Add a virtual function QWindowPrivate::closestAcceptableGeometry() which is called from the platform plugin. Task-number: QTBUG-36220 Task-number: QTBUG-36318 Change-Id: I2b3d205e2c75f1d4dd2ba1d333b0d89bc0fcf13a Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
| * Fix size miscalculation in QByteArray::toBase64Benjamin Lutz2014-11-271-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | The size calculation in QByteArray::toBase64 overcalculates the size required for the output by up to 3 Bytes. This is fixed, which also implies that truncate() at the end is needed only if OmitTrailingEquals is used. Task-number: QTBUG-32436 Change-Id: I92a893047e7aca027c4aa0a6655bcca514585ff5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Clarify QString::clear()Allan Sandfeld Jensen2014-11-271-2/+2
| | | | | | | | | | | | | | | | QString::clear() sets the string to the null QString, not just an empty one. Change-Id: Ie6f070f9f2e464105a7b87376e6dad90b5e4d2f2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * Clarify QGuiApplication::primaryScreenAllan Sandfeld Jensen2014-11-271-1/+1
| | | | | | | | | | | | | | Clarify that shown here refers to where they are shown initially. Change-Id: I962fd4b98d80fb1d43e086660fb74eea6b8f532a Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
| * fix the build with animation omittedShawn Rutledge2014-11-273-0/+12
| | | | | | | | | | | | | | configure -no-feature-STATEMACHINE -no-feature-ANIMATION Change-Id: Idb89c0bae8d699e76916317f83490c6c94c7d8b4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
| * Fix build of QGestureRecognizer on OS XSamuel Gaist2014-11-271-0/+2
| | | | | | | | | | | | | | | | ifdef panTouchPoints which is not used on OS X. Otherwise the build fails when the -Werror,-Wunused-function flags are used. Change-Id: I4f5498774905fcb2ba1fae40e41587d5821af8b9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
| * QJsonArray::(const_)iterator: mark the pointer typedefs as internalGiuseppe D'Angelo2014-11-271-0/+10
| | | | | | | | | | | | | | | | | | Just like the other typedefs; removes the doc warnings. Change-Id: I61142b8db57f4e0cc44cb8c459b1e82e69da3413 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
| * QLineEdit: take text margins into account in minimumSizeHint().David Faure2014-11-271-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | sizeHint() did it exactly like this, but minimumSizeHint() didn't, which made it too small. Didn't affect the actual size in most cases since the vertical size policy is fixed, so sizeHint() is called instead. But when writing a subclass, if one re-implements sizeHint() by calling the QLineEdit's minimumSizeHint(), it would then be wrong, when text margins are used. Change-Id: I29ae8dcab00842b3b5ca534cdb250efc0b496f45 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
| * Deprecate implementations of functions deprecated in headersShawn Rutledge2014-11-277-1/+18
| | | | | | | | | | | | | | | | | | If you build with configure -DQT_NO_DEPRECATED this will avoid some build errors. Change-Id: If2b2e57b6919091f3f077ebc2aeca0c3fd2421aa Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
| * Windows: Correctly associate IME contexts.Friedemann Kleint2014-11-263-2/+25
| | | | | | | | | | | | | | | | | | | | Associate a 0-context with the window if IME is disabled, store this state as a flag to QWindowsWindow. Associate default context again when enabled window gains focus. Task-number: QTBUG-40691 Change-Id: I78d5494a05f93a39e245ca7c096d45445e684ea8 Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
| * Add capabilities to QPlatformInputContext.Friedemann Kleint2014-11-265-3/+41
| | | | | | | | | | | | | | | | | | | | | | | | Add a capability enumeration to QPlatformInputContext and use that to turn off input methods for hidden text depending on platform support. Disable on Windows. Task-number: QTBUG-40691 Change-Id: I9909005de1f21316ec8f64e2729f1fffcd37c7c3 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com> Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
| * Reorganize devicediscovery headerLaszlo Agocs2014-11-2611-71/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As pointed out in 13b939c7f41bceb2061e549923eab242326e9bb5 the approach qdevicediscovery_p.h takes is just wrong. The defines it relies on will often be missing when the header is included from random places in qtbase. This results in different class layouts. It was working only because the interface of the class is very limited and the public part was matching regardless of having the macro defined. This is now corrected by introducing subclasses and a common, non-variated base class. QDEVICEDISCOVERY_UDEV is removed completely. Change-Id: I9c83b5b041440a3a6ea3a604eee4a325d4d74439 Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
| * iOS: only skip activating the most simple popup typesRichard Moe Gustavsen2014-11-261-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The current approach of not activating transient windows with the popup flag set was found to be too restrictive, as it would e.g stop transient dialogs from being able to contain editable controls. This patch will restrict the number of popup types that we skip activation for to only contain a few subtypes. Task-number: QTBUG-41613 Change-Id: I381a5a79fb4f7082da18a6b4e06a7255ff400b1a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * Widgets, iOS: don't tell the input panel to hide on focus outRichard Moe Gustavsen2014-11-261-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | On iOS, autoSIP is handled by the platform plugin. We therefore avoid letting widgets tell the input panel to hide on focus out so we can gain better control over this from the plugin. Note that we could also set QApplicationPrivate::autoSipEnabled to false and achieve the same. But since autoSIP is logically set on iOS, it's better to report it as set in case the app asks. Change-Id: I96c68bc446a1e299fd57afe03a9e273491df08a7 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * XCB: send leave event on grabJørgen Lind2014-11-261-16/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When a popup is opened it grabs the input, but the leave event to the other windows needs to be sent. Remove the popupEnterLeave test as it did not test any code. The Popup never gets any enter or leave events so it will succeed always succeed Task-number: QTBUG-36862 Change-Id: I625c616eeb74b5168af7b751485e2a9a53b76cd3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Android: replace qFind with std::findShawn Rutledge2014-11-262-13/+13
| | | | | | | | | | | | | | | | qFind is deprecated, so these cause build errors with configure -no-feature-DEPRECATED Change-Id: Iefcb061d5e8ce256445528f601ead4c9d5d1dfd2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
| * sqlite: don't use deprecated QSqlError constructorShawn Rutledge2014-11-261-1/+1
| | | | | | | | | | | | | | so that it can build with configure -no-feature-DEPRECATED Change-Id: Id2decc05974bad249c79936d99ab63d3cfc375ad Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
| * don't use QCursor if QT_NO_CURSORShawn Rutledge2014-11-263-0/+8
| | | | | | | | | | | | | | to support configure -no-feature-CURSOR Change-Id: I8e7f9a7f80d3d44a1f8e25b909d552351b5f37e4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
| * Windows: Respect hinting preferences with FreeType engine.Sérgio Martins2014-11-251-15/+21
| | | | | | | | | | | | | | | | | | | | One of the fontEngine()'s methods was missing hinting. This bug only manifests on Windows because on Linux QFontConfigDataBase already sets hinting on both code paths. Task-number: QTBUG-42534 Change-Id: I3a66a9d4aaa5e390fee305a3d5aacfeba38a1fc3 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
| * QDistanceField: a zero glyph index means the glyph was not foundShawn Rutledge2014-11-251-1/+1
| | | | | | | | | | | | | | | | | | | | In qt_fontHasNarrowOutlines, if we proceed to call alphaMapForGlyph when the glyph does not exist, there will be a failed assertion. The docs for FT_Get_Char_Index say that zero means the glyph was not found. Change-Id: I371e9a2797a34fa3ebeae44531af51e24dadad79 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
| * [QPainter] Fix QTextItem painting with extended paint engineKonstantin Ritt2014-11-251-1/+4
| | | | | | | | | | | | | | | | Multi QFontEngine should be handled just like all other cases covered several lines below. Change-Id: If3dd9a2e38a5f6f61b113576cb188da378fc9efb Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| * [QAndroidPlatformTheme] Get rid of static QFontKonstantin Ritt2014-11-252-3/+6
| | | | | | | | | | | | | | | | QFont is not POD and shouldn't be instantiated statically, otherwise we could end up with UB during qApp destruction. Change-Id: I2372c7a643eb3007957ab2b798732c1a18fd0ae5 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| * Fix potential access to uninitialized memberKonstantin Ritt2014-11-251-2/+3
| | | | | | | | | | | | | | | | If GetTextMetrics() failed, there is no guarantee that TEXTMETRIC is initialized with any safe values. Change-Id: Idb5e3bc1bc2451368950978365487c908ce529e7 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| * Don't assemble QRawFont from QFont manuallyKonstantin Ritt2014-11-251-8/+1
| | | | | | | | | | | | | | Always prefer QRawFont::fromFont(..) Change-Id: Ic33f7d3a468f926418b39887f572829af93f8c1d Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
| * [QStaticText] Fix potential font engine leakingKonstantin Ritt2014-11-251-3/+8
| | | | | | | | | | | | | | | | Never assume the engine is still cached but rather delete it if we are the last consumer. Change-Id: I4e3c796d45c53f42722a437482d71e2dae14cad2 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| * Add missing host_build CONFIG for qlalrTor Arne Vestbø2014-11-251-0/+1
| | | | | | | | | | | | Change-Id: I6eddd2afd9eb4dac0b28329003dbd3b6d05d3fd1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * iOS: Clean up QPlatformInputContext subclass headerTor Arne Vestbø2014-11-251-10/+12
| | | | | | | | | | | | | | | | | | Implements isValid(), which should be returning true for subclasses, and re-orders and adds Q_DECL_OVERRIDE where appropriate. Change-Id: I03519bf674b6f7b7ccc07a7154c9a1fb9a8105f2 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * Get rid of some duplicate code in QFontEngineFTEskil Abrahamsen Blomfeldt2014-11-251-101/+25
| | | | | | | | | | | | | | | | | | | | | | This removes some code duplication in the QFontEngineFT and it also removes the condition that loadTransformedGlyphSet() will return 0 if the font is too large to be cached, since this is handled by setting outline_drawing on the glyph set which will fall back to painter paths. Change-Id: I2fe6a963e854cdd7c6015154547dc06325cbe3b0 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
| * Fix instances of !var & const that should be !(var & const)Marc Mutz2014-11-252-2/+2
| | | | | | | | | | | | | | | | | | GCC recently started warning about these. Change-Id: I7b30c79f7f2b66b99e54354224700d54ace6ebec Reviewed-by: Jens Bache-Wiig <jensbw@gmail.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | QCommandLineParser: Show usage and errors in message boxes on Windows.Friedemann Kleint2014-11-271-20/+48
| | | | | | | | | | | | | | | | | | | | | | Use the Windows MessageBox API if no console window can be obtained. [ChangeLog][QtCore][QCommandLineParser] Message boxes are used to display errors and usage if no console window can be obtained on Windows. Change-Id: I63ee8e4d8bd78db83e688fd69374779102562aa3 Reviewed-by: David Faure <david.faure@kdab.com>
* | OS X: remove use of Carbon API for scroll events; fix ScrollBeginShawn Rutledge2014-11-272-12/+14
| | | | | | | | | | | | | | | | NSEventPhaseMayBegin doesn't happen with some types of trackpads, so don't treat NSEventPhaseBegan as Qt::ScrollUpdate. Change-Id: Ica97d49692a904e20c8eb0250760e6370311ee40 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>