summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* Introduce QBlendStyleAnimation (based on QWindowsVistaAnimation)J-P Nurmi2012-11-022-1/+132
| | | | | Change-Id: Ie289debe69ea7f6bb7833f979e39bb91290cc49c Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Cocoa: Disable malfunctioning updateScreens().Morten Johan Sørvig2012-11-021-6/+0
| | | | | | | | | | The current updateScreens() implementations deletes QScreens and creates new ones. Deleting a QScreen hides all its windows. The result is that Qt windows disappears when applicationDidChangeScreenParameters is called. Change-Id: I5870d025d2bbf36621817cb220a835d1a6b367dc Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* specify MODULE to avoid module .pri filename clashMark Brand2012-11-023-3/+3
| | | | | | | | | | | | | | | Since 733ac1f6e6b3155a594376ef99288c6117124000 the default MODULE is the base of the .pro file for the plugin (i.e., "windows"). Since MODULE becomes the base of the module .pri, the names of the module .pri files can clash. Now we explicitly specify MODULE for printersupport plugins to avoid overwriting the module .pri files of the platform plugins whose .pro files have the same names. Follow-up to 81f8f0db5cb75e29b041a011ca4e7dbbf2d903c5 which renamed the TARGET. Change-Id: Ie83892dc419257e1df3b81bcf6ecec751ae345b0 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Fix font and positioning of headerview labels on macJens Bache-Wiig2012-11-021-8/+16
| | | | | | | | | | | | | The old code rendered text too large. On desktop components, the widget workaround ensured that text was clipped. This should address both problems. Since we anyway do not adapt the height to font size, I dont se a point in supporting custom fonts here. Change-Id: If3c0509cdff4dbadfd98bd4b1934eaa665148cbf Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Fix submenu navigation.Friedemann Kleint2012-11-021-0/+10
| | | | | | | | | | | | | | Bring back code that was removed in Qt 4: 60324267fbb8a8554e62aaf9ef01360709292320 for QTBUG-7411 . This code reselects the submenu action of a currently opened popup when the mouse is moved to the submenu crossing other actions. In addition, make sure it only triggers when the reason is not keyboard selection. Task-number: QTBUG-20094 Change-Id: Ibb73f83e86635083aad8b1e79fc0fdd512c65754 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Allow QStandardPaths (Mac, Windows, Unix) to be bootstrappedThiago Macieira2012-11-024-2/+30
| | | | | | | | | | | | | This allows using QStandardPaths in one of the bootstrapped tools, if required for a future need. The Blackberry version appears to be usable in bootstrapped mode already. Change-Id: Ia4e9b9564395d2e151f8ac229ac2a2aa2982e92f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: David Faure (KDE) <faure@kde.org> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Added MultipleWindows platform capability.Samuel Rødal2012-11-026-5/+15
| | | | | | | | | | | | | | Several platform plugins, like eglfs, kms, etc don't support multiple windows as there's no system compositor, they're rendering directly to a single back buffer. By adding a platform capability we'll be able to provide better error reporting when an application tries to create multiple QWindows on a single-window platform. Also, QML apps can use this capability to figure out whether they should create a QWindow for dialogs / popups / menus, or whether to just create items in the same scene, that are shown on top of the rest of the content. Change-Id: I15b8d21ee2bc4568e9d705dbf32f872c2c25742b Reviewed-by: Andy Nichols <andy.nichols@digia.com>
* QFileDialog: Do not pass on file model root to QFileDialogOptions.Friedemann Kleint2012-11-022-13/+26
| | | | | | | | | | | | QFileDialog::selectedFiles() defaults to file model root for 'AnyFile', which confuses native dialogs since selectedFiles == directory in that case. Split up QFileDialog::selectedFiles() and skip the default when initializing QFileDialogOptions for native dialogs. Change-Id: I65cda182df8b1748159058fc361c10d97f5650ce Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* fix error handling bug in QWindowsPipeReaderJoerg Bornemann2012-11-021-2/+6
| | | | | | | | | | | | If ReadFile returns with an error then we must set our internal state accordingly. QWindowsPipeReader::readSequenceStarted must be set to false. If ReadFile fails, we're not within a read sequence. Also, we must handle the ERROR_BROKEN_PIPE error. Task-number: QTBUG-25342 Change-Id: Ic9247f170fa9cc47fa7e45d0f47ccfedac06a593 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Use fusion instead of motif.Frederik Gladhorn2012-11-022-3/+3
| | | | | Change-Id: Ic75ea959ac825efabf0f3a8606dfca4b65fae474 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Fix the gregorian date <-> julian day calculations in QDateJon Severinsson2012-11-022-54/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old code is just plain wrong for negative julian days. Replaced with plain math from The Calendar FAQ [1], which is correct for all julian days, provided you use mathematical integer division (round to negative infinity) rather than c++11 integer division (round to zero). [1] http://www.tondering.dk/claus/cal/julperiod.php While the conversion code works for up to around JD +/- (2^63/4), we only use an int for the year in the API, so this patch limits minJd() and maxJd() to 1 Jan (2^31) BC and 31 Dec (2^31-1) AD, respectively. Note that while the new conversion code looks like it would be more expensive than the old, gcc will in fact be able to optimize it to be slightly faster (probably because x86 hardware implements round to negative infinity, and so GCC manages to optimize floordiv to a single instruction, compared to the three instuctions needed for operator/). In the following test application, run with a release mode Qt and redirecting stderr to /dev/null, I measured an improvement from 6.81s +/- 0.08s to 6.26s +/- 0.16s user time over five runs on an otherwise idle x86_64 system. int main(int, char *[]) { int year, month, day; qint64 jd; for (qint64 i = Q_INT64_C(-1048576) ; i < Q_INT64_C(1048576); ++i) { QDate::fromJulianDay(i).getDate(&year, &month, &day); jd = QDate(year, month, day).toJulianDay(); qDebug() << jd << year << month << day; } } Change-Id: Ifd0dd01f0027f260401f7f9b4f1201d2b7a3b087 Reviewed-by: David Faure (KDE) <faure@kde.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Introduced QWindow properties {min/max}imum{Width/Height}Samuel Rødal2012-11-023-0/+70
| | | | | | | These are useful when QWindow is exposed to QML. Change-Id: I7ec49ef365183e2c784605889e8ea22c2ef34781 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Update QDateTime serialisation docs and increase version number.Mitch Curtis2012-11-021-2/+2
| | | | | | | | | | | | Refer to Qt::TimeSpec instead of listing potential values (which are incomplete). Also, the current QDataStream version number is now 13. Change-Id: I9a68385977dc2fe4dacee75330cb539850478480 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Nico Vertriest <nico.vertriest@digia.com>
* Improve QDateTime test coverage.Mitch Curtis2012-11-021-1/+2
| | | | | Change-Id: Ic521d9d2ffb1b8e3b14d9cebdeb3dc7a5e08580e Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Remove a couple of unused variables.Miikka Heikkinen2012-11-021-2/+0
| | | | | Change-Id: I33528cdb27801317d311d39e4499d2db6a291377 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Expose IAccessibleTable2 to non-conformant screen readersJan Arve Saether2012-11-021-7/+20
| | | | | | | This seems to be the established practice. Change-Id: I75a65d722a026ab0eb1805688743f46aba406e6c Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Compile cocoa with QT_NO_ACCESSIBILITYJan Arve Saether2012-11-022-0/+8
| | | | | Change-Id: I82b5dbf1bce94bd928eee207992c0036edc527ad Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* XCB: Use screen's client leader as fallback for transient parent.Friedemann Kleint2012-11-021-8/+10
| | | | | | | | | Modal dialogs that do not have a QWidget parent may be hidden by their parent unless they actually have a transient parent. Task-number: QTBUG-27786 Change-Id: I7847df3517e5ba6e8d77a2a18c905e908a3cd2f4 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Fix warnings when using QImage as QtConcurrent::mapped return typeLiang Qi2012-11-021-3/+3
| | | | | | | | Task-number: QTBUG-27391 Change-Id: I68b37ffa645be21d4d23b205bc052540b9aba7f4 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: João Abecasis <joao@abecasis.name>
* Mac: Add support for WindowMasks platform capabilityGabriel de Dietrich2012-11-025-32/+100
| | | | | | | | Also brings back a working QWidgetPrivate::setMask_sys(). Change-Id: Idde9eea15d28bb0299258df81322a5a3ff0b9493 Reviewed-by: Liang Qi <liang.qi@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* disambiguate plugin name vs. windows platform pluginOswald Buddenhagen2012-11-011-1/+1
| | | | | | | | | static plugin linking needs unique names. also, non-unique names are generally somewhat counterproductive. Change-Id: Idffba2b442b98dd2b0917f9f0af89f0694a99196 Reviewed-by: Mark Brand <mabrand@mabrand.nl> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Improve / fix QRegularExpression* docsGiuseppe D'Angelo2012-11-011-35/+89
| | | | | | | | | | | Fixed a couple of typos; also, wrapped the snippets in a main() function, so that now the snippet file can be compiled (and therefore the compiler can help us at detecting those typos). Change-Id: Ie182a9c4cb451db13a6f4bfa5eaed66bc6966c8f Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Casper van Donderen <casper.vandonderen@gmail.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* rewrite default spec handlingOswald Buddenhagen2012-11-012-1/+11
| | | | | | | | | | instead of symlinking (on unix) or creating a forwarding spec (on windows), just put the default specs into (the bootstrapped) QLibraryInfo. Change-Id: I595500ef7399f77cb8ec117c4303bc0a2ffe505f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* purge dead definesOswald Buddenhagen2012-11-011-1/+0
| | | | | Change-Id: I8770416a19fb0951c0096cedf3f36c3493437903 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* beef up qt_plugin.prfOswald Buddenhagen2012-11-0135-139/+65
| | | | | | | it now defines the DESTDIR and creates an INSTALLS rule. Change-Id: I15a462ccad9acbe3521c352fa98327825dc27c05 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Some Vista style cleanupJens Bache-Wiig2012-11-011-25/+28
| | | | | | | | Creates a function for cloning the style options used by Vista style. Change-Id: I4d83661acd6bdfff5c633447046a206018b537af Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Make ToolButton work with Macstyle for componentsJens Bache-Wiig2012-11-013-2/+22
| | | | | | | | | | We needed a new helper function for this. The widget cast was breaking desktop components. By using accessible role, we can make it work for both use cases without depending on the widget. Change-Id: Ic854dc45a4e5b7a50c5be701e903d58a4a914ee5 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Fix groupboxes for desktop components on macJens Bache-Wiig2012-11-011-1/+1
| | | | | | | | | | The logic was a bit odd as it would check if the groupbox had a font set and then override it anyway. Since we anyway want the fallback to be used for components we just make sure that the fallback is to use the same code path. Change-Id: Ic5071b43cda76e2bb7356a6f71cc8458c4e8bf27 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Fix build when libQtGui is not availableHarald Fernengel2012-11-011-1/+5
| | | | | Change-Id: I9e35d9302f58d283459f7e625c4e0b87fd1dc2bf Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Strip trailing whitespace in itemviews.Stephen Kelly2012-11-019-21/+21
| | | | | | | | | | | Using git ls-files -z | xargs -0 sed -i 's/ \+$//' in the relevant directories. Change-Id: I861ef9952fb32ed2db9ec8b67864ec7d0d61f0f2 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fix for leak in QFutureChristian Strømme2012-11-013-5/+46
| | | | | | | | | | | To avoid leaking when converting a QFuture<T> to a QFuture<void> we need to have a separate ref. counter for QFuture<T>. When the last QFuture<T> goes out of scope, we need to clean out the result data. Task-number: QTBUG-27224 Change-Id: I965a64a11fffbb191ab979cdd030a9aafd4436c2 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Remove #ifndef QT_NO_ACCESSIBILITY around qaccessible.{h,cpp}Jan Arve Saether2012-11-012-7/+0
| | | | | | | | | | | | | | | Jens has an use-case for using accessibility from styles. By making the enums always available regardless of QT_NO_ACCESSIBILITY, it makes the style code less littered with ifndefs. It should (ahem) also solve the problem where Qt Desktop components does not compile if QT_NO_ACCESSIBILITY is not defined. This happens on some linux distros, since atspi-2-dev is not installed by default, which again causes grief for those affected. Change-Id: I15d65df8c752a0c4af37cc7b4d908a757cb6a9c4 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Qt Core: Removed unnecessary group membership.Jerome Pasion2012-11-012-19/+0
| | | | | | | | The 'Non-GUI Classes' page is not relevant. Also removed landing page from the 'modules' group. Change-Id: Ie2d34d36f98a4697becfebd5fbc215913bbb41ce Reviewed-by: Martin Smith <martin.smith@digia.com>
* Fix buttonsize on macstyle when no widget is definedJens Bache-Wiig2012-11-011-1/+1
| | | | | | | | | | | The previous size was incorrect and added far too much height when the widget was undefined. When it was defined it would get its size corrected so the patch should have very little effect on existing widget code. Change-Id: I7c22f4226eda270f0d71050bc4248686b035cb39 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Testlib: Disable gcc warning about deprecated qInstallMsgHandlerKai Koehne2012-11-011-0/+10
| | | | | | | Fix warning: 'void (* qInstallMsgHandler(QtMsgHandler))(QtMsgType, const char*)' is deprecated (declared at qtestlog.cpp:85) [-Wdeprecated-declarations] Change-Id: I28d2baf696fdeddec90780edc88574fc368468db Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Adding PAC and exclusion list support to BlackBerry Qt proxy implementation.Andrey Leonov2012-10-312-4/+26
| | | | | | | The additional proxy functionality is only available starting BPS API version 3.1.1. Change-Id: Iadd2950119fa1dca706e8cd34804b038e3f704bc Reviewed-by: Peter Hartmann <phartmann@rim.com>
* Generate instances of types in the CMake tests.Stephen Kelly2012-10-311-1/+6
| | | | | | | | | | | | | | | | All modules currently have a test_modules CMake test. The new module_includes test has very similar requirements, and can obsolete the hand-maintained test_modules tests in all modules. After all test_modules have been removed in other repos, the module_includes test can be renamed to that name. The types chosen need to have a constructor which can be invoked with no arguments. QtConcurrent has no public classes which fit that description so it is still tested separately Change-Id: Id7929cd32b3112c293cbf5e6964cc894a697f9b1 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Fix QCommonStylePrivate::stopAnimation()J-P Nurmi2012-10-301-7/+3
| | | | | | | | Make sure that QCommonStylePrivate::animation() does not return an animation that was already stopped. Change-Id: I35b7f8e0fabff9908f247b3632e35388e2c95a6d Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Add QNumberStyleAnimation for fading out scroll bars on MacJ-P Nurmi2012-10-302-0/+69
| | | | | Change-Id: I6a85ed069a418d62078af6490a3d3186d5599a95 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Pixel-align vertical metrics in QTextLayout againEskil Abrahamsen Blomfeldt2012-10-302-3/+6
| | | | | | | | | | | | | | | | | | | To avoid regressing due to de58eb64bc564fcb8af61a45576783e432d2380c, we need to return a pixel aligned height in QTextLine::height() and also use pixel aligned heights when calculating the position of lines as well as the bounding rect of the layout. Later, we can add a QTextLine::naturalHeight() or something like that which gives the fractional value, but until then, we need to access private API in QPainter to get the correct alignment, since we still don't want to align the height of the last line in the layout, we only want to align the origin of each line. Task-number: QTBUG-27740 Change-Id: I12325f07d33aaf1a1b967e0a11492759d0f565d9 Reviewed-by: Caroline Chao <caroline.chao@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* QNX: Use inotify on QNX systems that support itThomas McGuire2012-10-303-3/+14
| | | | | | | Change-Id: Ia9bf8d3c202b17746036e203268ef6229aaa900d Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* ANGLE: Add TextureSSE2.cpp to SSE2_SOURCES.Jason Barron2012-10-301-1/+3
| | | | | | | | | | This file needs to be compiled with SSE2 intrinsic support. It happens to compile on x64 system because SSE2 is implied here, but on 32-bit compilers (in this case MinGW 32-bit) it needs to be explicit. Change-Id: I92dd5bc9257b6dd344ab02341475c023327b756a Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Send leave to most recently entered window when modal dialog is shown.Miikka Heikkinen2012-10-304-0/+24
| | | | | | | | | | | | | | | If a modal dialog was shown as a response to button click, the button retained its hover highlight, because it didn't get leave event. Fixed by tracking the most recently entered window and sending a leave to it when modal dialog is shown that blocks it. Also modified tst_QGuiApplication::modalWindow() autotest to check for enters and leaves. Task-number: QTBUG-27644 Change-Id: I387647e18a762a39d523e3df31221b9583a39f9d Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Only use the user set page margins for custom paperAndy Shaw2012-10-304-10/+21
| | | | | | | | | | | | | | When the QPrinter is initalized then it will set up page margins based on the default paper size. If the paper size is changed to be a custom one then it should disregard the margins for the default paper size. If the page margins are set explicitly beforehand then it will use these page margins. Change-Id: Ic535c3a80b8b217dbd5eb5f4fb2cbc0ab1354563 Reviewed-by: Titta Heikkala <titta.heikkala@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* QNX: Remember information on whether a file is a linkThomas McGuire2012-10-301-0/+7
| | | | | | | | | | This avoids an additional call to lstat() When using QDir::entryList() with the QDir::NoSymLinks flag. Change-Id: I3b602546c6a4502ae25a5748a12c60e69325bb5d Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: João Abecasis <joao@abecasis.name>
* Bring back native dialogs for Windows XP.Friedemann Kleint2012-10-303-46/+468
| | | | | | | | | | | | | | | The CLSID_FileOpenDialog, CLSID_FileSaveDialog-based dialogs are available from Windows Vista on only, the old Shell-function based ones are required for Windows XP. Add a command line argument to switch dialog types. Extract some common functionality for both dialog types. Task-number: QTBUG-27621 Change-Id: I224c5c4574c2ff54daf354f00d3d1f82abc6f459 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
* Mac: Correct writingSystem check value for ChineseLiang Qi2012-10-301-2/+2
| | | | | | | | | | | | | For simplified and traditional Chinese. Based on the Apple doc: Internationalization Programming Topics - Language and Locale Designations. Task-number: QTBUG-27130 Change-Id: I677563525edd607583561be20f4dbed24b2443a5 Reviewed-by: Jiang Jiang <gzjjgod@gmail.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Cocoa: Disable touch events.Morten Johan Sorvig2012-10-301-5/+0
| | | | | | | | | | | | | | | | | | | Enabling touch events has a negative impact on overall performance. In particular, enabling touch events seems to disable scroll event compression, resulting scroll processing lag. Until we find a solution where we can have both proper scrolling and touch events we choose scrolling over touch events. Applications that disagree can enable touch events manually: NSView *qtView = (NSView *)QGuiApplication::platformNativeInterface()-> nativeResourceForWindow("nsview", qtWindow); [qtView setAcceptsTouchEvents:YES]; Change-Id: I85cdd6e8c8ed8685c6cd5418c89fed6af02887cd Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Use -ffunction-sections in libbootstrap.aThiago Macieira2012-10-301-0/+1
| | | | | | | | | So that the linker discards unused functions too. Some of our .cpp are way too big Change-Id: I1a2685be6a5e7fd3cf34f18d545483c63c2343dd Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Check for both A and P when converting QDateTime to string.Mitch Curtis2012-10-301-1/+2
| | | | | | | | | | hasUnquotedAP currently only checks for an a or A, which is wrong according to both the toString documentation and the comments for hasUnquotedAP. Change-Id: I03015734b846fe761085cf8f8fca2b29210cff97 Reviewed-by: Jon Severinsson <jon@severinsson.net> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>