From 9d9889682c79bacb803ef5613502e7307c1d16bd Mon Sep 17 00:00:00 2001 From: Norwegian Rock Cat Date: Mon, 20 Apr 2009 09:49:55 +0200 Subject: BT: Fix a crash when using Q(File)Dialog::open() in QCocoa. If we don't have a sheet, we need to recreate it in Cocoa. Unfortunately, we neglected to reassign the NSWindow pointer in that case, so the program would crash. Reviewed-by: Richard Moe Gustavsen --- src/gui/kernel/qwidget_mac.mm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 2c3f7f1..37dc79c 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -4627,8 +4627,11 @@ void QWidgetPrivate::setModal_sys() if (windowParent && q->windowModality() == Qt::WindowModal){ // Window should be window-modal, which implies a sheet. - if (!alreadySheet) + if (!alreadySheet) { + // NB: the following call will call setModal_sys recursivly: recreateMacWindow(); + windowRef = qt_mac_window_for(q); + } if ([windowRef isKindOfClass:[NSPanel class]]){ // If the primary window of the sheet parent is a child of a modal dialog, // the sheet parent should not be modally shaddowed. -- cgit v0.12 From fee1423eba48746d46e13c02374249d1760219d7 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Wed, 15 Apr 2009 08:32:42 +0200 Subject: Some ifdefs for debugging clipping performance --- src/gui/painting/qpaintengine_raster.cpp | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index addd63d..e981f8d 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -1140,6 +1140,33 @@ void QRasterPaintEnginePrivate::updateMatrixData(QSpanData *spanData, const QBru } } +// #define QT_CLIPPING_RATIOS + +#ifdef QT_CLIPPING_RATIOS +int rectClips; +int regionClips; +int totalClips; + +static void checkClipRatios(QRasterPaintEnginePrivate *d) +{ + if (d->clip()->hasRectClip) + rectClips++; + if (d->clip()->hasRegionClip) + regionClips++; + totalClips++; + + if ((totalClips % 5000) == 0) { + printf("Clipping ratio: rectangular=%f%%, region=%f%%, complex=%f%%\n", + rectClips * 100.0 / (qreal) totalClips, + regionClips * 100.0 / (qreal) totalClips, + (totalClips - rectClips - regionClips) * 100.0 / (qreal) totalClips); + totalClips = 0; + rectClips = 0; + regionClips = 0; + } + +} +#endif /*! \internal @@ -1241,6 +1268,10 @@ void QRasterPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op) d->solid_color_filler.clip = d->clip(); d->solid_color_filler.adjustSpanMethods(); + +#ifdef QT_CLIPPING_RATIOS + checkClipRatios(d); +#endif } @@ -1315,6 +1346,11 @@ void QRasterPaintEngine::clip(const QRect &rect, Qt::ClipOperation op) d->solid_color_filler.clip = d->clip(); d->solid_color_filler.adjustSpanMethods(); + + +#ifdef QT_CLIPPING_RATIOS + checkClipRatios(d); +#endif } /*! -- cgit v0.12 From 92d4fc8401a1ef31122804e219a57513e6f37e0a Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Thu, 16 Apr 2009 13:42:33 +0200 Subject: Fix docs for QPixmapCache::setCacheLimit()/cacheLimit() --- src/gui/image/qpixmapcache.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp index 4253f8d..eedb6a3 100644 --- a/src/gui/image/qpixmapcache.cpp +++ b/src/gui/image/qpixmapcache.cpp @@ -275,7 +275,8 @@ bool QPixmapCache::insert(const QString &key, const QPixmap &pm) /*! Returns the cache limit (in kilobytes). - The default cache limit is 2048 KB for Embedded, 10240 KB for Desktops. + The default cache limit is 2048 KB for Embedded, 10240 KB for + Desktops. \sa setCacheLimit() */ @@ -288,7 +289,8 @@ int QPixmapCache::cacheLimit() /*! Sets the cache limit to \a n kilobytes. - The default setting is 1024 kilobytes. + The default setting is 2048 KB for Embedded, 10240 KB for + Desktops. \sa cacheLimit() */ -- cgit v0.12 From f619d17ff3fbc8f8ff60a1175bc83435f977550c Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Fri, 17 Apr 2009 13:00:31 +0200 Subject: Fix ARGB8565 onto RGB16 image blending on windows The rounding was just wrong... Task-number: 246009 Reviewed-by: Trond --- src/gui/painting/qblendfunctions.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp index 6589439..84a1e4a 100644 --- a/src/gui/painting/qblendfunctions.cpp +++ b/src/gui/painting/qblendfunctions.cpp @@ -363,9 +363,9 @@ template void qt_blend_argb24_on_rgb16(uchar *destPixels, int dbpl, quint32 siag = dg * sia; quint32 siab = db * sia; - quint32 rr = ((siar + (siar>>8) + (0x80 << 11)) >> 8) & 0xf800; - quint32 rg = ((siag + (siag>>8) + (0x80 << 5)) >> 8) & 0x07e0; - quint32 rb = ((siab + (siab>>8) + (0x80 >> 3)) >> 8); + quint32 rr = ((siar + (siar>>8) + (0x80 << 8)) >> 8) & 0xf800; + quint32 rg = ((siag + (siag>>8) + (0x80 << 3)) >> 8) & 0x07e0; + quint32 rb = ((siab + (siab>>8) + (0x80 >> 3)) >> 8) & 0x001f; *dst = alphaFunc.bytemul(spix) + rr + rg + rb; #endif -- cgit v0.12 From 2e5080b136dabf70d0ea3bcb39aff0b5f858056d Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Fri, 17 Apr 2009 14:07:04 +0200 Subject: Fix ARGB24PM->RGB16 for i386 GCC There was special code for gcc to run super-fast, but it was buggy and didn't blend properly. Kill this code for the benefit of the normal blend function. The performance on an Intel Quad Core 2 was not too different from the bytemul approach. Task-number: 246009 Reviewed-by: Trond --- src/gui/painting/qblendfunctions.cpp | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp index 84a1e4a..70cea4d 100644 --- a/src/gui/painting/qblendfunctions.cpp +++ b/src/gui/painting/qblendfunctions.cpp @@ -44,19 +44,6 @@ QT_BEGIN_NAMESPACE - -// This ifdef is made with the best of intention. GCC fails to -// optimzie the code properly so the bytemul approach is the fastest -// it gets. Both on ARM and on MSVC the code is optimized to be better -// than the bytemul approach... On the other hand... This code is -// almost never run on i386 so it may be downright silly to have this -// piece of code here... -#if defined (Q_CC_GNU) && (defined (QT_ARCH_I386) || defined (QT_ARCH_X86_64)) -# define QT_BLEND_USE_BYTEMUL -#endif - -// #define QT_DEBUG_DRAW - static const qreal aliasedCoordinateDelta = 0.5 - 0.015625; struct SourceOnlyAlpha @@ -286,7 +273,7 @@ static void qt_blend_rgb16_on_rgb16(uchar *dst, int dbpl, int const_alpha) { #ifdef QT_DEBUG_DRAW - printf("qt_blend_argb16_on_rgb16: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n", + printf("qt_blend_rgb16_on_rgb16: dst=(%p, %d), src=(%p, %d), dim=(%d, %d) alpha=%d\n", dst, dbpl, src, sbpl, w, h, const_alpha); #endif @@ -347,11 +334,6 @@ template void qt_blend_argb24_on_rgb16(uchar *destPixels, int dbpl, if (alpha == 255) { *dst = spix; } else if (alpha != 0) { -#ifdef QT_BLEND_USE_BYTEMUL - // truncate green channel to avoid overflow - *dst = (alphaFunc.bytemul(spix) & 0xffdf) - + (quint16) qrgb565(*dst).byte_mul(qrgb565::ialpha(alpha)); -#else quint16 dpix = *dst; quint32 sia = 255 - alpha; @@ -368,7 +350,6 @@ template void qt_blend_argb24_on_rgb16(uchar *destPixels, int dbpl, quint32 rb = ((siab + (siab>>8) + (0x80 >> 3)) >> 8) & 0x001f; *dst = alphaFunc.bytemul(spix) + rr + rg + rb; -#endif } ++dst; -- cgit v0.12 From 2c5ec5867c0d40f17906aa7b23380218d392970a Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Mon, 20 Apr 2009 07:29:44 +0200 Subject: Fix drawhelper pixel-writeback when dest has alpha. The blending always happens in 32-bit premultiplied so the conversion back to dest-format needs to base itself on premlutiplied too. Task-number: 182246 Reviewed-by: Samuel --- src/gui/painting/qdrawhelper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index efdc778..e7bb1e1 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -370,7 +370,7 @@ Q_STATIC_TEMPLATE_FUNCTION void QT_FASTCALL destStore(QRasterBuffer *rasterBuffe Q_TEMPLATE_FIX(DST)) { DST *dest = reinterpret_cast(rasterBuffer->scanLine(y)) + x; - const quint32 *src = reinterpret_cast(buffer); + const quint32p *src = reinterpret_cast(buffer); while (length--) *dest++ = DST(*src++); } -- cgit v0.12 From 8047e8b5ac359e7470211a37e266d429c3641839 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Mon, 20 Apr 2009 07:49:14 +0200 Subject: Make the 32-bit ARGBPM on 16-bit RGB blend function faster The "optimized" version of this function was actually slower by quite a bit, so revert it to the old "trivial" code. Reviewed-by: Samuel --- src/gui/painting/qblendfunctions.cpp | 134 +++++++++-------------------------- 1 file changed, 33 insertions(+), 101 deletions(-) diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp index 70cea4d..dd7b016 100644 --- a/src/gui/painting/qblendfunctions.cpp +++ b/src/gui/painting/qblendfunctions.cpp @@ -416,113 +416,45 @@ static void qt_blend_argb32_on_rgb16(uchar *destPixels, int dbpl, } quint16 *dst = (quint16 *) destPixels; - int dstExtraStride = dbpl / 2 - w; - - const quint32 *src = (const quint32 *) srcPixels; - int srcExtraStride = sbpl / 4 - w; + quint32 *src = (quint32 *) srcPixels; for (int y=0; y> 1; - const int srcAlign = ((quintptr)src) & 0x3; - if (length32) { - if (srcAlign) { - for (int i = 0; i < length32; ++i) { - quint32 *dest32 = reinterpret_cast(dst); - const quint8 a1 = qAlpha(src[0]); - const quint8 a2 = qAlpha(src[1]); - quint32 s; - - if (!a1 && !a2) { - src += 2; - dst +=2; - continue; - } - - s = convert_argb32_to_rgb16(src[0]) - | (convert_argb32_to_rgb16(src[1]) << 16); - - if (a1 == a2) { - if (a1 < 255) { - const quint8 sa = ((255 - a1)+1) >> 3; - s += BYTE_MUL_RGB16_32(*dest32, sa); - } - } else { - if (a1 < 255) - s += BYTE_MUL_RGB16(dst[0], 255 - a1); - if (a2 < 255) - s += BYTE_MUL_RGB16(dst[1], 255 - a2) << 16; - } - - *dest32 = s; - src += 2; - dst += 2; - } - } else { - for (int i = 0; i < length32; ++i) { - quint32 *dest32 = reinterpret_cast(dst); - const quint8 a1 = qAlpha(src[0]); - const quint8 a2 = qAlpha(src[1]); - quint32 s; - - if (!a1 && !a2) { - src += 2; - dst +=2; - continue; - } - - const quint64 *src64 = - reinterpret_cast(src); - s = qConvertRgb32To16x2(*src64); - - if (a1 == a2) { - if (a1 < 255) { - const quint8 sa = ((255 - a1)+1) >> 3; - s += BYTE_MUL_RGB16_32(*dest32, sa); - } - } else { - if (a1 < 255) - s += BYTE_MUL_RGB16(dst[0], 255 - a1); - if (a2 < 255) - s += BYTE_MUL_RGB16(dst[1], 255 - a2) << 16; - } - - *dest32 = s; - src += 2; - dst += 2; - } - } - } - const int tail = length & 0x1; - if (tail) { - const quint8 alpha = qAlpha(*src); - if (alpha) { - quint16 s = convert_argb32_to_rgb16(*src); - if (alpha < 255) - s += BYTE_MUL_RGB16(*dst, 255 - alpha); - *dst = s; + quint32 spix = src[x]; + quint32 alpha = spix >> 24; + + if (alpha == 255) { + dst[x] = convert_argb32_to_rgb16(spix); + } else if (alpha != 0) { + quint32 dpix = dst[x]; + + quint32 sia = 255 - alpha; + + quint32 sr = (spix >> 8) & 0xf800; + quint32 sg = (spix >> 5) & 0x07e0; + quint32 sb = (spix >> 3) & 0x001f; + + quint32 dr = (dpix & 0x0000f800); + quint32 dg = (dpix & 0x000007e0); + quint32 db = (dpix & 0x0000001f); + + quint32 siar = dr * sia; + quint32 siag = dg * sia; + quint32 siab = db * sia; + + quint32 rr = sr + ((siar + (siar>>8) + (0x80 << 8)) >> 8); + quint32 rg = sg + ((siag + (siag>>8) + (0x80 << 3)) >> 8); + quint32 rb = sb + ((siab + (siab>>8) + (0x80 >> 3)) >> 8); + + dst[x] = (rr & 0xf800) + | (rg & 0x07e0) + | (rb); } - ++dst; - ++src; } - dst += dstExtraStride; - src += srcExtraStride; + dst = (quint16 *) (((uchar *) dst) + dbpl); + src = (quint32 *) (((uchar *) src) + sbpl); } - } -- cgit v0.12 From c3937c516b98edffa4792bccde3aa18926082e44 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Mon, 20 Apr 2009 07:38:33 +0200 Subject: Ifdef out the QWS blend functions for less common bitdephts by default ARGB32_PM, RGB32, ARGB8565_PM and RGB16 are optimizied elsewhere and they are the most important formats. The implemenentation of several of these depths are also buggy, so one can question their relevance. Reviewed-by: Samuel --- src/gui/painting/qdrawhelper.cpp | 90 ++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index e7bb1e1..c11837a 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -4763,7 +4763,7 @@ void QT_FASTCALL blendUntransformed(int count, const QSpan *spans, void *userDat static void blend_untransformed_rgb888(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24) +#if defined(QT_QWS_DEPTH_24) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_RGB888) @@ -4777,7 +4777,7 @@ static void blend_untransformed_rgb888(int count, const QSpan *spans, static void blend_untransformed_argb6666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -4793,7 +4793,7 @@ static void blend_untransformed_argb6666(int count, const QSpan *spans, static void blend_untransformed_rgb666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -4809,7 +4809,7 @@ static void blend_untransformed_rgb666(int count, const QSpan *spans, static void blend_untransformed_argb8565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -4825,7 +4825,7 @@ static void blend_untransformed_argb8565(int count, const QSpan *spans, static void blend_untransformed_rgb565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -4841,7 +4841,7 @@ static void blend_untransformed_rgb565(int count, const QSpan *spans, static void blend_untransformed_argb8555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -4857,7 +4857,7 @@ static void blend_untransformed_argb8555(int count, const QSpan *spans, static void blend_untransformed_rgb555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -4873,7 +4873,7 @@ static void blend_untransformed_rgb555(int count, const QSpan *spans, static void blend_untransformed_argb4444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -4889,7 +4889,7 @@ static void blend_untransformed_argb4444(int count, const QSpan *spans, static void blend_untransformed_rgb444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -5084,7 +5084,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTiled(int count, const QSpan *spans, void * static void blend_tiled_rgb888(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24) +#if defined(QT_QWS_DEPTH_24) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_RGB888) @@ -5097,7 +5097,7 @@ static void blend_tiled_rgb888(int count, const QSpan *spans, void *userData) static void blend_tiled_argb6666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -5112,7 +5112,7 @@ static void blend_tiled_argb6666(int count, const QSpan *spans, void *userData) static void blend_tiled_rgb666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -5127,7 +5127,7 @@ static void blend_tiled_rgb666(int count, const QSpan *spans, void *userData) static void blend_tiled_argb8565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -5142,7 +5142,7 @@ static void blend_tiled_argb8565(int count, const QSpan *spans, void *userData) static void blend_tiled_rgb565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -5157,7 +5157,7 @@ static void blend_tiled_rgb565(int count, const QSpan *spans, void *userData) static void blend_tiled_argb8555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -5172,7 +5172,7 @@ static void blend_tiled_argb8555(int count, const QSpan *spans, void *userData) static void blend_tiled_rgb555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -5187,7 +5187,7 @@ static void blend_tiled_rgb555(int count, const QSpan *spans, void *userData) static void blend_tiled_argb4444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -5202,7 +5202,7 @@ static void blend_tiled_argb4444(int count, const QSpan *spans, void *userData) static void blend_tiled_rgb444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -5599,7 +5599,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTransformedBilinear(int count, const QSpan static void blend_transformed_bilinear_rgb888(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24) +#if defined(QT_QWS_DEPTH_24) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_RGB888) @@ -5612,7 +5612,7 @@ static void blend_transformed_bilinear_rgb888(int count, const QSpan *spans, voi static void blend_transformed_bilinear_argb6666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -5627,7 +5627,7 @@ static void blend_transformed_bilinear_argb6666(int count, const QSpan *spans, v static void blend_transformed_bilinear_rgb666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -5642,7 +5642,7 @@ static void blend_transformed_bilinear_rgb666(int count, const QSpan *spans, voi static void blend_transformed_bilinear_argb8565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -5658,7 +5658,7 @@ static void blend_transformed_bilinear_argb8565(int count, const QSpan *spans, v static void blend_transformed_bilinear_rgb565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_RGB16) @@ -5673,7 +5673,7 @@ static void blend_transformed_bilinear_rgb565(int count, const QSpan *spans, static void blend_transformed_bilinear_argb8555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -5688,7 +5688,7 @@ static void blend_transformed_bilinear_argb8555(int count, const QSpan *spans, v static void blend_transformed_bilinear_rgb555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -5703,7 +5703,7 @@ static void blend_transformed_bilinear_rgb555(int count, const QSpan *spans, voi static void blend_transformed_bilinear_argb4444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -5718,7 +5718,7 @@ static void blend_transformed_bilinear_argb4444(int count, const QSpan *spans, v static void blend_transformed_bilinear_rgb444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -6195,7 +6195,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTransformed(int count, const QSpan *spans, static void blend_transformed_rgb888(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24) +#if defined(QT_QWS_DEPTH_24) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_RGB888) @@ -6209,7 +6209,7 @@ static void blend_transformed_rgb888(int count, const QSpan *spans, static void blend_transformed_argb6666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -6225,7 +6225,7 @@ static void blend_transformed_argb6666(int count, const QSpan *spans, static void blend_transformed_rgb666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -6241,7 +6241,7 @@ static void blend_transformed_rgb666(int count, const QSpan *spans, static void blend_transformed_argb8565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -6257,7 +6257,7 @@ static void blend_transformed_argb8565(int count, const QSpan *spans, static void blend_transformed_rgb565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -6273,7 +6273,7 @@ static void blend_transformed_rgb565(int count, const QSpan *spans, static void blend_transformed_argb8555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -6289,7 +6289,7 @@ static void blend_transformed_argb8555(int count, const QSpan *spans, static void blend_transformed_rgb555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -6305,7 +6305,7 @@ static void blend_transformed_rgb555(int count, const QSpan *spans, static void blend_transformed_argb4444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -6321,7 +6321,7 @@ static void blend_transformed_argb4444(int count, const QSpan *spans, static void blend_transformed_rgb444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -6619,7 +6619,7 @@ Q_STATIC_TEMPLATE_FUNCTION void blendTransformedTiled(int count, const QSpan *sp static void blend_transformed_tiled_rgb888(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_24) +#if defined(QT_QWS_DEPTH_24) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_RGB888) @@ -6633,7 +6633,7 @@ static void blend_transformed_tiled_rgb888(int count, const QSpan *spans, static void blend_transformed_tiled_argb6666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -6649,7 +6649,7 @@ static void blend_transformed_tiled_argb6666(int count, const QSpan *spans, static void blend_transformed_tiled_rgb666(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_18) +#if defined(QT_QWS_DEPTH_18) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB6666_Premultiplied) @@ -6665,7 +6665,7 @@ static void blend_transformed_tiled_rgb666(int count, const QSpan *spans, static void blend_transformed_tiled_argb8565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -6681,7 +6681,7 @@ static void blend_transformed_tiled_argb8565(int count, const QSpan *spans, static void blend_transformed_tiled_rgb565(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_16) +#if defined(QT_QWS_DEPTH_16) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8565_Premultiplied) @@ -6697,7 +6697,7 @@ static void blend_transformed_tiled_rgb565(int count, const QSpan *spans, static void blend_transformed_tiled_argb8555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -6713,7 +6713,7 @@ static void blend_transformed_tiled_argb8555(int count, const QSpan *spans, static void blend_transformed_tiled_rgb555(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_15) +#if defined(QT_QWS_DEPTH_15) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB8555_Premultiplied) @@ -6729,7 +6729,7 @@ static void blend_transformed_tiled_rgb555(int count, const QSpan *spans, static void blend_transformed_tiled_argb4444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) @@ -6745,7 +6745,7 @@ static void blend_transformed_tiled_argb4444(int count, const QSpan *spans, static void blend_transformed_tiled_rgb444(int count, const QSpan *spans, void *userData) { -#if !defined(Q_WS_QWS) || defined(QT_QWS_DEPTH_12) +#if defined(QT_QWS_DEPTH_12) QSpanData *data = reinterpret_cast(userData); if (data->texture.format == QImage::Format_ARGB4444_Premultiplied) -- cgit v0.12 From 3bcbfcfa466890469f3053a3c5987bc2cf85317b Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Mon, 20 Apr 2009 18:24:26 +1000 Subject: BT: Update text of About Qt dialog Add Copyright message as requested by Legal, and update .ts files again. Reviewed-by: Trust Me --- src/gui/dialogs/qmessagebox.cpp | 1 + translations/qt_ar.ts | 18 +++++++++--------- translations/qt_de.ts | 18 +++++++++--------- translations/qt_es.ts | 18 +++++++++--------- translations/qt_fr.ts | 18 +++++++++--------- translations/qt_iw.ts | 18 +++++++++--------- translations/qt_ja_JP.ts | 10 +++++----- translations/qt_pl.ts | 6 +++--- translations/qt_pt.ts | 18 +++++++++--------- translations/qt_ru.ts | 18 +++++++++--------- translations/qt_sk.ts | 18 +++++++++--------- translations/qt_sv.ts | 18 +++++++++--------- translations/qt_uk.ts | 18 +++++++++--------- translations/qt_untranslated.ts | 18 +++++++++--------- translations/qt_zh_CN.ts | 18 +++++++++--------- translations/qt_zh_TW.ts | 18 +++++++++--------- 16 files changed, 126 insertions(+), 125 deletions(-) diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp index 1ddb8f4..456b480 100644 --- a/src/gui/dialogs/qmessagebox.cpp +++ b/src/gui/dialogs/qmessagebox.cpp @@ -1717,6 +1717,7 @@ void QMessageBox::aboutQt(QWidget *parent, const QString &title) "to comply with the terms of the GNU GPL version 3.0.

" "

Please see www.qtsoftware.com/products/licensing " "for an overview of Qt licensing.

" + "

Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).

" "

Qt is a Nokia product. See www.qtsoftware.com/qt " "for more information.

" ).arg(QLatin1String(QT_VERSION_STR)); diff --git a/translations/qt_ar.ts b/translations/qt_ar.ts index b9c1adc..b5a60e2 100644 --- a/translations/qt_ar.ts +++ b/translations/qt_ar.ts @@ -1190,7 +1190,7 @@ to QDialogButtonBox - + OK @@ -2998,7 +2998,7 @@ Do you want to delete it anyway? QMessageBox - + @@ -3006,17 +3006,12 @@ Do you want to delete it anyway? موافقة - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt - + Help مساعدة @@ -3030,6 +3025,11 @@ Do you want to delete it anyway? Hide Details... + + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + QMultiInputContext diff --git a/translations/qt_de.ts b/translations/qt_de.ts index 4806231..70cf6f3 100644 --- a/translations/qt_de.ts +++ b/translations/qt_de.ts @@ -1170,7 +1170,7 @@ nach QDialogButtonBox - + OK @@ -2949,7 +2949,7 @@ Möchten sie die Datei trotzdem löschen? QMessageBox - + @@ -2957,17 +2957,12 @@ Möchten sie die Datei trotzdem löschen? OK - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt Über Qt - + Help Hilfe @@ -2985,6 +2980,11 @@ Möchten sie die Datei trotzdem löschen? Hide Details... Details ausblenden... + + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + QMultiInputContext diff --git a/translations/qt_es.ts b/translations/qt_es.ts index f9299cb..ee1e88c 100644 --- a/translations/qt_es.ts +++ b/translations/qt_es.ts @@ -1194,7 +1194,7 @@ a QDialogButtonBox - + OK @@ -3056,7 +3056,7 @@ All other platforms QMessageBox - + Help Ayuda @@ -3069,12 +3069,7 @@ All other platforms Aceptar - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt Acerca de Qt @@ -3087,7 +3082,7 @@ All other platforms <h3>Acerca de Qt</h3>%1<p>Qt es un toolkit en C++ para desarrollo de aplicaciones multiplataforma.</p><p>Qt proporciona portabilidad del código entre MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux y todas las variantes comerciales de Unix importantes. Qt también está disponible para sistemas empotrados bajo el nombre Qtopia Core.</p><p>Qt es un producto de Trolltech. Visite <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> para obtener más información.</p> - + Show Details... Mostrar los detalles... @@ -3097,6 +3092,11 @@ All other platforms Ocultar los detalles... + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + + <p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for an overview of Qt licensing.</p> <p>Este programa utiliza Qt Open Source Edition versión %1.</p><p>Qt Open Source Edition está dirigida al desarrollo de aplicaciones libres. Para desarrollar aplicaciones privativas (de código cerrado) necesita una licencia comercial de Qt.</p><p>Visite <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> para obtener una visión global de las licencias de Qt.</p> diff --git a/translations/qt_fr.ts b/translations/qt_fr.ts index a035963..37b334b 100644 --- a/translations/qt_fr.ts +++ b/translations/qt_fr.ts @@ -1350,7 +1350,7 @@ en QDialogButtonBox - + OK @@ -3199,7 +3199,7 @@ Voulez-vous quand même le supprimer? QMessageBox - + @@ -3207,17 +3207,12 @@ Voulez-vous quand même le supprimer? OK - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt À propos de Qt - + Help Aide @@ -3240,6 +3235,11 @@ Voulez-vous quand même le supprimer? Cacher les détails... + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + + <h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is a Nokia product. See <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for more information.</p> <h3>A propos de Qt</h3>%1<p>Qt est un framework de développement d'applications multi-plateforme.</p><p>Qt fournit la portabilité du code source surMS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, et toutes les variantes majeures d'Unix. Qt est aussi disponible pour l'embarqué avec Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt est un produit de Nokia. Allez à <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> pour plus d'informations.</p> diff --git a/translations/qt_iw.ts b/translations/qt_iw.ts index 52ecc9a..3b4897d 100644 --- a/translations/qt_iw.ts +++ b/translations/qt_iw.ts @@ -1187,7 +1187,7 @@ to QDialogButtonBox - + OK @@ -2958,7 +2958,7 @@ Do you want to delete it anyway? QMessageBox - + @@ -2966,17 +2966,12 @@ Do you want to delete it anyway? אישור - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt - + Help עזרה @@ -2990,6 +2985,11 @@ Do you want to delete it anyway? Hide Details... + + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + QMultiInputContext diff --git a/translations/qt_ja_JP.ts b/translations/qt_ja_JP.ts index f3e7584..7c8b874 100644 --- a/translations/qt_ja_JP.ts +++ b/translations/qt_ja_JP.ts @@ -1194,7 +1194,7 @@ to QDialogButtonBox - + OK @@ -3036,7 +3036,7 @@ Do you want to delete it anyway? QMessageBox - + Help ヘルプ @@ -3065,12 +3065,12 @@ Do you want to delete it anyway? <p>Qt オープンソース版はオープンソースのアプリケーションの開発用です。ソースコードを公開しない商用アプリケーションを開発するには商用版のライセンスが必要です。</p><p>Qtのライセンスについては<tt>http://qtsoftware.com/company/model.html</tt>を参照してください。</p> - + About Qt Qt について - + Show Details... 詳細を表示... @@ -3081,7 +3081,7 @@ Do you want to delete it anyway? - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> diff --git a/translations/qt_pl.ts b/translations/qt_pl.ts index efc8401..7f9ec8d 100644 --- a/translations/qt_pl.ts +++ b/translations/qt_pl.ts @@ -1267,7 +1267,7 @@ na Ni&e dla wszystkich - + OK @@ -2995,7 +2995,7 @@ Proszę o sprawdzenie podanej nazwy pliku. Informacje o Qt - + Help Pomoc @@ -3014,7 +3014,7 @@ Proszę o sprawdzenie podanej nazwy pliku. - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> diff --git a/translations/qt_pt.ts b/translations/qt_pt.ts index 5a93718..b00aaa0 100644 --- a/translations/qt_pt.ts +++ b/translations/qt_pt.ts @@ -1194,7 +1194,7 @@ para QDialogButtonBox - + OK @@ -3044,7 +3044,7 @@ Deseja apagar de qualquer forma? QMessageBox - + Help Ajuda @@ -3057,12 +3057,7 @@ Deseja apagar de qualquer forma? OK - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt Acerca do Qt @@ -3075,7 +3070,7 @@ Deseja apagar de qualquer forma? <h3>Acerca do Qt</h3>%1<p>Qt é um conjunto de ferramentas para desenvolvimento de aplicações multiplataforma.</p>O Qt oferece portabilidade de código fonte único em MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux e todas as principais variantes comerciais de Unix. O Qt está igualmente disponível para dispositivos embebidos como Qtopia Core.</p><p>O Qt é um produto Trolltech. Veja <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> para mais informação.</p> - + Show Details... Mostrar Detalhes... @@ -3085,6 +3080,11 @@ Deseja apagar de qualquer forma? Não Mostrar Detalhes... + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + + <p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for an overview of Qt licensing.</p> <p>Este programa usa Qt Open Source Edition versão %1.</p><p>Qt Open Source Edition é indicado para o desenvolvimento de aplicações/programas open source. Se pretender desenvolver aplicações sem disponibilizar o codigo fonte, então precisará de obter uma licença comercial.</p><p>Por favor consulte <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a>para obter mais informação acerca de licenças Qt.</p> diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts index 1db3e46..28e786b 100644 --- a/translations/qt_ru.ts +++ b/translations/qt_ru.ts @@ -1190,7 +1190,7 @@ to QDialogButtonBox - + OK @@ -2998,7 +2998,7 @@ Do you want to delete it anyway? QMessageBox - + @@ -3006,17 +3006,12 @@ Do you want to delete it anyway? OK - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt - + Help Справка @@ -3030,6 +3025,11 @@ Do you want to delete it anyway? Hide Details... + + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + QMultiInputContext diff --git a/translations/qt_sk.ts b/translations/qt_sk.ts index 5045022..1bf53e7 100644 --- a/translations/qt_sk.ts +++ b/translations/qt_sk.ts @@ -1194,7 +1194,7 @@ na QDialogButtonBox - + OK @@ -3044,7 +3044,7 @@ Chcete ho aj tak zmazať? QMessageBox - + @@ -3052,17 +3052,12 @@ Chcete ho aj tak zmazať? OK - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt Informácie o Qt - + Help Pomocník @@ -3085,6 +3080,11 @@ Chcete ho aj tak zmazať? Skryť detaily... + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + + <p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for an overview of Qt licensing.</p> <p>Tento program používa Qt Open Source Edition verziu %1.</p><p>Qt Open Source Edition je určená pre vývoj Open Source aplikácií. Pre vývoj vlastnených (closed source) aplikácií potrebujete komerčnú Qt licenciu.</p><p>Prosím pozrite <a href="http://qtsoftware.com/company/model.html">qtsoftware.com/company/model.html</a> pre prehľad Qt licencovania.</p> diff --git a/translations/qt_sv.ts b/translations/qt_sv.ts index 1b75722..d6affce 100644 --- a/translations/qt_sv.ts +++ b/translations/qt_sv.ts @@ -1194,7 +1194,7 @@ till QDialogButtonBox - + OK @@ -3000,7 +3000,7 @@ Vill du ta bort den ändå? QMessageBox - + Help Hjälp @@ -3013,12 +3013,7 @@ Vill du ta bort den ändå? OK - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt Om Qt @@ -3031,7 +3026,7 @@ Vill du ta bort den ändå? <h3>Om Qt</h3>%1<p>Qt är ett C++-verktygssamling för utveckling av krossplattformsprogram.</p><p>Qt tillhandahåller portabilitet för samma källkod mellan MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, och alla andra stora kommersiella Unix-varianter. Qt finns också tillgängligt för inbäddade enheter som Qtopia Core.</p><p>Qt är en produkt från Trolltech. Se <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> för mer information.</p> - + Show Details... Visa detaljer... @@ -3040,6 +3035,11 @@ Vill du ta bort den ändå? Hide Details... Dölj detaljer,,, + + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + QMultiInputContext diff --git a/translations/qt_uk.ts b/translations/qt_uk.ts index d6a7d80..9c1b1f4 100644 --- a/translations/qt_uk.ts +++ b/translations/qt_uk.ts @@ -1200,7 +1200,7 @@ to QDialogButtonBox - + OK @@ -3055,7 +3055,7 @@ Do you want to delete it anyway? QMessageBox - + Help Довідка @@ -3068,12 +3068,7 @@ Do you want to delete it anyway? Гаразд - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt Про Qt @@ -3086,7 +3081,7 @@ Do you want to delete it anyway? <h3>Про Qt</h3>%1<p>Qt - це інструментарій C++ для міжплатформової розробки.</p><p>Qt забезпечує мобільність єдиних джерельних текстів між MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux та всіма основними комерційними версіями Unix. Qt існує також для вбудованих пристроїв, таких, як Qtopia Core.</p><p>Qt - це продукт компанії Trolltech. Більше інформації можна знайти на <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a>.</p> - + Show Details... Показати подробиці... @@ -3096,6 +3091,11 @@ Do you want to delete it anyway? Сховати подробиці... + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + + <p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> for an overview of Qt licensing.</p> <p>Ця програма використовує Qt Open Source Edition версії %1.</p><p>Qt Open Source Edition призначено для розробки відкритих програмних засобів. Для розробки власницьких (закритих) програм вам потрібна комерційна ліцензія для Qt.</p><p>Перегляньте <a href="http://qtsoftware.com/company/model/">qtsoftware.com/company/model/</a> щодо огляду ліцензій Qt.</p> diff --git a/translations/qt_untranslated.ts b/translations/qt_untranslated.ts index 083a56f..35a2802 100644 --- a/translations/qt_untranslated.ts +++ b/translations/qt_untranslated.ts @@ -1157,7 +1157,7 @@ to QDialogButtonBox - + OK @@ -2921,7 +2921,7 @@ Do you want to delete it anyway? QMessageBox - + Help @@ -2934,17 +2934,12 @@ Do you want to delete it anyway? - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt - + Show Details... @@ -2953,6 +2948,11 @@ Do you want to delete it anyway? Hide Details... + + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + QMultiInputContext diff --git a/translations/qt_zh_CN.ts b/translations/qt_zh_CN.ts index 061919d..b0a7947 100644 --- a/translations/qt_zh_CN.ts +++ b/translations/qt_zh_CN.ts @@ -1202,7 +1202,7 @@ to QDialogButtonBox - + OK @@ -3044,7 +3044,7 @@ Do you want to delete it anyway? QMessageBox - + Help 帮助 @@ -3057,12 +3057,7 @@ Do you want to delete it anyway? 确定 - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt 关于Qt @@ -3071,7 +3066,7 @@ Do you want to delete it anyway? <p>这个程序使用的是Qt %1版。</p> - + Show Details... 显示细节…… @@ -3081,6 +3076,11 @@ Do you want to delete it anyway? 隐藏细节…… + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + + <h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is a Nokia product. See <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for more information.</p> <h3>关于Qt</h3>%1<p>Qt是一个用于跨平台应用程序开发的C++工具包。</p><p>对于MS&nbsp;Windows、Mac&nbsp;OS&nbsp;X、Linux和所有主流商业Unix,Qt提供了单一源程序的可移植性。Qt也有用于嵌入式Linux和Windows CE的版本。</p><p>Qt是Nokia的产品。有关更多信息,请参考<a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a>。</p> diff --git a/translations/qt_zh_TW.ts b/translations/qt_zh_TW.ts index 9fb871b..bcb6f8d 100644 --- a/translations/qt_zh_TW.ts +++ b/translations/qt_zh_TW.ts @@ -1223,7 +1223,7 @@ to QDialogButtonBox - + OK @@ -3073,7 +3073,7 @@ Do you want to delete it anyway? QMessageBox - + Help 說明 @@ -3086,12 +3086,7 @@ Do you want to delete it anyway? 確定 - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> - - - - + About Qt 關於 Qt @@ -3104,7 +3099,7 @@ Do you want to delete it anyway? <h3>關於 Qt</h3>%1<p>Qt 為一個跨平台的 C++ 開發工具。</p><p>Qt 提供各平台相容機制,只要寫一份程式碼,就可以在 MS&nbsp;Windows、Mac&nbsp;OS&nbsp;X、Linux 與各主要的商業 Unix 平台上編譯。Qt 也可以用 Qtopia Core 用於嵌入式系統。</p><p>Qt 為 Trolltech 的產品。詳情請參考 <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a>。</p> - + Show Details... 顯示詳情... @@ -3114,6 +3109,11 @@ Do you want to delete it anyway? 隱藏詳情... + + <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>Qt is a Nokia product. See <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> for more information.</p> + + + <h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is a Nokia product. See <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a> for more information.</p> <h3>關於 Qt</h3>%1<p>Qt 為一個跨平台的 C++ 開發工具。</p><p>Qt 提供各平台相容機制,只要寫一份程式碼,就可以在 MS&nbsp;Windows、Mac&nbsp;OS&nbsp;X、Linux 與各主要的商業 Unix 平台上編譯。Qt 也有用於嵌入式 Linux 與 Windows CE 的版本。</p><p>Qt 為 Nokia 的產品。詳情請參考 <a href="http://qtsoftware.com/qt/">qtsoftware.com/qt/</a>。</p> -- cgit v0.12 From 33259249106e16052b60c55a35539c9f8cb0414d Mon Sep 17 00:00:00 2001 From: jasplin Date: Mon, 20 Apr 2009 11:44:28 +0200 Subject: Get rid of compiler warning. Reviewed-by: TrustMe --- src/gui/util/qcompleter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/util/qcompleter.cpp b/src/gui/util/qcompleter.cpp index 7571dfe..a622385 100644 --- a/src/gui/util/qcompleter.cpp +++ b/src/gui/util/qcompleter.cpp @@ -1080,7 +1080,7 @@ void QCompleter::setPopup(QAbstractItemView *popup) popup->hide(); popup->setParent(0, Qt::Popup); - Qt::FocusPolicy origPolicy; + Qt::FocusPolicy origPolicy = Qt::NoFocus; if (d->widget) origPolicy = d->widget->focusPolicy(); popup->setFocusPolicy(Qt::NoFocus); -- cgit v0.12 From 0b15f59c648633357e9263e93c688e5462e3e01e Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Mon, 20 Apr 2009 11:39:52 +0200 Subject: Properly support the "prefer antialias" font style Since the introduction of the texture glyph cache we rendered these fonts as 8-bit gray masks which looked bad and cut off a few pixels for thin glyphs. Changed the preferred format of the font engine to be Raster_RGBMask. Task-number: 248141 Reviewed-by: Eskil B --- src/gui/text/qfontdatabase_win.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/gui/text/qfontdatabase_win.cpp b/src/gui/text/qfontdatabase_win.cpp index c9f5586..780ae28 100644 --- a/src/gui/text/qfontdatabase_win.cpp +++ b/src/gui/text/qfontdatabase_win.cpp @@ -699,6 +699,7 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp, const QFontDef &requ } bool stockFont = false; + bool preferClearTypeAA = false; HFONT hfont = 0; @@ -799,10 +800,12 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp, const QFontDef &requ #endif if (request.styleStrategy & QFont::PreferAntialias) { - if (QSysInfo::WindowsVersion >= QSysInfo::WV_XP) + if (QSysInfo::WindowsVersion >= QSysInfo::WV_XP) { qual = 5; // == CLEARTYPE_QUALITY; - else + preferClearTypeAA = true; + } else { qual = ANTIALIASED_QUALITY; + } } else if (request.styleStrategy & QFont::NoAntialias) { qual = NONANTIALIASED_QUALITY; } @@ -884,6 +887,9 @@ QFontEngine *loadEngine(int script, const QFontPrivate *fp, const QFontDef &requ } QFontEngineWin *few = new QFontEngineWin(font_name, hfont, stockFont, lf); + if (preferClearTypeAA) + few->glyphFormat = QFontEngineGlyphCache::Raster_RGBMask; + // Also check for OpenType tables when using complex scripts // ### TODO: This only works for scripts that require OpenType. More generally // for scripts that do not require OpenType we should just look at the list of @@ -1134,7 +1140,7 @@ static void getFamiliesAndSignatures(const QByteArray &fontData, QFontDatabasePr signature.fsUsb[1] = qFromBigEndian(table + 46); signature.fsUsb[2] = qFromBigEndian(table + 50); signature.fsUsb[3] = qFromBigEndian(table + 54); - + signature.fsCsb[0] = qFromBigEndian(table + 78); signature.fsCsb[1] = qFromBigEndian(table + 82); } -- cgit v0.12 From 2e3f7621d696bec6173810c75b042249645fa714 Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Mon, 20 Apr 2009 12:32:31 +0200 Subject: This fix a bug on the QFileSystemModel with a custom icon provider We were calling the provider with invalid path, with the default one it fallback to all standard icons but with a custom one we call a public method with an invalid QFileInfo. It was happening on windows only for the My Drives view because in that case the parent path is null, my Drives is a logical view. Task-number: 251295 Reviewed-by: jasplin --- src/gui/dialogs/qfiledialog.cpp | 2 ++ src/gui/dialogs/qfilesystemmodel_p.h | 12 +++++-- .../auto/qfilesystemmodel/tst_qfilesystemmodel.cpp | 41 ++++++++++++++++++++++ 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index f70669c..9935a80 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -1437,6 +1437,8 @@ void QFileDialog::setIconProvider(QFileIconProvider *provider) { Q_D(QFileDialog); d->model->setIconProvider(provider); + //It forces the refresh of all entries in the side bar, then we can get new icons + d->qFileDialogUi->sidebar->setUrls(d->qFileDialogUi->sidebar->urls()); } /*! diff --git a/src/gui/dialogs/qfilesystemmodel_p.h b/src/gui/dialogs/qfilesystemmodel_p.h index 77c35a2..0a1265a 100644 --- a/src/gui/dialogs/qfilesystemmodel_p.h +++ b/src/gui/dialogs/qfilesystemmodel_p.h @@ -163,7 +163,11 @@ public: info->icon = iconProvider->icon(QFileInfo(path)); QHash::const_iterator iterator; for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) { - iterator.value()->updateIcon(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); + //On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/) + if (!path.isEmpty()) + iterator.value()->updateIcon(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); + else + iterator.value()->updateIcon(iconProvider, iterator.value()->fileName); } } @@ -172,7 +176,11 @@ public: info->displayType = iconProvider->type(QFileInfo(path)); QHash::const_iterator iterator; for(iterator = children.constBegin() ; iterator != children.constEnd() ; ++iterator) { - iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); + //On windows the root (My computer) has no path so we don't want to add a / for nothing (e.g. /C:/) + if (!path.isEmpty()) + iterator.value()->retranslateStrings(iconProvider, path + QLatin1Char('/') + iterator.value()->fileName); + else + iterator.value()->retranslateStrings(iconProvider, iterator.value()->fileName); } } diff --git a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp index 826d278..59d57ce 100644 --- a/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp +++ b/tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp @@ -45,6 +45,7 @@ #include #include "../../shared/util.h" #include +#include #include //TESTED_CLASS= @@ -284,6 +285,33 @@ void tst_QFileSystemModel::readOnly() QVERIFY(model->flags(model->index(file.fileName())) & Qt::ItemIsEditable); } +class CustomFileIconProvider : public QFileIconProvider +{ +public: + CustomFileIconProvider() : QFileIconProvider() { + mb = qApp->style()->standardIcon(QStyle::SP_MessageBoxCritical); + dvd = qApp->style()->standardIcon(QStyle::SP_DriveDVDIcon); + } + + virtual QIcon icon(const QFileInfo &info) const + { + if (info.isDir()) + return mb; + + return QFileIconProvider::icon(info); + } + virtual QIcon icon(IconType type) const + { + if (type == QFileIconProvider::Folder) + return dvd; + + return QFileIconProvider::icon(type); + } +private: + QIcon mb; + QIcon dvd; +}; + void tst_QFileSystemModel::iconProvider() { QVERIFY(model->iconProvider()); @@ -292,6 +320,19 @@ void tst_QFileSystemModel::iconProvider() QCOMPARE(model->iconProvider(), p); model->setIconProvider(0); delete p; + + QFileSystemModel *myModel = new QFileSystemModel(); + myModel->setRootPath(QDir::homePath()); + //Let's wait to populate the model + QTest::qWait(250); + //We change the provider, icons must me updated + CustomFileIconProvider *custom = new CustomFileIconProvider(); + myModel->setIconProvider(custom); + + QPixmap mb = qApp->style()->standardIcon(QStyle::SP_MessageBoxCritical).pixmap(50, 50); + QCOMPARE(myModel->fileIcon(myModel->index(QDir::homePath())).pixmap(50, 50), mb); + delete myModel; + delete custom; } bool tst_QFileSystemModel::createFiles(const QString &test_path, const QStringList &initial_files, int existingFileCount, const QStringList &initial_dirs, const QString &dir) -- cgit v0.12 From cc8f9a20198590d219fe38421d0629002e574c20 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 15 Apr 2009 16:16:28 +0200 Subject: do not add UI_DIR to INCLUDEPATH if no FORMS are used Reviewed-by: mariusSO --- mkspecs/features/uic.prf | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mkspecs/features/uic.prf b/mkspecs/features/uic.prf index 0c7fb1b..d2985f9 100644 --- a/mkspecs/features/uic.prf +++ b/mkspecs/features/uic.prf @@ -34,10 +34,12 @@ isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_ INCREDIBUILD_XGE += uic } -ui_dir_short = $$UI_HEADERS_DIR -win32:ui_dir_short ~= s,^.:,/, -contains(ui_dir_short, ^[/\\\\].*):INCLUDEPATH += $$UI_HEADERS_DIR -else:INCLUDEPATH += $$OUT_PWD/$$UI_HEADERS_DIR +!isEmpty(FORMS)|!isEmpty(FORMS3) { + ui_dir_short = $$UI_HEADERS_DIR + win32:ui_dir_short ~= s,^.:,/, + contains(ui_dir_short, ^[/\\\\].*):INCLUDEPATH += $$UI_HEADERS_DIR + else:INCLUDEPATH += $$OUT_PWD/$$UI_HEADERS_DIR +} # Backwards compatibility: Make shadow builds with default UI_DIR work # if the user did not add the source dir explicitly. -- cgit v0.12 From 100914d12d6c846c9de0460cb986b8794cce8c14 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 17 Apr 2009 12:32:53 +0200 Subject: mac: remove special handling of the editor frame now that stylesheets work properly --- tools/linguist/linguist/messageeditor.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tools/linguist/linguist/messageeditor.cpp b/tools/linguist/linguist/messageeditor.cpp index dc8b8e4..53cbbea 100644 --- a/tools/linguist/linguist/messageeditor.cpp +++ b/tools/linguist/linguist/messageeditor.cpp @@ -133,19 +133,12 @@ void MessageEditor::setupEditorPage() QFrame *editorPage = new QFrame; editorPage->setObjectName(QLatin1String("editorPage")); - // Due to CSS being rather broken on the Mac style at the moment, only - // use the border-image on non-Mac systems. editorPage->setStyleSheet(QLatin1String( -#ifndef Q_WS_MAC "QFrame#editorPage { border-image: url(:/images/transbox.png) 12 16 16 12 repeat;" " border-width: 12px 16px 16px 12px; }" -#endif "QFrame#editorPage { background-color: white; }" "QLabel { font-weight: bold; }" )); -#ifdef Q_WS_MAC - editorPage->setFrameStyle(QFrame::StyledPanel | QFrame::Raised); -#endif editorPage->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); m_source = new FormWidget(tr("Source text"), false); -- cgit v0.12 From b4fa49153129644fef00efd96f76355c5e1435f8 Mon Sep 17 00:00:00 2001 From: axis Date: Mon, 20 Apr 2009 14:13:18 +0200 Subject: Fixed incorrect documentation. --- src/gui/kernel/qwidget.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 31fed5e..071e1bd 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -2234,9 +2234,10 @@ WId QWidget::effectiveWinId() const The style sheet contains a textual description of customizations to the widget's style, as described in the \l{Qt Style Sheets} document. - \note Qt style sheets are currently not supported for QMacStyle - (the default style on Mac OS X). We plan to address this in some future - release. + Since Qt 4.5, Qt style sheets fully supports Mac OS X. + + \warning Qt style sheets are currently not supported for custom QStyle + subclasses. We plan to address this in some future release. \sa setStyle(), QApplication::styleSheet, {Qt Style Sheets} */ -- cgit v0.12 From beb6912526766edd7e8a9f9876d82272f798dbc3 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 20 Apr 2009 14:22:56 +0200 Subject: don't create double backslash in qdoc3 command on Windows Reviewed-by: janarve --- doc/doc.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/doc.pri b/doc/doc.pri index 6b77f88..46df3cb 100644 --- a/doc/doc.pri +++ b/doc/doc.pri @@ -24,7 +24,7 @@ $$unixstyle { QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && QT_BUILD_TREE=$$QT_BUILD_TREE QT_SOURCE_TREE=$$QT_SOURCE_TREE $$QT_BUILD_TREE/tools/qdoc3/$${QT_WINCONFIG}qdoc3 $$DOCS_GENERATION_DEFINES } else { QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && set QT_BUILD_TREE=$$QT_BUILD_TREE&& set QT_SOURCE_TREE=$$QT_SOURCE_TREE&& $$QT_BUILD_TREE/tools/qdoc3/$${QT_WINCONFIG}qdoc3.exe $$DOCS_GENERATION_DEFINES - QDOC = $$replace(QDOC, "/", "\\\\") + QDOC = $$replace(QDOC, "/", "\\") } macx { ADP_DOCS_QDOCCONF_FILE = qt-build-docs-with-xcode.qdocconf -- cgit v0.12 From 031adeaf42ddaef8d01338f6c59ba97170be5d53 Mon Sep 17 00:00:00 2001 From: jasplin Date: Mon, 20 Apr 2009 14:24:08 +0200 Subject: Fixed key sequence eating behavior for QShortcut and QAction. A disabled QShortcut should eat its key sequence even for complex sequences like "Ctrl-E 1". For example, a line edit with such a shortcut should not display 1 after typing "Ctrl-E" and then "1". The patch achieves this essentially by moving more of the decision making (of whether to eat the key secuence) from shortcutmap.cpp to qhortcut.cpp. Moreover, an invisible QAction should not eat any of its key sequences (primary nor alternates). In the example above, the line edit would display 1 when typing this sequence for an invisible action. The patch achieves this by temporarily unregistering all of the action's shortcuts while the action is invisible. Reviewed-by: mariusSO Task-number: 251246 --- src/gui/kernel/qaction.cpp | 47 +++++++++++++++++++++++++--------- src/gui/kernel/qaction_p.h | 1 + src/gui/kernel/qshortcut.cpp | 20 ++++++++------- src/gui/kernel/qshortcutmap.cpp | 9 +++---- tests/auto/qaction/tst_qaction.cpp | 33 ++++++++++++++++++++++++ tests/auto/qshortcut/tst_qshortcut.cpp | 7 +++-- 6 files changed, 86 insertions(+), 31 deletions(-) diff --git a/src/gui/kernel/qaction.cpp b/src/gui/kernel/qaction.cpp index abb17d7..4edc1ca 100644 --- a/src/gui/kernel/qaction.cpp +++ b/src/gui/kernel/qaction.cpp @@ -136,25 +136,27 @@ void QActionPrivate::redoGrab(QShortcutMap &map) void QActionPrivate::redoGrabAlternate(QShortcutMap &map) { Q_Q(QAction); - foreach (int id, alternateShortcutIds) - if (id) + for (int i = 0; i < alternateShortcutIds.size(); ++i) + if (int id = alternateShortcutIds.at(i)) map.removeShortcut(id, q); alternateShortcutIds.clear(); if (alternateShortcuts.isEmpty()) return; - foreach (const QKeySequence& alternate, alternateShortcuts) { + for (int i = 0; i < alternateShortcuts.size(); ++i) { + const QKeySequence &alternate = alternateShortcuts.at(i); if (!alternate.isEmpty()) alternateShortcutIds.append(map.addShortcut(q, alternate, shortcutContext)); else alternateShortcutIds.append(0); } + if (!enabled) { - foreach (int id, alternateShortcutIds) - map.setShortcutEnabled(false, id, q); + for (int i = 0; i < alternateShortcutIds.size(); ++i) + map.setShortcutEnabled(false, alternateShortcutIds.at(i), q); } if (!autorepeat) { - foreach (int id, alternateShortcutIds) - map.setShortcutAutoRepeat(false, id, q); + for (int i = 0; i < alternateShortcutIds.size(); ++i) + map.setShortcutAutoRepeat(false, alternateShortcutIds.at(i), q); } } @@ -163,10 +165,26 @@ void QActionPrivate::setShortcutEnabled(bool enable, QShortcutMap &map) Q_Q(QAction); if (shortcutId) map.setShortcutEnabled(enable, shortcutId, q); - foreach (int id, alternateShortcutIds) - if (id) + for (int i = 0; i < alternateShortcutIds.size(); ++i) + if (int id = alternateShortcutIds.at(i)) map.setShortcutEnabled(enable, id, q); } + +void QActionPrivate::removeAll(QShortcutMap &map) +{ + Q_Q(QAction); + if (shortcutId) { + map.removeShortcut(shortcutId, q); + shortcutId = 0; + } + + for (int i = 0; i < alternateShortcutIds.size(); ++i) + if (int id = alternateShortcutIds.at(i)) + map.removeShortcut(id, q); + + alternateShortcutIds.clear(); +} + #endif // QT_NO_SHORTCUT @@ -615,8 +633,8 @@ QAction::~QAction() #ifndef QT_NO_SHORTCUT if (d->shortcutId && qApp) { qApp->d_func()->shortcutMap.removeShortcut(d->shortcutId, this); - foreach (int id, d->alternateShortcutIds) - qApp->d_func()->shortcutMap.removeShortcut(id, this); + for (int i = 0; i < d->alternateShortcutIds.size(); ++i) + qApp->d_func()->shortcutMap.removeShortcut(d->alternateShortcutIds.at(i), this); } #endif } @@ -1049,7 +1067,12 @@ void QAction::setVisible(bool b) d->visible = b; d->enabled = b && !d->forceDisabled && (!d->group || d->group->isEnabled()) ; #ifndef QT_NO_SHORTCUT - d->setShortcutEnabled(d->enabled, qApp->d_func()->shortcutMap); + if (b) { + d->redoGrab(qApp->d_func()->shortcutMap); + d->redoGrabAlternate(qApp->d_func()->shortcutMap); + } else { + d->removeAll(qApp->d_func()->shortcutMap); + } #endif d->sendDataChanged(); } diff --git a/src/gui/kernel/qaction_p.h b/src/gui/kernel/qaction_p.h index 0617ef5..a5b3731 100644 --- a/src/gui/kernel/qaction_p.h +++ b/src/gui/kernel/qaction_p.h @@ -111,6 +111,7 @@ public: void redoGrab(QShortcutMap &map); void redoGrabAlternate(QShortcutMap &map); void setShortcutEnabled(bool enable, QShortcutMap &map); + void removeAll(QShortcutMap &map); static QShortcutMap *globalMap; #endif // QT_NO_SHORTCUT diff --git a/src/gui/kernel/qshortcut.cpp b/src/gui/kernel/qshortcut.cpp index 50b6e59..f3c93c6 100644 --- a/src/gui/kernel/qshortcut.cpp +++ b/src/gui/kernel/qshortcut.cpp @@ -385,19 +385,21 @@ bool QShortcut::event(QEvent *e) { Q_D(QShortcut); bool handled = false; - if (d->sc_enabled && e->type() == QEvent::Shortcut) { + if (e->type() == QEvent::Shortcut) { QShortcutEvent *se = static_cast(e); if (se->shortcutId() == d->sc_id && se->key() == d->sc_sequence){ + if (d->sc_enabled) { #ifndef QT_NO_WHATSTHIS - if (QWhatsThis::inWhatsThisMode()) { - QWhatsThis::showText(QCursor::pos(), d->sc_whatsthis); - handled = true; - } else + if (QWhatsThis::inWhatsThisMode()) { + QWhatsThis::showText(QCursor::pos(), d->sc_whatsthis); + handled = true; + } else #endif - if (se->isAmbiguous()) - emit activatedAmbiguously(); - else - emit activated(); + if (se->isAmbiguous()) + emit activatedAmbiguously(); + else + emit activated(); + } handled = true; } } diff --git a/src/gui/kernel/qshortcutmap.cpp b/src/gui/kernel/qshortcutmap.cpp index ed9654b..9766a69 100644 --- a/src/gui/kernel/qshortcutmap.cpp +++ b/src/gui/kernel/qshortcutmap.cpp @@ -370,9 +370,8 @@ bool QShortcutMap::tryShortcutEvent(QObject *o, QKeyEvent *e) default: break; } - // If nextState is QKeySequence::ExactMatch && identicals.count == 0 - // we've only found disabled shortcuts - return identicalMatches > 0 || result == QKeySequence::PartialMatch; + + return true; } /*! \internal @@ -494,9 +493,7 @@ QKeySequence::SequenceMatch QShortcutMap::find(QKeyEvent *e) // We don't need partials, if we have identicals if (d->identicals.size()) break; - // We only care about enabled partials, so we don't consume - // key events when all partials are disabled! - partialFound |= (*it).enabled; + partialFound = true; } } ++it; diff --git a/tests/auto/qaction/tst_qaction.cpp b/tests/auto/qaction/tst_qaction.cpp index 34f2dfd..8e4ae86 100644 --- a/tests/auto/qaction/tst_qaction.cpp +++ b/tests/auto/qaction/tst_qaction.cpp @@ -46,6 +46,7 @@ #include #include #include +#include //TESTED_CLASS= //TESTED_FILES= @@ -74,6 +75,7 @@ private slots: void setStandardKeys(); void alternateShortcuts(); void enabledVisibleInteraction(); + void invisibleActionWithComplexShortcut(); void task200823_tooltip(); private: @@ -322,5 +324,36 @@ void tst_QAction::task200823_tooltip() QCOMPARE(action->toolTip(), ref); } +void tst_QAction::invisibleActionWithComplexShortcut() +{ + QAction action(0); + action.setShortcut(QKeySequence(Qt::CTRL + Qt::Key_E, Qt::Key_1)); + + QLineEdit edit; + edit.addAction(&action); + edit.show(); + QTest::qWait(100); + + QSignalSpy spy(&action, SIGNAL(triggered())); + + action.setVisible(true); + QTest::keyPress(&edit, Qt::Key_E, Qt::ControlModifier); + QTest::keyRelease(&edit, Qt::Key_E, Qt::ControlModifier); + QTest::keyPress(&edit, Qt::Key_1, Qt::NoModifier); + QTest::keyRelease(&edit, Qt::Key_1, Qt::NoModifier); + QCOMPARE(spy.count(), 1); + QCOMPARE(edit.text(), QLatin1String("")); + + edit.clear(); + spy.clear(); + action.setVisible(false); + QTest::keyPress(&edit, Qt::Key_E, Qt::ControlModifier); + QTest::keyRelease(&edit, Qt::Key_E, Qt::ControlModifier); + QTest::keyPress(&edit, Qt::Key_1, Qt::NoModifier); + QTest::keyRelease(&edit, Qt::Key_1, Qt::NoModifier); + QCOMPARE(spy.count(), 0); + QCOMPARE(edit.text(), QLatin1String("1")); +} + QTEST_MAIN(tst_QAction) #include "tst_qaction.moc" diff --git a/tests/auto/qshortcut/tst_qshortcut.cpp b/tests/auto/qshortcut/tst_qshortcut.cpp index 69ebf74..cd80204 100644 --- a/tests/auto/qshortcut/tst_qshortcut.cpp +++ b/tests/auto/qshortcut/tst_qshortcut.cpp @@ -987,17 +987,16 @@ void tst_QShortcut::keypressConsumption() cut1->setEnabled(false); cut2->setEnabled(false); - // Make sure keypresses is passed on, since all multiple keysequences - // with Ctrl+I are disabled + edit->clear(); sendKeyEvents(edit, Qt::CTRL + Qt::Key_I, 0); // Send key to edit QCOMPARE( currentResult, NoResult ); QCOMPARE( ambigResult, NoResult ); - QVERIFY(edit->toPlainText().endsWith("")); + QVERIFY(edit->toPlainText().isEmpty()); sendKeyEvents(edit, Qt::Key_A, 'a'); // Send key to edit QCOMPARE( currentResult, NoResult ); QCOMPARE( ambigResult, NoResult ); - QVERIFY(edit->toPlainText().endsWith("a")); + QVERIFY(edit->toPlainText().isEmpty()); clearAllShortcuts(); } -- cgit v0.12 From 0b14582aa47e1c255e1bbd68ef5ced2e69ec31a8 Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Mon, 20 Apr 2009 14:45:07 +0200 Subject: Unable to build ActiveQt with Opensource edition. Updated the project files and headers necessary for enabling this. Reviewed-by: Thiago Macieira Reviewed-by: Jens Bache-Wiig --- examples/examples.pro | 2 +- src/activeqt/container/container.pro | 40 ++++++++++++++++-------------------- src/activeqt/control/control.pro | 30 ++++++++++++--------------- src/corelib/global/qglobal.h | 4 ++-- src/src.pro | 2 +- tools/activeqt/activeqt.pro | 11 ++++------ tools/tools.pro | 2 +- 7 files changed, 40 insertions(+), 51 deletions(-) diff --git a/examples/examples.pro b/examples/examples.pro index 2c4fc81..41501a0 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -33,7 +33,7 @@ embedded:SUBDIRS += qws } contains(QT_CONFIG, opengl): SUBDIRS += opengl contains(QT_CONFIG, dbus): SUBDIRS += dbus -win32:!contains(QT_EDITION, OpenSource|Console):SUBDIRS += activeqt +win32: SUBDIRS += activeqt contains(QT_CONFIG, xmlpatterns): SUBDIRS += xmlpatterns contains(DEFINES, QT_NO_CURSOR): SUBDIRS -= mainwindows diff --git a/src/activeqt/container/container.pro b/src/activeqt/container/container.pro index ceedacf..d654f92 100644 --- a/src/activeqt/container/container.pro +++ b/src/activeqt/container/container.pro @@ -21,25 +21,21 @@ LIBS += -lole32 -loleaut32 !wince*:LIBS += -luser32 -lgdi32 -ladvapi32 win32-g++:LIBS += -luuid -contains(QT_EDITION, OpenSource|Console) { - message( "You are not licensed to use ActiveQt." ) -} else { - HEADERS = ../control/qaxaggregated.h \ - qaxbase.h \ - qaxwidget.h \ - qaxobject.h \ - qaxscript.h \ - qaxselect.h \ - ../shared/qaxtypes.h - - SOURCES = qaxbase.cpp \ - qaxdump.cpp \ - qaxwidget.cpp \ - qaxobject.cpp \ - qaxscript.cpp \ - qaxscriptwrapper.cpp \ - qaxselect.cpp \ - ../shared/qaxtypes.cpp - - FORMS = qaxselect.ui -} +HEADERS = ../control/qaxaggregated.h \ + qaxbase.h \ + qaxwidget.h \ + qaxobject.h \ + qaxscript.h \ + qaxselect.h \ + ../shared/qaxtypes.h + +SOURCES = qaxbase.cpp \ + qaxdump.cpp \ + qaxwidget.cpp \ + qaxobject.cpp \ + qaxscript.cpp \ + qaxscriptwrapper.cpp \ + qaxselect.cpp \ + ../shared/qaxtypes.cpp + +FORMS = qaxselect.ui diff --git a/src/activeqt/control/control.pro b/src/activeqt/control/control.pro index 65b0251..bf3647e 100644 --- a/src/activeqt/control/control.pro +++ b/src/activeqt/control/control.pro @@ -24,20 +24,16 @@ win32-borland:DEFINES += QT_NEEDS_QMAIN LIBS += -luser32 -lole32 -loleaut32 -lgdi32 win32-g++:LIBS += -luuid -contains(QT_EDITION, OpenSource|Console) { - message( "You are not licensed to use ActiveQt." ) -} else { - HEADERS = qaxaggregated.h \ - qaxbindable.h \ - qaxfactory.h \ - ../shared/qaxtypes.h - - SOURCES = qaxserver.cpp \ - qaxserverbase.cpp \ - qaxbindable.cpp \ - qaxfactory.cpp \ - qaxservermain.cpp \ - qaxserverdll.cpp \ - qaxmain.cpp \ - ../shared/qaxtypes.cpp -} +HEADERS = qaxaggregated.h \ + qaxbindable.h \ + qaxfactory.h \ + ../shared/qaxtypes.h + +SOURCES = qaxserver.cpp \ + qaxserverbase.cpp \ + qaxbindable.cpp \ + qaxfactory.cpp \ + qaxservermain.cpp \ + qaxserverdll.cpp \ + qaxmain.cpp \ + ../shared/qaxtypes.cpp diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 81af295..d0855fe 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -2265,9 +2265,9 @@ QT3_SUPPORT Q_CORE_EXPORT const char *qInstallPathSysconf(); | QT_MODULE_GRAPHICSVIEW \ | QT_MODULE_HELP \ | QT_MODULE_TEST \ - | QT_MODULE_DBUS) -#define QT_EDITION_DESKTOP (QT_EDITION_OPENSOURCE \ + | QT_MODULE_DBUS \ | QT_MODULE_ACTIVEQT) +#define QT_EDITION_DESKTOP (QT_EDITION_OPENSOURCE) #define QT_EDITION_UNIVERSAL QT_EDITION_DESKTOP #define QT_EDITION_ACADEMIC QT_EDITION_DESKTOP #define QT_EDITION_EDUCATIONAL QT_EDITION_DESKTOP diff --git a/src/src.pro b/src/src.pro index fb28882..f40c6ad 100644 --- a/src/src.pro +++ b/src/src.pro @@ -13,7 +13,7 @@ wince*:{ contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_tools_uic3 } } -win32:!contains(QT_EDITION, OpenSource|Console): { +win32:{ SRC_SUBDIRS += src_activeqt !wince*: SRC_SUBDIRS += src_tools_idc } diff --git a/tools/activeqt/activeqt.pro b/tools/activeqt/activeqt.pro index a0e7de3..c50010c 100644 --- a/tools/activeqt/activeqt.pro +++ b/tools/activeqt/activeqt.pro @@ -2,10 +2,7 @@ TEMPLATE = subdirs CONFIG += ordered -contains(QT_EDITION, OpenSource|Console) { - message("You are not licensed to use ActiveQt.") -} else { - SUBDIRS = dumpdoc \ - dumpcpp \ - testcon -} +SUBDIRS = dumpdoc \ + dumpcpp \ + testcon + diff --git a/tools/tools.pro b/tools/tools.pro index ffc5d63..3325a57 100644 --- a/tools/tools.pro +++ b/tools/tools.pro @@ -15,7 +15,7 @@ no-png { SUBDIRS += linguist wince*: SUBDIRS = qtestlib designer unix:!mac:!embedded:contains(QT_CONFIG, qt3support):SUBDIRS += qtconfig - win32:!wince*:!contains(QT_EDITION, OpenSource|Console):SUBDIRS += activeqt + win32:!wince*:SUBDIRS += activeqt } mac { -- cgit v0.12 From 68d6a91fd2db9ec95d9f46e7af10eff7da89f8f0 Mon Sep 17 00:00:00 2001 From: Kavindra Devi Palaraja Date: Mon, 20 Apr 2009 15:47:41 +0200 Subject: Doc - Mentioned that ActiveQt is now part of the Open source versions of Qt. Reviewed-by: Prasanth Ullattil --- doc/src/activeqt.qdoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/src/activeqt.qdoc b/doc/src/activeqt.qdoc index ea13e59..3919823 100644 --- a/doc/src/activeqt.qdoc +++ b/doc/src/activeqt.qdoc @@ -73,7 +73,7 @@ To build the static libraries, change into the \c activeqt directory (usually \c QTDIR/src/activeqt), and run \c qmake and your make tool in both the \c container and the \c control subdirectory. - The libraries \c qaxcontainer.lib and \c qaxserver.lib will be linked + The libraries \c qaxcontainer.lib and \c qaxserver.lib will be linked into \c QTDIR/lib. If you are using a shared configuration of Qt enter the \c plugin @@ -81,8 +81,8 @@ plugin that integrates the QAxContainer module into \l{Qt Designer}. - The ActiveQt modules are part of the \l{Qt Full Framework Edition}. They - are \e not part of the \l{Open Source Versions of Qt}. + The ActiveQt modules are part of the \l{Qt Full Framework Edition} and + the \l{Open Source Versions}. \sa {QAxContainer Module}, {QAxServer Module} */ -- cgit v0.12 From c520a4c75d16948417f6c1a3f42508510be0b5f4 Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Mon, 20 Apr 2009 10:02:05 +0200 Subject: Working on QGraphicsProxyWidget's handling of widget flags. --- src/gui/graphicsview/qgraphicsproxywidget.cpp | 6 +- src/gui/graphicsview/qgraphicswidget.cpp | 5 +- src/gui/graphicsview/qgraphicswidget_p.cpp | 3 +- .../tst_qgraphicsproxywidget.cpp | 64 ++++++++++++++++++ tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp | 79 ++++++++++++++++++++++ 5 files changed, 146 insertions(+), 11 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp index e660879..f99fef9 100644 --- a/src/gui/graphicsview/qgraphicsproxywidget.cpp +++ b/src/gui/graphicsview/qgraphicsproxywidget.cpp @@ -460,7 +460,7 @@ void QGraphicsProxyWidgetPrivate::embedSubWindow(QWidget *subWin) { QWExtra *extra; if (!((extra = subWin->d_func()->extra) && extra->proxyWidget)) { - QGraphicsProxyWidget *subProxy = new QGraphicsProxyWidget(q_func()); + QGraphicsProxyWidget *subProxy = new QGraphicsProxyWidget(q_func(), subWin->windowFlags()); subProxy->d_func()->setWidget_helper(subWin, false); } } @@ -661,10 +661,6 @@ void QGraphicsProxyWidgetPrivate::setWidget_helper(QWidget *newWidget, bool auto if (newWidget->testAttribute(Qt::WA_SetCursor)) q->setCursor(widget->cursor()); #endif - Qt::WFlags flags = newWidget->windowFlags(); - if (newWidget->windowType() == Qt::Window) - flags &= ~Qt::Window; - q->setWindowFlags(flags); q->setEnabled(newWidget->isEnabled()); q->setVisible(newWidget->isVisible()); q->setLayoutDirection(newWidget->layoutDirection()); diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp index 2e7d82a..66930f2 100644 --- a/src/gui/graphicsview/qgraphicswidget.cpp +++ b/src/gui/graphicsview/qgraphicswidget.cpp @@ -1039,10 +1039,6 @@ QVariant QGraphicsWidget::itemChange(GraphicsItemChange change, const QVariant & break; } case ItemParentHasChanged: { - // reset window type on parent change in order to automagically remove decorations etc. - Qt::WindowFlags wflags = d->windowFlags & ~Qt::WindowType_Mask; - d->adjustWindowFlags(&wflags); - setWindowFlags(wflags); // Deliver ParentChange. QEvent event(QEvent::ParentChange); QApplication::sendEvent(this, &event); @@ -1623,6 +1619,7 @@ void QGraphicsWidget::setWindowFlags(Qt::WindowFlags wFlags) return; bool wasPopup = (d->windowFlags & Qt::WindowType_Mask) == Qt::Popup; + d->adjustWindowFlags(&wFlags); d->windowFlags = wFlags; if (!d->setWindowFrameMargins) unsetWindowFrameMargins(); diff --git a/src/gui/graphicsview/qgraphicswidget_p.cpp b/src/gui/graphicsview/qgraphicswidget_p.cpp index 06ffe73..4b41a31 100644 --- a/src/gui/graphicsview/qgraphicswidget_p.cpp +++ b/src/gui/graphicsview/qgraphicswidget_p.cpp @@ -67,8 +67,7 @@ void QGraphicsWidgetPrivate::init(QGraphicsItem *parentItem, Qt::WindowFlags wFl focusNext = focusPrev = q; focusPolicy = Qt::NoFocus; - if (!parentItem) - adjustWindowFlags(&wFlags); + adjustWindowFlags(&wFlags); windowFlags = wFlags; q->setParentItem(parentItem); diff --git a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp index b99f111..9d82ffd 100644 --- a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp +++ b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp @@ -175,6 +175,9 @@ private slots: void bypassGraphicsProxyWidget_data(); void bypassGraphicsProxyWidget(); void dragDrop(); + void windowFlags_data(); + void windowFlags(); + void comboboxWindowFlags(); }; // Subclass that exposes the protected functions. @@ -3153,6 +3156,67 @@ void tst_QGraphicsProxyWidget::dragDrop() QCOMPARE(edit->text(), QString("hei")); } +void tst_QGraphicsProxyWidget::windowFlags_data() +{ + QTest::addColumn("proxyFlags"); + QTest::addColumn("widgetFlags"); + QTest::addColumn("resultingProxyFlags"); + QTest::addColumn("resultingWidgetFlags"); + + QTest::newRow("proxy(0) widget(0)") << 0 << 0 << 0 << int(Qt::Window); + QTest::newRow("proxy(window)") << int(Qt::Window) << 0 << int(Qt::Window) << int(Qt::Window); + QTest::newRow("proxy(window) widget(window)") << int(Qt::Window) << int(Qt::Window) << int(Qt::Window) << int(Qt::Window); + QTest::newRow("proxy(0) widget(window)") << int(0) << int(Qt::Window) << int(0) << int(Qt::Window); +} + +void tst_QGraphicsProxyWidget::windowFlags() +{ + QFETCH(int, proxyFlags); + QFETCH(int, widgetFlags); + QFETCH(int, resultingProxyFlags); + QFETCH(int, resultingWidgetFlags); + Qt::WindowFlags proxyWFlags = Qt::WindowFlags(proxyFlags); + Qt::WindowFlags widgetWFlags = Qt::WindowFlags(widgetFlags); + Qt::WindowFlags resultingProxyWFlags = Qt::WindowFlags(resultingProxyFlags); + Qt::WindowFlags resultingWidgetWFlags = Qt::WindowFlags(resultingWidgetFlags); + + QGraphicsProxyWidget proxy(0, proxyWFlags); + QVERIFY((proxy.windowFlags() & proxyWFlags) == proxyWFlags); + + QWidget *widget = new QWidget(0, widgetWFlags); + QVERIFY((widget->windowFlags() & widgetWFlags) == widgetWFlags); + + proxy.setWidget(widget); + + if (resultingProxyFlags == 0) + QVERIFY(!proxy.windowFlags()); + else + QVERIFY((proxy.windowFlags() & resultingProxyWFlags) == resultingProxyWFlags); + QVERIFY((widget->windowFlags() & resultingWidgetWFlags) == resultingWidgetWFlags); +} + +void tst_QGraphicsProxyWidget::comboboxWindowFlags() +{ + QComboBox *comboBox = new QComboBox; + comboBox->addItem("Item 1"); + comboBox->addItem("Item 2"); + comboBox->addItem("Item 3"); + QWidget *embedWidget = comboBox; + + QGraphicsScene scene; + QGraphicsProxyWidget *proxy = scene.addWidget(embedWidget); + proxy->setWindowFlags(Qt::Window); + QVERIFY(embedWidget->isWindow()); + QVERIFY(proxy->isWindow()); + + comboBox->showPopup(); + + QCOMPARE(proxy->childItems().size(), 1); + QGraphicsItem *popupProxy = proxy->childItems().first(); + QVERIFY(popupProxy->isWindow()); + QVERIFY((static_cast(popupProxy)->windowFlags() & Qt::Popup) == Qt::Popup); +} + QTEST_MAIN(tst_QGraphicsProxyWidget) #include "tst_qgraphicsproxywidget.moc" diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp index a737a37..56737c3 100644 --- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp +++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp @@ -149,6 +149,8 @@ private slots: void explicitMouseGrabber(); void implicitMouseGrabber(); void popupMouseGrabber(); + void windowFlags_data(); + void windowFlags(); // Task fixes void task236127_bspTreeIndexFails(); @@ -2086,6 +2088,83 @@ void tst_QGraphicsWidget::popupMouseGrabber() QCOMPARE(scene.mouseGrabberItem(), (QGraphicsItem *)widget3); } +void tst_QGraphicsWidget::windowFlags_data() +{ + QTest::addColumn("inputFlags"); + QTest::addColumn("outputFlags"); + + QTest::newRow("nil") << 0 << 0; + + // Window types + QTest::newRow("Qt::Window") << int(Qt::Window) + << int(Qt::Window | Qt::WindowTitleHint | Qt::WindowSystemMenuHint + | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint); + QTest::newRow("Qt::SubWindow") << int(Qt::SubWindow) + << int(Qt::SubWindow | Qt::WindowTitleHint | Qt::WindowSystemMenuHint + | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint); + QTest::newRow("Qt::Dialog") << int(Qt::Dialog) + << int(Qt::Dialog | Qt::WindowTitleHint | Qt::WindowSystemMenuHint + | Qt::WindowContextHelpButtonHint); + QTest::newRow("Qt::Sheet") << int(Qt::Sheet) + << int(Qt::Sheet | Qt::WindowTitleHint | Qt::WindowSystemMenuHint + | Qt::WindowContextHelpButtonHint); + QTest::newRow("Qt::Tool") << int(Qt::Tool) + << int(Qt::Tool | Qt::WindowTitleHint | Qt::WindowSystemMenuHint); + + // Custom window flags + QTest::newRow("Qt::FramelessWindowHint") << int(Qt::FramelessWindowHint) + << int(Qt::FramelessWindowHint); + QTest::newRow("Qt::CustomizeWindowHint") << int(Qt::CustomizeWindowHint) + << int(Qt::CustomizeWindowHint); +} + +void tst_QGraphicsWidget::windowFlags() +{ + QFETCH(int, inputFlags); + QFETCH(int, outputFlags); + + // Construct with flags set already + QGraphicsWidget widget(0, Qt::WindowFlags(inputFlags)); + QCOMPARE(widget.windowFlags(), Qt::WindowFlags(outputFlags)); + + // Set flags after construction + QGraphicsWidget widget2; + widget2.setWindowFlags(Qt::WindowFlags(inputFlags)); + QCOMPARE(widget2.windowFlags(), Qt::WindowFlags(outputFlags)); + + // Reset flags + widget2.setWindowFlags(0); + QVERIFY(!widget2.windowFlags()); + + // Set flags back again + widget2.setWindowFlags(Qt::WindowFlags(inputFlags)); + QCOMPARE(widget2.windowFlags(), Qt::WindowFlags(outputFlags)); + + // Construct with custom flags set already + QGraphicsWidget widget3(0, Qt::WindowFlags(inputFlags | Qt::FramelessWindowHint)); + QCOMPARE(widget3.windowFlags(), Qt::WindowFlags(inputFlags | Qt::FramelessWindowHint)); + + // Set custom flags after construction + QGraphicsWidget widget4; + widget4.setWindowFlags(Qt::WindowFlags(inputFlags | Qt::FramelessWindowHint)); + QCOMPARE(widget4.windowFlags(), Qt::WindowFlags(inputFlags | Qt::FramelessWindowHint)); + + // Reset flags + widget4.setWindowFlags(0); + QVERIFY(!widget4.windowFlags()); + + // Set custom flags back again + widget4.setWindowFlags(Qt::WindowFlags(inputFlags | Qt::FramelessWindowHint)); + QCOMPARE(widget4.windowFlags(), Qt::WindowFlags(inputFlags | Qt::FramelessWindowHint)); + + QGraphicsWidget *widget5 = new QGraphicsWidget; + widget5->setWindowFlags(Qt::WindowFlags(inputFlags)); + QCOMPARE(widget5->windowFlags(), Qt::WindowFlags(outputFlags)); + QGraphicsWidget window(0, Qt::Window); + widget5->setParentItem(&window); + QCOMPARE(widget5->windowFlags(), Qt::WindowFlags(outputFlags)); +} + class ProxyStyle : public QCommonStyle { public: -- cgit v0.12 From 200cc0ddbcb4cea11e79c0b53e2a43bb9f9e18f7 Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Mon, 20 Apr 2009 15:42:08 +0200 Subject: Fix QGraphicsProxyWidget's window flag handling This change fixes a few bugs and adds autotests for QGraphicsProxyWidget and QGraphicsWidget's window flag handling. The former behavior has been that you must set window flags on QGraphicsProxyWidget explicitly after calling proxy->setWidget(); otherwise both the flags from the embedded widget and the proxy would be partially ignored. Example: QLineEdit *edit = new QLineEdit(0, Qt::Window); // that's the default scene.addWidget(edit, Qt::Window); // proxy still has no window decos proxy->setWindowFlags(Qt::Window); // now it got decorations :-/ QGraphicsWidget's window flags are immune to reparenting, and are always polished with the necessary hints regardless of whether you set the flags during construction time or later. This is a feature QGraphicsWidget can provide because it allows toplevel widgets (without parents) to be normal widgets (i.e., non-windows). So the new behavior of QGraphicsProxyWidget is to respect its own window flags and ignore those of the embedded widget, regardless of what flags the embedded widget has when it's embedded. When QWidget auto-embeds child windows (file dialogs, popups, etc), it passes the correct window flags to the QGraphicsProxyWidget to ensure that the right flags are set. Task-number: 251407 Reviewed-by: Joao --- tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp index 9d82ffd..d856024 100644 --- a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp +++ b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp @@ -3187,7 +3187,7 @@ void tst_QGraphicsProxyWidget::windowFlags() QVERIFY((widget->windowFlags() & widgetWFlags) == widgetWFlags); proxy.setWidget(widget); - + if (resultingProxyFlags == 0) QVERIFY(!proxy.windowFlags()); else -- cgit v0.12 From 90a362519e119ee93dc5cabeb318b4d16da94e82 Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Mon, 20 Apr 2009 16:15:48 +0200 Subject: Fixup docs for QGraphicsProxyWidget::setWidget(). --- src/gui/graphicsview/qgraphicsproxywidget.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp index f99fef9..e7467d0 100644 --- a/src/gui/graphicsview/qgraphicsproxywidget.cpp +++ b/src/gui/graphicsview/qgraphicsproxywidget.cpp @@ -544,6 +544,10 @@ QGraphicsProxyWidget::~QGraphicsProxyWidget() hidden or disabled after embedding is complete. The class documentation has a full overview over the shared state. + The embedded widget's window flags are ignored. QGraphicsProxyWidget's + window flags decide whether the widget, after embedding, should be given + window decorations or not. + After this function returns, QGraphicsProxyWidget will keep its state synchronized with that of \a widget whenever possible. -- cgit v0.12 From 30c0f2ea782239eb5165cc3f12cabc3da5b9eae0 Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Mon, 20 Apr 2009 16:26:10 +0200 Subject: Doc update for QGraphicsProxyWidget::setWidget(). Reviewed-by: Joao Reviewed-by: Kavindra --- src/gui/graphicsview/qgraphicsproxywidget.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp index e7467d0..01b7593 100644 --- a/src/gui/graphicsview/qgraphicsproxywidget.cpp +++ b/src/gui/graphicsview/qgraphicsproxywidget.cpp @@ -544,9 +544,8 @@ QGraphicsProxyWidget::~QGraphicsProxyWidget() hidden or disabled after embedding is complete. The class documentation has a full overview over the shared state. - The embedded widget's window flags are ignored. QGraphicsProxyWidget's - window flags decide whether the widget, after embedding, should be given - window decorations or not. + QGraphicsProxyWidget's window flags determine whether the widget, after + embedding, will be given window decorations or not. After this function returns, QGraphicsProxyWidget will keep its state synchronized with that of \a widget whenever possible. -- cgit v0.12 From d7072b5577e3c07e984885cf05d5f9b217c6f473 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Mon, 20 Apr 2009 17:03:14 +0200 Subject: Fix tabbar issues with Oxygen style Oxygen style was looking a bit broken when using 4.5 features such as close buttons and icons. This was because it re-implements the tabbartablabel primitive we needed to ensure spacing for the buttons. We had to modify the way we draw tabs slightly to make it more backward compatible so that oxygen get the same region as before and we ensure space for it in the CE_TabBarTab case instead. Note that the drawback to this approach is that the focus rect needs to be moved out of the tablabel and into the CE_TabBarTab case so it covers the entire tab which can potentially cause problems if people depend on the label to draw the focus rect. However the new case is also more consistent with how buttons draw their focus. Task-number: 251635 Reviewed-by: nrc --- src/gui/styles/qcommonstyle.cpp | 73 +++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/src/gui/styles/qcommonstyle.cpp b/src/gui/styles/qcommonstyle.cpp index 3cae08a..819965b 100644 --- a/src/gui/styles/qcommonstyle.cpp +++ b/src/gui/styles/qcommonstyle.cpp @@ -1779,7 +1779,46 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, case CE_TabBarTab: if (const QStyleOptionTab *tab = qstyleoption_cast(opt)) { drawControl(CE_TabBarTabShape, tab, p, widget); - drawControl(CE_TabBarTabLabel, tab, p, widget); + + QStyleOptionTabV3 tabV3(*tab); + QRect labelRect = tabV3.rect; + QSize &left= tabV3.leftButtonSize; + QSize &right = tabV3.rightButtonSize; + const int spacing = 6 + 2; + + // left widget + if (!left.isEmpty()) { + if (tabV3.shape == QTabBar::RoundedEast || tabV3.shape == QTabBar::TriangularEast ) + labelRect.setTop(labelRect.top() + spacing + left.height()); + else if (tabV3.shape == QTabBar::RoundedWest|| tabV3.shape == QTabBar::TriangularWest) + labelRect.setBottom(labelRect.bottom() - spacing - left.height()); + else + labelRect.setLeft(labelRect.left() + spacing + left.width()); + } + + // right widget + if (!right.isEmpty()) { + if (tabV3.shape == QTabBar::RoundedEast || tabV3.shape == QTabBar::TriangularEast ) + labelRect.setBottom(labelRect.bottom() - spacing - right.height()); + else if (tabV3.shape == QTabBar::RoundedWest|| tabV3.shape == QTabBar::TriangularWest) + labelRect.setTop(labelRect.top() + spacing + right.height()); + else + labelRect.setRight(labelRect.right() - spacing - right.width()); + } + + tabV3.rect = visualRect(opt->direction, opt->rect, labelRect); + drawControl(CE_TabBarTabLabel, &tabV3, p, widget); + if (tabV3.state & State_HasFocus) { + const int OFFSET = 1 + pixelMetric(PM_DefaultFrameWidth); + int x1, x2; + x1 = tab->rect.left(); + x2 = tab->rect.right() - 1; + QStyleOptionFocusRect fropt; + fropt.QStyleOption::operator=(*tab); + fropt.rect.setRect(x1 + 1 + OFFSET, tab->rect.y() + OFFSET, + x2 - x1 - 2*OFFSET, tab->rect.height() - 2*OFFSET); + drawPrimitive(PE_FrameFocusRect, &fropt, p, widget); + } } break; case CE_TabBarTabShape: @@ -1981,12 +2020,8 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, (tabV2.state & State_Enabled) ? QIcon::Normal : QIcon::Disabled); - int offset = 4; + int offset = 6; int left = opt->rect.left(); - if (tabV2.leftButtonSize.isEmpty()) - offset += 2; - else - left += tabV2.leftButtonSize.width() + (6 + 2) + 2; QRect iconRect = QRect(left + offset, tr.center().y() - tabIcon.height() / 2, tabIconSize.width(), tabIconSize.height()); if (!verticalTabs) @@ -1997,20 +2032,6 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, drawItemText(p, tr, alignment, tab->palette, tab->state & State_Enabled, tab->text, QPalette::WindowText); if (verticalTabs) p->restore(); - - if (tabV2.state & State_HasFocus) { - const int OFFSET = 1 + pixelMetric(PM_DefaultFrameWidth); - - int x1, x2; - x1 = tabV2.rect.left(); - x2 = tabV2.rect.right() - 1; - - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(*tab); - fropt.rect.setRect(x1 + 1 + OFFSET, tabV2.rect.y() + OFFSET, - x2 - x1 - 2*OFFSET, tabV2.rect.height() - 2*OFFSET); - drawPrimitive(PE_FrameFocusRect, &fropt, p, widget); - } } break; #endif // QT_NO_TABBAR @@ -2858,12 +2879,6 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt, tr.setRight(tr.right() - horizontalShift); } - // left widget - if (!tabV2.leftButtonSize.isEmpty()) { - tr.setLeft(tr.left() + 6 + 2 + - (verticalTabs ? tabV2.leftButtonSize.height() : tabV2.leftButtonSize.width())); - } - // icon if (!tabV2.icon.isNull()) { QSize iconSize = tabV2.iconSize; @@ -2885,12 +2900,6 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt, tr.setLeft(tr.left() + tabIconSize.width() + offset + 2); } - // right widget - if (!tabV2.rightButtonSize.isEmpty()) { - tr.setRight(tr.right() - 6 - 2 - - (verticalTabs ? tabV2.rightButtonSize.height() : tabV2.rightButtonSize.width())); - } - if (!verticalTabs) tr = visualRect(opt->direction, opt->rect, tr); r = tr; -- cgit v0.12 From 07703ade86edcd6565c373f63e34306209d1a90a Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 9 Apr 2008 13:04:02 +0200 Subject: don't detach in qHash() Signed-off-by: Thiago Macieira --- src/corelib/tools/qhash.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp index 540f43d..21d98b5 100644 --- a/src/corelib/tools/qhash.cpp +++ b/src/corelib/tools/qhash.cpp @@ -91,7 +91,7 @@ static uint hash(const QChar *p, int n) uint qHash(const QByteArray &key) { - return hash(reinterpret_cast(key.data()), key.size()); + return hash(reinterpret_cast(key.constData()), key.size()); } uint qHash(const QString &key) @@ -107,7 +107,7 @@ uint qHash(const QStringRef &key) uint qHash(const QBitArray &bitArray) { int m = bitArray.d.size() - 1; - uint result = hash(reinterpret_cast(bitArray.d.data()), qMax(0, m)); + uint result = hash(reinterpret_cast(bitArray.d.constData()), qMax(0, m)); // deal with the last 0 to 7 bits manually, because we can't trust that // the padding is initialized to 0 in bitArray.d -- cgit v0.12 From 2964be69e1db017082236ad8756b725fb4f7d4ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Mon, 20 Apr 2009 12:43:26 +0200 Subject: Make sure the cached SVG image node uses the premultiplied format. Reviewed-by: Gunnar --- src/svg/qsvghandler.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp index 433a3ad..cb07c53 100644 --- a/src/svg/qsvghandler.cpp +++ b/src/svg/qsvghandler.cpp @@ -2541,6 +2541,9 @@ static QSvgNode *createImageNode(QSvgNode *parent, return 0; } + if (image.format() == QImage::Format_ARGB32) + image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied); + QSvgNode *img = new QSvgImage(parent, image, QRect(int(nx), -- cgit v0.12 From 01a671ff0bd380e5cff311cc233352c867a041a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Mon, 20 Apr 2009 12:46:53 +0200 Subject: Make sure we use a premultiplied alpha format for 32 bit EGL screens. Reviewed-by: Gunnar --- src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp b/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp index b0ffbf1..65efdbc 100644 --- a/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp +++ b/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp @@ -104,7 +104,7 @@ bool PvrEglScreen::connect(const QString &displaySpec) break; case PVR2D_ARGB8888: d = 32; - setPixelFormat(QImage::Format_ARGB32); + setPixelFormat(QImage::Format_ARGB32_Premultiplied); break; default: pvrQwsDisplayClose(); -- cgit v0.12 From 556216129bf5738c6ad92807ece1dac233b8b96f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Mon, 20 Apr 2009 17:51:47 +0200 Subject: Speed up texture uploads for hardware without n-pot-2 texture support. Implement a manual fast scale, so that we can do a scale, swizzle and mirror in the same loop without any temporary image copies. This potentially increases texture uploads on embedded hw with a factor of 10. Reviewed-by: Samuel --- src/opengl/qgl.cpp | 159 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 106 insertions(+), 53 deletions(-) diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 99df658..b8fa133 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -1677,58 +1677,105 @@ static void qt_gl_clean_cache(qint64 cacheKey) static void convertToGLFormatHelper(QImage &dst, const QImage &img, GLenum texture_format) { - Q_ASSERT(dst.size() == img.size()); Q_ASSERT(dst.depth() == 32); Q_ASSERT(img.depth() == 32); - const int width = img.width(); - const int height = img.height(); - const uint *p = (const uint*) img.scanLine(img.height() - 1); - uint *q = (uint*) dst.scanLine(0); - - if (texture_format == GL_BGRA) { - if (QSysInfo::ByteOrder == QSysInfo::BigEndian) { - // mirror + swizzle - for (int i=0; i < height; ++i) { - const uint *end = p + width; - while (p < end) { - *q = ((*p << 24) & 0xff000000) - | ((*p >> 24) & 0x000000ff) - | ((*p << 8) & 0x00ff0000) - | ((*p >> 8) & 0x0000ff00); - p++; - q++; + if (dst.size() != img.size()) { + int target_width = dst.width(); + int target_height = dst.height(); + qreal sx = target_width / qreal(img.width()); + qreal sy = target_height / qreal(img.height()); + + quint32 *dest = (quint32 *) dst.scanLine(0); // NB! avoid detach here + uchar *srcPixels = (uchar *) img.scanLine(img.height() - 1); + int sbpl = img.bytesPerLine(); + int dbpl = dst.bytesPerLine(); + + int ix = 0x00010000 / sx; + int iy = 0x00010000 / sy; + + quint32 basex = int(0.5 * ix); + quint32 srcy = int(0.5 * iy); + + // scale, swizzle and mirror in one loop + while (target_height--) { + const uint *src = (const quint32 *) (srcPixels - (srcy >> 16) * sbpl); + int srcx = basex; + for (int x=0; x> 16]; + if (texture_format == GL_BGRA) { + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) { + dest[x] = ((src_pixel << 24) & 0xff000000) + | ((src_pixel >> 24) & 0x000000ff) + | ((src_pixel << 8) & 0x00ff0000) + | ((src_pixel >> 8) & 0x0000ff00); + } else { + dest[x] = src_pixel; + } + } else { // GL_RGBA + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) { + dest[x] = (src_pixel << 8) | ((src_pixel >> 24) & 0xff); + } else { + dest[x] = ((src_pixel << 16) & 0xff0000) + | ((src_pixel >> 16) & 0xff) + | (src_pixel & 0xff00ff00); + } } - p -= 2 * width; - } - } else { - const uint bytesPerLine = img.bytesPerLine(); - for (int i=0; i < height; ++i) { - memcpy(q, p, bytesPerLine); - q += width; - p -= width; + srcx += ix; } + dest = (quint32 *)(((uchar *) dest) + dbpl); + srcy += iy; } } else { - if (QSysInfo::ByteOrder == QSysInfo::BigEndian) { - for (int i=0; i < height; ++i) { - const uint *end = p + width; - while (p < end) { - *q = (*p << 8) | ((*p >> 24) & 0xFF); - p++; - q++; + const int width = img.width(); + const int height = img.height(); + const uint *p = (const uint*) img.scanLine(img.height() - 1); + uint *q = (uint*) dst.scanLine(0); + + if (texture_format == GL_BGRA) { + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) { + // mirror + swizzle + for (int i=0; i < height; ++i) { + const uint *end = p + width; + while (p < end) { + *q = ((*p << 24) & 0xff000000) + | ((*p >> 24) & 0x000000ff) + | ((*p << 8) & 0x00ff0000) + | ((*p >> 8) & 0x0000ff00); + p++; + q++; + } + p -= 2 * width; + } + } else { + const uint bytesPerLine = img.bytesPerLine(); + for (int i=0; i < height; ++i) { + memcpy(q, p, bytesPerLine); + q += width; + p -= width; } - p -= 2 * width; } } else { - for (int i=0; i < height; ++i) { - const uint *end = p + width; - while (p < end) { - *q = ((*p << 16) & 0xff0000) | ((*p >> 16) & 0xff) | (*p & 0xff00ff00); - p++; - q++; + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) { + for (int i=0; i < height; ++i) { + const uint *end = p + width; + while (p < end) { + *q = (*p << 8) | ((*p >> 24) & 0xff); + p++; + q++; + } + p -= 2 * width; + } + } else { + for (int i=0; i < height; ++i) { + const uint *end = p + width; + while (p < end) { + *q = ((*p << 16) & 0xff0000) | ((*p >> 16) & 0xff) | (*p & 0xff00ff00); + p++; + q++; + } + p -= 2 * width; } - p -= 2 * width; } } } @@ -1771,19 +1818,18 @@ GLuint QGLContextPrivate::bindTexture(const QImage &image, GLenum target, GLint } // Scale the pixmap if needed. GL textures needs to have the - // dimensions 2^n+2(border) x 2^m+2(border). + // dimensions 2^n+2(border) x 2^m+2(border), unless we're using GL + // 2.0 or use the GL_TEXTURE_RECTANGLE texture target int tx_w = qt_next_power_of_two(image.width()); int tx_h = qt_next_power_of_two(image.height()); + bool scale = false; - // Note: the clean param is only true when a texture is bound - // from the QOpenGLPaintEngine - in that case we have to force - // a premultiplied texture format QImage img = image; if (( !(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_0) && !(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_ES_Version_2_0) ) && (target == GL_TEXTURE_2D && (tx_w != image.width() || tx_h != image.height()))) { - img = image.scaled(tx_w, tx_h); + scale = true; } GLuint tx_id; @@ -1815,17 +1861,24 @@ GLuint QGLContextPrivate::bindTexture(const QImage &image, GLenum target, GLint ptr = reinterpret_cast(glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, GL_WRITE_ONLY_ARB)); } - if (ptr) { - QImage::Format target_format = img.format(); - if (clean || img.format() != QImage::Format_ARGB32) - target_format = QImage::Format_ARGB32_Premultiplied; + QImage::Format target_format = img.format(); + // Note: the clean param is only true when a texture is bound + // from the QOpenGLPaintEngine - in that case we have to force + // a premultiplied texture format + if (clean || img.format() != QImage::Format_ARGB32) + target_format = QImage::Format_ARGB32_Premultiplied; + if (img.format() != target_format) + img = img.convertToFormat(target_format); + if (ptr) { QImage buffer(ptr, img.width(), img.height(), target_format); - convertToGLFormatHelper(buffer, img.convertToFormat(target_format), texture_format); + convertToGLFormatHelper(buffer, img, texture_format); glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB); - glTexImage2D(target, 0, format, img.width(), img.height(), 0, texture_format, GL_UNSIGNED_BYTE, 0); + glTexImage2D(target, 0, format, img.width(), img.height(), 0, texture_format, + GL_UNSIGNED_BYTE, 0); } else { - QImage tx = convertToGLFormat(img, clean, texture_format); + QImage tx(scale ? QSize(tx_w, tx_h) : img.size(), target_format); + convertToGLFormatHelper(tx, img, texture_format); glTexImage2D(target, 0, format, tx.width(), tx.height(), 0, texture_format, GL_UNSIGNED_BYTE, tx.bits()); } -- cgit v0.12 From f8c7de54eaf3e9165e41f212a13dd794ce7063a9 Mon Sep 17 00:00:00 2001 From: Lincoln Ramsay Date: Tue, 21 Apr 2009 16:33:04 +1000 Subject: Missing debug .rc file with a clean shadow build When generating Windows Makefiles, qmake writes out a .rc file for each of debug and release (unless you've limited to just one build type). When doing a clean shadow build, the first .rc file is written into a directory that does not exist but the code was not handling the error case. The fix does 2 things. 1) Attempt to create the destination directory if we can't write the file. 2) Die with an error if we still can't write the file after doing #1. Reviewed-by: Marius Storm-Olsen --- qmake/generators/win32/winmakefile.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index 60a27be..87f55cf 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -432,9 +432,21 @@ void Win32MakefileGenerator::processRcFileVar() writeRcFile = rcFile.readAll() != rcString; rcFile.close(); } - if (writeRcFile && rcFile.open(QFile::WriteOnly)) { - rcFile.write(rcString); - rcFile.close(); + if (writeRcFile) { + bool ok; + ok = rcFile.open(QFile::WriteOnly); + if (!ok) { + // The file can't be opened... try creating the containing + // directory first (needed for clean shadow builds) + QDir().mkpath(QFileInfo(rcFile).path()); + ok = rcFile.open(QFile::WriteOnly); + } + if (!ok) { + ::fprintf(stderr, "Cannot open for writing: %s", rcFile.fileName().toLatin1().constData()); + ::exit(1); + } + rcFile.write(rcString); + rcFile.close(); } if (project->values("QMAKE_WRITE_DEFAULT_RC").isEmpty()) project->values("RC_FILE").insert(0, rcFile.fileName()); -- cgit v0.12 From b2112b17e427274ac0610416b2941b091314f5ad Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Tue, 21 Apr 2009 16:50:01 +1000 Subject: BT: Remove turkish translation files created by previous change. Remove the *_tr_TR.ts files added in change 5e3cae2754bf5f50aa10fef2c8d3bb7d33407b96 and remove their entries from .pro files to prevent them coming back next time someone does "make ts". Reviewed-by: Trust Me --- tools/assistant/translations/qt_help.pro | 1 - tools/assistant/translations/translations.pro | 1 - tools/assistant/translations/translations_adp.pro | 1 - tools/designer/translations/translations.pro | 1 - tools/linguist/linguist/linguist.pro | 1 - translations/assistant_adp_tr_TR.ts | 967 --- translations/assistant_tr_TR.ts | 1059 ---- translations/designer_tr_TR.ts | 6950 --------------------- translations/linguist_tr_TR.ts | 1955 ------ translations/qt_help_tr_TR.ts | 355 -- 10 files changed, 11291 deletions(-) delete mode 100644 translations/assistant_adp_tr_TR.ts delete mode 100644 translations/assistant_tr_TR.ts delete mode 100644 translations/designer_tr_TR.ts delete mode 100644 translations/linguist_tr_TR.ts delete mode 100644 translations/qt_help_tr_TR.ts diff --git a/tools/assistant/translations/qt_help.pro b/tools/assistant/translations/qt_help.pro index 1684ac5..efad6bf 100644 --- a/tools/assistant/translations/qt_help.pro +++ b/tools/assistant/translations/qt_help.pro @@ -43,7 +43,6 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/qt_help_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_pl.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_untranslated.ts \ - $$[QT_INSTALL_TRANSLATIONS]/qt_help_tr_TR.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_TW.ts error("This is a dummy profile to be used for translations ONLY.") diff --git a/tools/assistant/translations/translations.pro b/tools/assistant/translations/translations.pro index 84bde8c..58de554 100644 --- a/tools/assistant/translations/translations.pro +++ b/tools/assistant/translations/translations.pro @@ -44,6 +44,5 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/assistant_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_pl.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_untranslated.ts \ - $$[QT_INSTALL_TRANSLATIONS]/assistant_tr_TR.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_zh_TW.ts diff --git a/tools/assistant/translations/translations_adp.pro b/tools/assistant/translations/translations_adp.pro index f6ab62e..e3edca4 100644 --- a/tools/assistant/translations/translations_adp.pro +++ b/tools/assistant/translations/translations_adp.pro @@ -35,7 +35,6 @@ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_pl.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_untranslated.ts \ - $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_tr_TR.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/assistant_adp_zh_TW.ts error("This is a dummy profile to be used for translations ONLY.") diff --git a/tools/designer/translations/translations.pro b/tools/designer/translations/translations.pro index 7294956..8395259 100644 --- a/tools/designer/translations/translations.pro +++ b/tools/designer/translations/translations.pro @@ -133,7 +133,6 @@ HEADERS += ../../shared/findwidget/abstractfindwidget.h \ TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/designer_de.ts \ $$[QT_INSTALL_TRANSLATIONS]/designer_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/designer_pl.ts \ - $$[QT_INSTALL_TRANSLATIONS]/designer_tr_TR.ts \ $$[QT_INSTALL_TRANSLATIONS]/designer_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/designer_zh_TW.ts \ $$[QT_INSTALL_TRANSLATIONS]/designer_untranslated.ts diff --git a/tools/linguist/linguist/linguist.pro b/tools/linguist/linguist/linguist.pro index 417ef67..968293a 100644 --- a/tools/linguist/linguist/linguist.pro +++ b/tools/linguist/linguist/linguist.pro @@ -100,7 +100,6 @@ RESOURCES += linguist.qrc TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/linguist_ja.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_pl.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_untranslated.ts \ - $$[QT_INSTALL_TRANSLATIONS]/linguist_tr_TR.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_zh_CN.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_zh_TW.ts \ $$[QT_INSTALL_TRANSLATIONS]/linguist_de.ts \ diff --git a/translations/assistant_adp_tr_TR.ts b/translations/assistant_adp_tr_TR.ts deleted file mode 100644 index bb86689..0000000 --- a/translations/assistant_adp_tr_TR.ts +++ /dev/null @@ -1,967 +0,0 @@ - - - - - AssistantServer - - - Qt Assistant - - - - - Failed to bind to port %1 - - - - - FontPanel - - - Font - - - - - &Writing system - - - - - &Family - - - - - &Style - - - - - &Point size - - - - - FontSettingsDialog - - - Font Settings - - - - - Font settings for: - - - - - Browser - - - - - Application - - - - - Use custom settings - - - - - HelpDialog - - - Open Link in Current Tab - - - - - Open Link in New Window - - - - - Open Link in New Tab - - - - - - Prepare... - - - - - - - Qt Assistant - - - - - Failed to load keyword index file -Assistant will not work! - - - - - Cannot open the index file %1 - - - - - - - Warning - - - - - - Documentation file %1 does not exist! -Skipping file. - - - - - - Parse Error - - - - - Documentation file %1 is not compatible! -Skipping file. - - - - - - Done - - - - - Failed to save fulltext search index -Assistant will not work! - - - - - Indexing files... - - - - - Reading dictionary... - - - - - - Full Text Search - - - - - Using a wildcard within phrases is not allowed. - - - - - The closing quotation mark is missing. - - - - - %n document(s) found. - - - - - - - Help - - - - - <b>Help</b><p>Choose the topic you want help on from the contents list, or search the index for keywords.</p> - - - - - Displays help topics organized by category, index or bookmarks. Another tab inherits the full text search. - - - - - Con&tents - - - - - <b>Help topics organized by category.</b><p>Double-click an item to see the topics in that category. To view a topic, just double-click it.</p> - - - - - column 1 - - - - - &Index - - - - - &Look For: - - - - - Enter keyword - - - - - <b>Enter a keyword.</b><p>The list will select an item that matches the entered string best.</p> - - - - - <b>List of available help topics.</b><p>Double-click on an item to open its help page. If more than one is found, you must specify which page you want.</p> - - - - - &Bookmarks - - - - - Displays the list of bookmarks. - - - - - Add new bookmark - - - - - Add the currently displayed page as a new bookmark. - - - - - &New - - - - - Delete bookmark - - - - - Delete the selected bookmark. - - - - - &Delete - - - - - &Search - - - - - Searching f&or: - - - - - Enter searchword(s). - - - - - <b>Enter search word(s).</b><p>Enter here the word(s) you are looking for. The words may contain wildcards (*). For a sequence of words quote them.</p> - - - - - <b>Found documents</b><p>This list contains all found documents from the last search. The documents are ordered, i.e. the first document has the most matches.</p> - - - - - Found &Documents: - - - - - Display the help page. - - - - - Display the help page for the full text search. - - - - - He&lp - - - - - Start searching. - - - - - Pressing this button starts the search. - - - - - Preparing... - - - - - HelpWindow - - - Help - - - - - Unable to launch web browser. - - - - - - OK - - - - - Failed to open link: '%1' - - - - - <div align="center"><h1>The page could not be found</h1><br><h3>'%1'</h3></div> - - - - - Error... - - - - - Copy &Link Location - - - - - Open Link in New Tab - - - - - Open Link in New Window Shift+LMB - - - - - Index - - - Untitled - - - - - MainWindow - - - Sidebar - - - - - &Window - - - - - Minimize - - - - - Ctrl+M - - - - - Initializing Qt Assistant... - - - - - SHIFT+CTRL+= - - - - - Ctrl+T - - - - - Ctrl+I - - - - - Ctrl+B - - - - - Ctrl+S - - - - - Ctrl+] - - - - - Ctrl+[ - - - - - Views - - - - - Displays the main page of a specific documentation set. - - - - - - Qt Assistant - - - - - Failed to open about application contents in file: '%1' - - - - - ... - - - - - - Save Page - - - - - Cannot open file for writing! - - - - - Qt Assistant by Nokia - - - - - Toolbar - - - - - Go - - - - - &Help - - - - - &File - - - - - Boo&kmarks - - - - - &Go - - - - - &View - - - - - &Edit - - - - - &Print... - - - - - Print the currently displayed page. - - - - - Ctrl+P - - - - - E&xit - - - - - Quit Qt Assistant. - - - - - Ctrl+Q - - - - - &Copy - - - - - Copy the selected text to the clipboard. - - - - - Ctrl+C - - - - - &Find in Text... - - - - - Open the Find dialog. Qt Assistant will search the currently displayed page for the text you enter. - - - - - Ctrl+F - - - - - Find &Next - - - - - F3 - - - - - Find &Previous - - - - - Shift+F3 - - - - - &Home - - - - - Go to the home page. Qt Assistant's home page is the Qt Reference Documentation. - - - - - Ctrl+Home - - - - - &Previous - - - - - Go to the previous page. - - - - - Alt+Left - - - - - &Next - - - - - Go to the next page. - - - - - Alt+Right - - - - - About Qt Assistant - - - - - Display further information about Qt Assistant. - - - - - About Qt - - - - - Zoom &in - - - - - Zoom in on the document, i.e. increase the font size. - - - - - Ctrl++ - - - - - Zoom &out - - - - - Zoom out on the document, i.e. decrease the font size. - - - - - Ctrl+- - - - - - New Window - - - - - Open a new window. - - - - - Ctrl+N - - - - - &Close - - - - - Close the current window. - - - - - Ctrl+W - - - - - &Add Bookmark - - - - - Add the currently displayed page as a new bookmark. - - - - - What's This? - - - - - "What's This?" context sensitive help. - - - - - Shift+F1 - - - - - Add Tab - - - - - Ctrl+Alt+N - - - - - Next Tab - - - - - Ctrl+Alt+Right - - - - - Previous Tab - - - - - Ctrl+Alt+Left - - - - - Close Tab - - - - - Ctrl+Alt+Q - - - - - Qt Assistant Manual - - - - - F1 - - - - - Save Page As... - - - - - Ctrl+Alt+S - - - - - Sync with Table of Contents - - - - - Select the page in contents tab. - - - - - Font Settings... - - - - - QObject - - - Qt Assistant by Nokia - - - - - TabbedBrowser - - - ... - - - - - Add page - - - - - Close page - - - - - New Tab - - - - - Close Tab - - - - - Close Other Tabs - - - - - TabbedBrowser - - - - - Untitled - - - - - Previous - - - - - Next - - - - - Case Sensitive - - - - - Whole words - - - - - <img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped - - - - - TopicChooser - - - Choose a topic for <b>%1</b> - - - - - Choose Topic - - - - - Select a topic from the list and click the <b>Display</b>-button to open the online help. - - - - - &Topics - - - - - Displays a list of available help topics for the keyword. - - - - - Open the topic selected in the list. - - - - - &Display - - - - - Close the Dialog. - - - - - &Close - - - - diff --git a/translations/assistant_tr_TR.ts b/translations/assistant_tr_TR.ts deleted file mode 100644 index 0ca29df..0000000 --- a/translations/assistant_tr_TR.ts +++ /dev/null @@ -1,1059 +0,0 @@ - - - - - AboutDialog - - - &Close - - - - - AboutLabel - - - Warning - - - - - Unable to launch external application. - - - - - - OK - - - - - BookmarkDialog - - - Add Bookmark - - - - - Bookmark: - - - - - Add in Folder: - - - - - + - - - - - New Folder - - - - - - - - - Bookmarks - - - - - Delete Folder - - - - - Rename Folder - - - - - BookmarkManager - - - Bookmarks - - - - - Remove - - - - - You are going to delete a Folder, this will also<br>remove it's content. Are you sure to continue? - - - - - - New Folder - - - - - BookmarkWidget - - - Delete Folder - - - - - Rename Folder - - - - - Show Bookmark - - - - - Show Bookmark in New Tab - - - - - Delete Bookmark - - - - - Rename Bookmark - - - - - Filter: - - - - - Add - - - - - Remove - - - - - CentralWidget - - - Add new page - - - - - Close current page - - - - - Print Document - - - - - - unknown - - - - - Add New Page - - - - - Close This Page - - - - - Close Other Pages - - - - - Add Bookmark for this Page... - - - - - Search - - - - - ContentWindow - - - Open Link - - - - - Open Link in New Tab - - - - - FilterNameDialogClass - - - Add Filter Name - - - - - Filter Name: - - - - - FindWidget - - - Previous - - - - - Next - - - - - Case Sensitive - - - - - Whole words - - - - - <img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped - - - - - FontPanel - - - Font - - - - - &Writing system - - - - - &Family - - - - - &Style - - - - - &Point size - - - - - HelpViewer - - - Open Link in New Tab - - - - - <title>Error 404...</title><div align="center"><br><br><h1>The page could not be found</h1><br><h3>'%1'</h3></div> - - - - - Help - - - - - Unable to launch external application. - - - - - - OK - - - - - Copy &Link Location - - - - - Open Link in New Tab Ctrl+LMB - - - - - IndexWindow - - - &Look for: - - - - - Open Link - - - - - Open Link in New Tab - - - - - InstallDialog - - - - Install Documentation - - - - - Downloading documentation info... - - - - - Download canceled. - - - - - - - Done. - - - - - The file %1 already exists. Do you want to overwrite it? - - - - - Unable to save the file %1: %2. - - - - - Downloading %1... - - - - - - - Download failed: %1. - - - - - Documentation info file is corrupt! - - - - - Download failed: Downloaded file is corrupted. - - - - - Installing documentation %1... - - - - - Error while installing documentation: -%1 - - - - - Available Documentation: - - - - - Install - - - - - Cancel - - - - - Close - - - - - Installation Path: - - - - - ... - - - - - MainWindow - - - - Index - - - - - - Contents - - - - - - Bookmarks - - - - - - Search - - - - - - - Qt Assistant - - - - - - Unfiltered - - - - - Looking for Qt Documentation... - - - - - &File - - - - - Page Set&up... - - - - - Print Preview... - - - - - &Print... - - - - - New &Tab - - - - - &Close Tab - - - - - &Quit - - - - - CTRL+Q - - - - - &Edit - - - - - &Copy selected Text - - - - - &Find in Text... - - - - - Find &Next - - - - - Find &Previous - - - - - Preferences... - - - - - &View - - - - - Zoom &in - - - - - Zoom &out - - - - - Normal &Size - - - - - Ctrl+0 - - - - - ALT+C - - - - - ALT+I - - - - - ALT+O - - - - - ALT+S - - - - - &Go - - - - - &Home - - - - - Ctrl+Home - - - - - &Back - - - - - &Forward - - - - - Sync with Table of Contents - - - - - Next Page - - - - - Ctrl+Alt+Right - - - - - Previous Page - - - - - Ctrl+Alt+Left - - - - - &Bookmarks - - - - - Add Bookmark... - - - - - CTRL+D - - - - - &Help - - - - - About... - - - - - Navigation Toolbar - - - - - &Window - - - - - Zoom - - - - - Minimize - - - - - Ctrl+M - - - - - Toolbars - - - - - Filter Toolbar - - - - - Filtered by: - - - - - Address Toolbar - - - - - Address: - - - - - Could not find the associated content item. - - - - - About %1 - - - - - Updating search index - - - - - PreferencesDialog - - - - - Add Documentation - - - - - Qt Compressed Help Files (*.qch) - - - - - The specified file is not a valid Qt Help File! - - - - - The namespace %1 is already registered! - - - - - Remove Documentation - - - - - Some documents currently opened in Assistant reference the documentation you are attempting to remove. Removing the documentation will close those documents. - - - - - Cancel - - - - - OK - - - - - Use custom settings - - - - - PreferencesDialogClass - - - Preferences - - - - - Fonts - - - - - Font settings: - - - - - Browser - - - - - Application - - - - - Filters - - - - - Filter: - - - - - Attributes: - - - - - 1 - - - - - Add - - - - - Remove - - - - - Documentation - - - - - Registered Documentation: - - - - - Add... - - - - - Options - - - - - Homepage - - - - - Current Page - - - - - Restore to default - - - - - QObject - - - - Bookmark - - - - - The specified collection file does not exist! - - - - - Missing collection file! - - - - - Invalid URL! - - - - - Missing URL! - - - - - - - Unknown widget: %1 - - - - - - - Missing widget! - - - - - - The specified Qt help file does not exist! - - - - - - Missing help file! - - - - - Missing filter argument! - - - - - Unknown option: %1 - - - - - - Qt Assistant - - - - - Could not register documentation file -%1 - -Reason: -%2 - - - - - Documentation successfully registered. - - - - - Documentation successfully unregistered. - - - - - Could not unregister documentation file -%1 - -Reason: -%2 - - - - - Cannot load sqlite database driver! - - - - - The specified collection file could not be read! - - - - - RemoteControl - - - Debugging Remote Control - - - - - Received Command: %1 %2 - - - - - SearchWidget - - - &Copy - - - - - Copy &Link Location - - - - - - Open Link in New Tab - - - - - Select All - - - - - Open Link - - - - - TopicChooser - - - Choose a topic for <b>%1</b>: - - - - - Choose Topic - - - - - &Topics - - - - - &Display - - - - - &Close - - - - diff --git a/translations/designer_tr_TR.ts b/translations/designer_tr_TR.ts deleted file mode 100644 index 73ea53e..0000000 --- a/translations/designer_tr_TR.ts +++ /dev/null @@ -1,6950 +0,0 @@ - - - - - - - - The moose in the noose -ate the goose who was loose. - - - - - <object> - - - - - <signal> - - - - - <slot> - - - - - AbstractFindWidget - - - &Previous - - - - - &Next - - - - - &Case sensitive - - - - - Whole &words - - - - - <img src=":/trolltech/shared/images/wrap.png">&nbsp;Search wrapped - - - - - AddLinkDialog - - - Insert Link - - - - - Title: - - - - - URL: - - - - - AppFontDialog - - - Additional Fonts - - - - - AppFontManager - - - '%1' is not a file. - - - - - The font file '%1' does not have read permissions. - - - - - The font file '%1' is already loaded. - - - - - The font file '%1' could not be loaded. - - - - - '%1' is not a valid font id. - - - - - There is no loaded font matching the id '%1'. - - - - - The font '%1' (%2) could not be unloaded. - - - - - AppFontWidget - - - Fonts - - - - - Add font files - - - - - Remove current font file - - - - - Remove all font files - - - - - Add Font Files - - - - - Font files (*.ttf) - - - - - Error Adding Fonts - - - - - Error Removing Fonts - - - - - Remove Fonts - - - - - Would you like to remove all fonts? - - - - - AppearanceOptionsWidget - - - Form - - - - - User Interface Mode - - - - - AssistantClient - - - Unable to send request: Assistant is not responding. - - - - - The binary '%1' does not exist. - - - - - Unable to launch assistant (%1). - - - - - BrushManagerProxy - - - The element '%1' is missing the required attribute '%2'. - - - - - Empty brush name encountered. - - - - - An unexpected element '%1' was encountered. - - - - - An error occurred when reading the brush definition file '%1' at line line %2, column %3: %4 - - - - - An error occurred when reading the resource file '%1' at line %2, column %3: %4 - - - - - BrushPropertyManager - - - No brush - - - - - Solid - - - - - Dense 1 - - - - - Dense 2 - - - - - Dense 3 - - - - - Dense 4 - - - - - Dense 5 - - - - - Dense 6 - - - - - Dense 7 - - - - - Horizontal - - - - - Vertical - - - - - Cross - - - - - Backward diagonal - - - - - Forward diagonal - - - - - Crossing diagonal - - - - - Style - - - - - Color - - - - - [%1, %2] - - - - - Command - - - - Change signal - - - - - - Change slot - - - - - Change signal-slot connection - - - - - Change sender - - - - - Change receiver - - - - - Create button group - - - - - Break button group - - - - - Break button group '%1' - - - - - Add buttons to group - - - - - - Add '%1' to '%2' - Command description for adding buttons to a QButtonGroup - - - - - Remove buttons from group - - - - - Remove '%1' from '%2' - Command description for removing buttons from a QButtonGroup - - - - - Add connection - - - - - Adjust connection - - - - - Delete connections - - - - - Change source - - - - - Change target - - - - - Morph %1/'%2' into %3 - MorphWidgetCommand description - - - - - Insert '%1' - - - - - Change Z-order of '%1' - - - - - Raise '%1' - - - - - Lower '%1' - - - - - Delete '%1' - - - - - Reparent '%1' - - - - - Promote to custom widget - - - - - Demote from custom widget - - - - - Lay out using grid - - - - - Lay out vertically - - - - - Lay out horizontally - - - - - Break layout - - - - - Simplify Grid Layout - - - - - - - Move Page - - - - - - - - Delete Page - - - - - - Page - - - - - - - page - - - - - - - - Insert Page - - - - - tab - - - - - Change Tab order - - - - - Create Menu Bar - - - - - Delete Menu Bar - - - - - Create Status Bar - - - - - Delete Status Bar - - - - - Add Tool Bar - - - - - Add Dock Window - - - - - Adjust Size of '%1' - - - - - Change Form Layout Item Geometry - - - - - Change Layout Item Geometry - - - - - Delete Subwindow - - - - - Insert Subwindow - - - - - subwindow - - - - - Subwindow - - - - - Change Table Contents - - - - - Change Tree Contents - - - - - - Add action - - - - - - Remove action - - - - - Add menu - - - - - Remove menu - - - - - Create submenu - - - - - Delete Tool Bar - - - - - Change layout of '%1' from %2 to %3 - - - - - Set action text - - - - - Insert action - - - - - - Move action - - - - - Change Title - - - - - Insert Menu - - - - - Changed '%1' of '%2' - - - - - Changed '%1' of %n objects - - - - - - - Reset '%1' of '%2' - - - - - Reset '%1' of %n objects - - - - - - - Add dynamic property '%1' to '%2' - - - - - Add dynamic property '%1' to %n objects - - - - - - - Remove dynamic property '%1' from '%2' - - - - - Remove dynamic property '%1' from %n objects - - - - - - - Change script - - - - - Change signals/slots - - - - - ConnectDialog - - - Configure Connection - - - - - GroupBox - - - - - Edit... - - - - - Show signals and slots inherited from QWidget - - - - - DPI_Chooser - - - Standard (96 x 96) - Embedded device standard screen resolution - - - - - Greenphone (179 x 185) - Embedded device screen resolution - - - - - High (192 x 192) - Embedded device high definition screen resolution - - - - - Designer - - - Qt Designer - - - - - This file contains top level spacers.<br>They have <b>NOT</b> been saved into the form. - - - - - Perhaps you forgot to create a layout? - - - - - Invalid ui file: The root element <ui> is missing. - - - - - An error has occurred while reading the ui file at line %1, column %2: %3 - - - - - This file cannot be read because it was created using %1. - - - - - This file was created using Designer from Qt-%1 and cannot be read. - - - - - The converted file could not be read. - - - - - This file was created using Designer from Qt-%1 and will be converted to a new form by Qt Designer. - - - - - The old form has not been touched, but you will have to save the form under a new name. - - - - - This file was created using Designer from Qt-%1 and could not be read: -%2 - - - - - Please run it through <b>uic3&nbsp;-convert</b> to convert it to Qt-4's ui format. - - - - - This file cannot be read because the extra info extension failed to load. - - - - - Custom Widgets - - - - - Promoted Widgets - - - - - Unable to launch %1. - - - - - %1 timed out. - - - - - DesignerMetaEnum - - - %1 is not a valid enumeration value of '%2'. - - - - - '%1' could not be converted to an enumeration value of type '%2'. - - - - - DesignerMetaFlags - - - '%1' could not be converted to a flag value of type '%2'. - - - - - DeviceProfile - - - '%1' is not a number. - Reading a number for an embedded device profile - - - - - An invalid tag <%1> was encountered. - - - - - DeviceProfileDialog - - - &Family - - - - - &Point Size - - - - - Style - - - - - Device DPI - - - - - Name - - - - - DeviceSkin - - - The image file '%1' could not be loaded. - - - - - The skin directory '%1' does not contain a configuration file. - - - - - The skin configuration file '%1' could not be opened. - - - - - The skin configuration file '%1' could not be read: %2 - - - - - Syntax error: %1 - - - - - The skin "up" image file '%1' does not exist. - - - - - The skin "down" image file '%1' does not exist. - - - - - The skin "closed" image file '%1' does not exist. - - - - - The skin cursor image file '%1' does not exist. - - - - - Syntax error in area definition: %1 - - - - - Mismatch in number of areas, expected %1, got %2. - - - - - EmbeddedOptionsControl - - - <html><table><tr><td><b>Font</b></td><td>%1, %2</td></tr><tr><td><b>Style</b></td><td>%3</td></tr><tr><td><b>Resolution</b></td><td>%4 x %5</td></tr></table></html> - Format embedded device profile description - - - - - EmbeddedOptionsPage - - - Embedded Design - Tab in preferences dialog - - - - - Device Profiles - EmbeddedOptionsControl group box" - - - - - FontPanel - - - Font - - - - - &Writing system - - - - - &Family - - - - - &Style - - - - - &Point size - - - - - FontPropertyManager - - - PreferDefault - - - - - NoAntialias - - - - - PreferAntialias - - - - - Antialiasing - - - - - FormBuilder - - - Invalid stretch value for '%1': '%2' - Parsing layout stretch values - - - - - Invalid minimum size for '%1': '%2' - Parsing grid layout minimum size values - - - - - FormEditorOptionsPage - - - %1 % - - - - - Preview Zoom - - - - - Default Zoom - - - - - Forms - Tab in preferences dialog - - - - - Default Grid - - - - - FormLayoutRowDialog - - - Add Form Layout Row - - - - - &Label text: - - - - - Field &type: - - - - - &Field name: - - - - - &Buddy: - - - - - &Row: - - - - - Label &name: - - - - - FormWindow - - - Unexpected element <%1> - - - - - Error while pasting clipboard contents at line %1, column %2: %3 - - - - - FormWindowSettings - - - Form Settings - - - - - Layout &Default - - - - - &Spacing: - - - - - &Margin: - - - - - &Layout Function - - - - - Ma&rgin: - - - - - Spa&cing: - - - - - &Pixmap Function - - - - - &Include Hints - - - - - Grid - - - - - Embedded Design - - - - - &Author - - - - - IconSelector - - - All Pixmaps ( - - - - - ItemPropertyBrowser - - - XX Icon Selected off - Sample string to determinate the width for the first column of the list item property browser - - - - - LanguageResourceDialog - - - Choose Resource - - - - - MainWindowBase - - - Main - Not currently used (main tool bar) - - - - - File - - - - - Edit - - - - - Tools - - - - - Form - - - - - Qt Designer - - - - - NewForm - - - Show this Dialog on Startup - - - - - C&reate - - - - - Recent - - - - - New Form - - - - - &Close - - - - - &Open... - - - - - &Recent Forms - - - - - Read error - - - - - A temporary form file could not be created in %1. - - - - - The temporary form file %1 could not be written. - - - - - NewFormWidget - - - Unable to open the form template file '%1': %2 - - - - - ObjectInspectorModel - - - Object - - - - - Class - - - - - separator - - - - - <noname> - - - - - ObjectNameDialog - - - Change Object Name - - - - - Object Name - - - - - PluginDialog - - - Plugin Information - - - - - 1 - - - - - PreferencesDialog - - - Preferences - - - - - PreviewConfigurationWidget - - - Default - - - - - None - - - - - Browse... - - - - - Form - - - - - Print/Preview Configuration - - - - - Style - - - - - Style sheet - - - - - ... - - - - - Device skin - - - - - PromotionModel - - - Not used - Usage of promoted widgets - - - - - Q3WizardContainer - - - - Page - - - - - QAbstractFormBuilder - - - Unexpected element <%1> - - - - - An error has occurred while reading the ui file at line %1, column %2: %3 - - - - - Invalid ui file: The root element <ui> is missing. - - - - - The creation of a widget of the class '%1' failed. - - - - - Attempt to add child that is not of class QWizardPage to QWizard. - - - - - Attempt to add a layout to a widget '%1' (%2) which already has a layout of non-box type %3. -This indicates an inconsistency in the ui-file. - - - - - Empty widget item in %1 '%2'. - - - - - Flags property are not supported yet. - - - - - While applying tab stops: The widget '%1' could not be found. - - - - - Invalid QButtonGroup reference '%1' referenced by '%2'. - - - - - This version of the uitools library is linked without script support. - - - - - QAxWidgetPlugin - - - ActiveX control - - - - - ActiveX control widget - - - - - QAxWidgetTaskMenu - - - Set Control - - - - - Reset Control - - - - - Licensed Control - - - - - The control requires a design-time license - - - - - QCoreApplication - - - %1 is not a promoted class. - - - - - The base class %1 is invalid. - - - - - The class %1 already exists. - - - - - Promoted Widgets - - - - - The class %1 cannot be removed - - - - - The class %1 cannot be removed because it is still referenced. - - - - - The class %1 cannot be renamed - - - - - The class %1 cannot be renamed to an empty name. - - - - - There is already a class named %1. - - - - - Cannot set an empty include file. - - - - - Exception at line %1: %2 - - - - - Unknown error - - - - - An error occurred while running the script for %1: %2 -Script: %3 - - - - - QDesigner - - - %1 - warning - - - - - Qt Designer - - - - - This application cannot be used for the Console edition of Qt - - - - - QDesignerActions - - - Saved %1. - - - - - %1 already exists. -Do you want to replace it? - - - - - Edit Widgets - - - - - &New... - - - - - &Open... - - - - - &Save - - - - - Save &As... - - - - - Save A&ll - - - - - Save As &Template... - - - - - - &Close - - - - - Save &Image... - - - - - &Print... - - - - - &Quit - - - - - View &Code... - - - - - &Minimize - - - - - Bring All to Front - - - - - Preferences... - - - - - Additional Fonts... - - - - - ALT+CTRL+S - - - - - CTRL+SHIFT+S - - - - - CTRL+Q - - - - - CTRL+R - - - - - CTRL+M - - - - - Qt Designer &Help - - - - - Current Widget Help - - - - - What's New in Qt Designer? - - - - - About Plugins - - - - - - About Qt Designer - - - - - About Qt - - - - - Clear &Menu - - - - - &Recent Forms - - - - - - Open Form - - - - - - - Designer UI files (*.%1);;All Files (*) - - - - - - Save Form As - - - - - Designer - - - - - Feature not implemented yet! - - - - - Code generation failed - - - - - Read error - - - - - %1 -Do you want to update the file location or generate a new form? - - - - - &Update - - - - - &New Form - - - - - - Save Form? - - - - - Could not open file - - - - - The file %1 could not be opened. -Reason: %2 -Would you like to retry or select a different file? - - - - - Select New File - - - - - Could not write file - - - - - It was not possible to write the entire file %1 to disk. -Reason:%2 -Would you like to retry? - - - - - - Assistant - - - - - &Close Preview - - - - - - The backup file %1 could not be written. - - - - - The backup directory %1 could not be created. - - - - - The temporary backup directory %1 could not be created. - - - - - Preview failed - - - - - Image files (*.%1) - - - - - - Save Image - - - - - Saved image %1. - - - - - The file %1 could not be written. - - - - - Please close all forms to enable the loading of additional fonts. - - - - - Printed %1. - - - - - QDesignerAppearanceOptionsPage - - - Appearance - Tab in preferences dialog - - - - - QDesignerAppearanceOptionsWidget - - - Docked Window - - - - - Multiple Top-Level Windows - - - - - Toolwindow Font - - - - - QDesignerAxWidget - - - Reset control - - - - - Set control - - - - - Control loaded - - - - - A COM exception occurred when executing a meta call of type %1, index %2 of "%3". - - - - - QDesignerFormBuilder - - - Script errors occurred: - - - - - The preview failed to build. - - - - - Designer - - - - - QDesignerFormWindow - - - %1 - %2[*] - - - - - Save Form? - - - - - Do you want to save the changes to this document before closing? - - - - - If you don't save, your changes will be lost. - - - - - QDesignerMenu - - - Type Here - - - - - Add Separator - - - - - Insert separator - - - - - Remove separator - - - - - Remove action '%1' - - - - - - Add separator - - - - - Insert action - - - - - QDesignerMenuBar - - - Type Here - - - - - Remove Menu '%1' - - - - - Remove Menu Bar - - - - - Menu - - - - - QDesignerPluginManager - - - An XML error was encountered when parsing the XML of the custom widget %1: %2 - - - - - The XML of the custom widget %1 does not contain any of the elements <widget> or <ui>. - - - - - The class attribute for the class %1 is missing. - - - - - The class attribute for the class %1 does not match the class name %2. - - - - - QDesignerPropertySheet - - - Dynamic Properties - - - - - QDesignerResource - - - The layout type '%1' is not supported, defaulting to grid. - - - - - The container extension of the widget '%1' (%2) returned a widget not managed by Designer '%3' (%4) when queried for page #%5. -Container pages should only be added by specifying them in XML returned by the domXml() method of the custom widget. - - - - - Unexpected element <%1> - Parsing clipboard contents - - - - - Error while pasting clipboard contents at line %1, column %2: %3 - Parsing clipboard contents - - - - - Error while pasting clipboard contents: The root element <ui> is missing. - Parsing clipboard contents - - - - - QDesignerSharedSettings - - - The template path %1 could not be created. - - - - - An error has been encountered while parsing device profile XML: %1 - - - - - QDesignerToolWindow - - - Property Editor - - - - - Action Editor - - - - - Object Inspector - - - - - Resource Browser - - - - - Signal/Slot Editor - - - - - Widget Box - - - - - QDesignerWidgetBox - - - An error has been encountered at line %1 of %2: %3 - - - - - Unexpected element <%1> encountered when parsing for <widget> or <ui> - - - - - Unexpected end of file encountered when parsing widgets. - - - - - A widget element could not be found. - - - - - QDesignerWorkbench - - - &File - - - - - Edit - - - - - F&orm - - - - - Preview in - - - - - &View - - - - - &Settings - - - - - &Window - - - - - &Help - - - - - Toolbars - - - - - Save Forms? - - - - - There are %n forms with unsaved changes. Do you want to review these changes before quitting? - - - - - - - If you do not review your documents, all your changes will be lost. - - - - - Discard Changes - - - - - Review Changes - - - - - Backup Information - - - - - The last session of Designer was not terminated correctly. Backup files were left behind. Do you want to load them? - - - - - The file <b>%1</b> could not be opened. - - - - - The file <b>%1</b> is not a valid Designer ui file. - - - - - QFormBuilder - - - An empty class name was passed on to %1 (object name: '%2'). - Empty class name passed to widget factory method - - - - - QFormBuilder was unable to create a custom widget of the class '%1'; defaulting to base class '%2'. - - - - - QFormBuilder was unable to create a widget of the class '%1'. - - - - - The layout type `%1' is not supported. - - - - - The set-type property %1 could not be read. - - - - - The enumeration-type property %1 could not be read. - - - - - Reading properties of the type %1 is not supported yet. - - - - - The property %1 could not be written. The type %2 is not supported yet. - - - - - The enumeration-value '%1' is invalid. The default value '%2' will be used instead. - - - - - The flag-value '%1' is invalid. Zero will be used instead. - - - - - QStackedWidgetEventFilter - - - Previous Page - - - - - Next Page - - - - - Delete - - - - - Before Current Page - - - - - After Current Page - - - - - Change Page Order... - - - - - Change Page Order - - - - - Page %1 of %2 - - - - - Insert Page - - - - - QStackedWidgetPreviewEventFilter - - - Go to previous page of %1 '%2' (%3/%4). - - - - - Go to next page of %1 '%2' (%3/%4). - - - - - QTabWidgetEventFilter - - - Delete - - - - - Before Current Page - - - - - After Current Page - - - - - Page %1 of %2 - - - - - Insert Page - - - - - QToolBoxHelper - - - Delete Page - - - - - Before Current Page - - - - - After Current Page - - - - - Change Page Order... - - - - - Change Page Order - - - - - Page %1 of %2 - - - - - Insert Page - - - - - QtBoolEdit - - - - - True - - - - - - False - - - - - QtBoolPropertyManager - - - True - - - - - False - - - - - QtCharEdit - - - Clear Char - - - - - QtColorEditWidget - - - ... - - - - - QtColorPropertyManager - - - Red - - - - - Green - - - - - Blue - - - - - Alpha - - - - - QtCursorDatabase - - - Arrow - - - - - Up Arrow - - - - - Cross - - - - - Wait - - - - - IBeam - - - - - Size Vertical - - - - - Size Horizontal - - - - - Size Backslash - - - - - Size Slash - - - - - Size All - - - - - Blank - - - - - Split Vertical - - - - - Split Horizontal - - - - - Pointing Hand - - - - - Forbidden - - - - - Open Hand - - - - - Closed Hand - - - - - What's This - - - - - Busy - - - - - QtFontEditWidget - - - ... - - - - - Select Font - - - - - QtFontPropertyManager - - - Family - - - - - Point Size - - - - - Bold - - - - - Italic - - - - - Underline - - - - - Strikeout - - - - - Kerning - - - - - QtGradientDialog - - - Edit Gradient - - - - - QtGradientEditor - - - Start X - - - - - Start Y - - - - - Final X - - - - - Final Y - - - - - - Central X - - - - - - Central Y - - - - - Focal X - - - - - Focal Y - - - - - Radius - - - - - Angle - - - - - Form - - - - - Gradient Editor - - - - - This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient's type such as start and final point, radius, etc. by drag & drop. - - - - - 1 - - - - - 2 - - - - - 3 - - - - - 4 - - - - - 5 - - - - - Gradient Stops Editor - - - - - This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag & drop the handle to reposition it. Use right mouse button to popup context menu with extra actions. - - - - - Zoom - - - - - Reset Zoom - - - - - Position - - - - - Hue - - - - - H - - - - - Saturation - - - - - S - - - - - Sat - - - - - Value - - - - - V - - - - - Val - - - - - Alpha - - - - - A - - - - - Type - - - - - Spread - - - - - Color - - - - - Current stop's color - - - - - Show HSV specification - - - - - HSV - - - - - Show RGB specification - - - - - RGB - - - - - Current stop's position - - - - - % - - - - - Zoom In - - - - - Zoom Out - - - - - Toggle details extension - - - - - > - - - - - Linear Type - - - - - ... - - - - - Radial Type - - - - - Conical Type - - - - - Pad Spread - - - - - Repeat Spread - - - - - Reflect Spread - - - - - QtGradientStopsWidget - - - New Stop - - - - - Delete - - - - - Flip All - - - - - Select All - - - - - Zoom In - - - - - Zoom Out - - - - - Reset Zoom - - - - - QtGradientView - - - Grad - - - - - Remove Gradient - - - - - Are you sure you want to remove the selected gradient? - - - - - - New... - - - - - - Edit... - - - - - - Rename - - - - - - Remove - - - - - Gradient View - - - - - QtGradientViewDialog - - - - Select Gradient - - - - - QtKeySequenceEdit - - - Clear Shortcut - - - - - QtLocalePropertyManager - - - %1, %2 - - - - - Language - - - - - Country - - - - - QtPointFPropertyManager - - - (%1, %2) - - - - - X - - - - - Y - - - - - QtPointPropertyManager - - - (%1, %2) - - - - - X - - - - - Y - - - - - QtPropertyBrowserUtils - - - [%1, %2, %3] (%4) - - - - - [%1, %2] - - - - - QtRectFPropertyManager - - - [(%1, %2), %3 x %4] - - - - - X - - - - - Y - - - - - Width - - - - - Height - - - - - QtRectPropertyManager - - - [(%1, %2), %3 x %4] - - - - - X - - - - - Y - - - - - Width - - - - - Height - - - - - QtResourceEditorDialog - - - %1 already exists. -Do you want to replace it? - - - - - The file does not appear to be a resource file; element '%1' was found where '%2' was expected. - - - - - %1 [read-only] - - - - - - %1 [missing] - - - - - <no prefix> - - - - - - New Resource File - - - - - - Resource files (*.qrc) - - - - - Import Resource File - - - - - newPrefix - - - - - <p><b>Warning:</b> The file</p><p>%1</p><p>is outside of the current resource file's parent directory.</p> - - - - - <p>To resolve the issue, press:</p><table><tr><th align="left">Copy</th><td>to copy the file to the resource file's parent directory.</td></tr><tr><th align="left">Copy As...</th><td>to copy the file into a subdirectory of the resource file's parent directory.</td></tr><tr><th align="left">Keep</th><td>to use its current location.</td></tr></table> - - - - - Add Files - - - - - Incorrect Path - - - - - - - - Copy - - - - - Copy As... - - - - - Keep - - - - - Skip - - - - - Clone Prefix - - - - - Enter the suffix which you want to add to the names of the cloned files. -This could for example be a language extension like "_de". - - - - - - Copy As - - - - - <p>The selected file:</p><p>%1</p><p>is outside of the current resource file's directory:</p><p>%2</p><p>Please select another path within this directory.<p> - - - - - Could not overwrite %1. - - - - - Could not copy -%1 -to -%2 - - - - - A parse error occurred at line %1, column %2 of %3: -%4 - - - - - Save Resource File - - - - - Could not write %1: %2 - - - - - Edit Resources - - - - - New... - - - - - Open... - - - - - Open Resource File - - - - - - Remove - - - - - - Move Up - - - - - - Move Down - - - - - - Add Prefix - - - - - Add Files... - - - - - Change Prefix - - - - - Change Language - - - - - Change Alias - - - - - Clone Prefix... - - - - - Prefix / Path - - - - - Language / Alias - - - - - <html><p><b>Warning:</b> There have been problems while reloading the resources:</p><pre>%1</pre></html> - - - - - Resource Warning - - - - - Dialog - - - - - New File - - - - - N - - - - - Remove File - - - - - R - - - - - I - - - - - New Resource - - - - - A - - - - - Remove Resource or File - - - - - QtResourceView - - - Size: %1 x %2 -%3 - - - - - Edit Resources... - - - - - Reload - - - - - Copy Path - - - - - QtResourceViewDialog - - - Select Resource - - - - - QtSizeFPropertyManager - - - %1 x %2 - - - - - Width - - - - - Height - - - - - QtSizePolicyPropertyManager - - - - <Invalid> - - - - - [%1, %2, %3, %4] - - - - - Horizontal Policy - - - - - Vertical Policy - - - - - Horizontal Stretch - - - - - Vertical Stretch - - - - - QtSizePropertyManager - - - %1 x %2 - - - - - Width - - - - - Height - - - - - QtToolBarDialog - - - Custom Toolbar - - - - - < S E P A R A T O R > - - - - - Customize Toolbars - - - - - 1 - - - - - Actions - - - - - Toolbars - - - - - Add new toolbar - - - - - New - - - - - Remove selected toolbar - - - - - Remove - - - - - Rename toolbar - - - - - Rename - - - - - Move action up - - - - - Up - - - - - Remove action from toolbar - - - - - <- - - - - - Add action to toolbar - - - - - -> - - - - - Move action down - - - - - Down - - - - - Current Toolbar Actions - - - - - QtTreePropertyBrowser - - - Property - - - - - Value - - - - - SaveFormAsTemplate - - - Add path... - - - - - Template Exists - - - - - A template with the name %1 already exists. -Do you want overwrite the template? - - - - - Overwrite Template - - - - - Open Error - - - - - There was an error opening template %1 for writing. Reason: %2 - - - - - Write Error - - - - - There was an error writing the template %1 to disk. Reason: %2 - - - - - Pick a directory to save templates in - - - - - Save Form As Template - - - - - &Name: - - - - - &Category: - - - - - ScriptErrorDialog - - - An error occurred while running the scripts for "%1": - - - - - - SelectSignalDialog - - - Go to slot - - - - - Select signal - - - - - signal - - - - - class - - - - - SignalSlotConnection - - - SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4) - - - - - SignalSlotDialogClass - - - Signals and slots - - - - - Slots - - - - - Add - - - - - ... - - - - - Delete - - - - - Signals - - - - - Spacer - - - Horizontal Spacer '%1', %2 x %3 - - - - - Vertical Spacer '%1', %2 x %3 - - - - - TemplateOptionsPage - - - Template Paths - Tab in preferences dialog - - - - - ToolBarManager - - - Configure Toolbars... - - - - - Window - - - - - Help - - - - - Style - - - - - Dock views - - - - - Toolbars - - - - - VersionDialog - - - <h3>%1</h3><br/><br/>Version %2 - - - - - Qt Designer - - - - - <br/>Qt Designer is a graphical user interface designer for Qt applications.<br/> - - - - - %1<br/>%2<br/>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).<br/><br/>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.<br/> - - - - - WidgetDataBase - - - The file contains a custom widget '%1' whose base class (%2) differs from the current entry in the widget database (%3). The widget database is left unchanged. - - - - - qdesigner_internal::ActionEditor - - - New... - - - - - Edit... - - - - - Go to slot... - - - - - Copy - - - - - Cut - - - - - Paste - - - - - Select all - - - - - Delete - - - - - Actions - - - - - Configure Action Editor - - - - - Icon View - - - - - Detailed View - - - - - New action - - - - - Edit action - - - - - Remove action '%1' - - - - - Remove actions - - - - - Used In - - - - - qdesigner_internal::ActionModel - - - Name - - - - - Used - - - - - Text - - - - - Shortcut - - - - - Checkable - - - - - ToolTip - - - - - qdesigner_internal::BuddyEditor - - - Add buddy - - - - - Remove buddies - - - - - Remove %n buddies - - - - - - - Add %n buddies - - - - - - - Set automatically - - - - - qdesigner_internal::BuddyEditorPlugin - - - Edit Buddies - - - - - qdesigner_internal::BuddyEditorTool - - - Edit Buddies - - - - - qdesigner_internal::ButtonGroupMenu - - - Select members - - - - - Break - - - - - qdesigner_internal::ButtonTaskMenu - - - Assign to button group - - - - - Button group - - - - - New button group - - - - - Change text... - - - - - None - - - - - Button group '%1' - - - - - qdesigner_internal::CodeDialog - - - Save... - - - - - Copy All - - - - - &Find in Text... - - - - - A temporary form file could not be created in %1. - - - - - The temporary form file %1 could not be written. - - - - - %1 - [Code] - - - - - Save Code - - - - - Header Files (*.%1) - - - - - The file %1 could not be opened: %2 - - - - - The file %1 could not be written: %2 - - - - - %1 - Error - - - - - qdesigner_internal::ColorAction - - - Text Color - - - - - qdesigner_internal::ComboBoxTaskMenu - - - Edit Items... - - - - - Change Combobox Contents - - - - - qdesigner_internal::CommandLinkButtonTaskMenu - - - Change description... - - - - - qdesigner_internal::ConnectionEdit - - - Select All - - - - - Deselect All - - - - - Delete - - - - - qdesigner_internal::ConnectionModel - - - Sender - - - - - Signal - - - - - Receiver - - - - - Slot - - - - - <sender> - - - - - <signal> - - - - - <receiver> - - - - - <slot> - - - - - The connection already exists!<br>%1 - - - - - Signal and Slot Editor - - - - - qdesigner_internal::ContainerWidgetTaskMenu - - - Delete - - - - - Insert - - - - - Insert Page Before Current Page - - - - - Insert Page After Current Page - - - - - Add Subwindow - - - - - Subwindow - - - - - Page - - - - - Page %1 of %2 - - - - - qdesigner_internal::DPI_Chooser - - - System (%1 x %2) - System resolution - - - - - User defined - - - - - x - DPI X/Y separator - - - - - qdesigner_internal::DesignerPropertyManager - - - - AlignLeft - - - - - AlignHCenter - - - - - AlignRight - - - - - AlignJustify - - - - - AlignTop - - - - - - AlignVCenter - - - - - AlignBottom - - - - - %1, %2 - - - - - Customized (%n roles) - - - - - - - Inherited - - - - - Horizontal - - - - - Vertical - - - - - Normal Off - - - - - Normal On - - - - - Disabled Off - - - - - Disabled On - - - - - Active Off - - - - - Active On - - - - - Selected Off - - - - - Selected On - - - - - - translatable - - - - - - disambiguation - - - - - - comment - - - - - qdesigner_internal::DeviceProfileDialog - - - Device Profiles (*.%1) - - - - - Default - - - - - Save Profile - - - - - Save Profile - Error - - - - - Unable to open the file '%1' for writing: %2 - - - - - Open profile - - - - - - Open Profile - Error - - - - - Unable to open the file '%1' for reading: %2 - - - - - '%1' is not a valid profile: %2 - - - - - qdesigner_internal::Dialog - - - Dialog - - - - - StringList - - - - - New String - - - - - &New - - - - - Delete String - - - - - &Delete - - - - - &Value: - - - - - Move String Up - - - - - Up - - - - - Move String Down - - - - - Down - - - - - qdesigner_internal::EmbeddedOptionsControl - - - None - - - - - Add a profile - - - - - Edit the selected profile - - - - - Delete the selected profile - - - - - Add Profile - - - - - New profile - - - - - Edit Profile - - - - - Delete Profile - - - - - Would you like to delete the profile '%1'? - - - - - Default - - - - - qdesigner_internal::FilterWidget - - - <Filter> - - - - - qdesigner_internal::FormEditor - - - Resource File Changed - - - - - The file "%1" has changed outside Designer. Do you want to reload it? - - - - - qdesigner_internal::FormLayoutMenu - - - Add form layout row... - - - - - qdesigner_internal::FormWindow - - - Edit contents - - - - - F2 - - - - - Insert widget '%1' - - - - - Resize - - - - - - Key Move - - - - - Paste %n action(s) - - - - - - - Paste %n widget(s) - - - - - - - Paste (%1 widgets, %2 actions) - - - - - Cannot paste widgets. Designer could not find a container without a layout to paste into. - - - - - Break the layout of the container you want to paste into, select this container and then paste again. - - - - - Paste error - - - - - Raise widgets - - - - - Lower widgets - - - - - Select Ancestor - - - - - Lay out - - - - - - Drop widget - - - - - A QMainWindow-based form does not contain a central widget. - - - - - qdesigner_internal::FormWindowBase - - - Delete '%1' - - - - - Delete - - - - - qdesigner_internal::FormWindowManager - - - Cu&t - - - - - Cuts the selected widgets and puts them on the clipboard - - - - - &Copy - - - - - Copies the selected widgets to the clipboard - - - - - &Paste - - - - - Pastes the clipboard's contents - - - - - &Delete - - - - - Deletes the selected widgets - - - - - Select &All - - - - - Selects all widgets - - - - - Bring to &Front - - - - - - Raises the selected widgets - - - - - Send to &Back - - - - - - Lowers the selected widgets - - - - - Adjust &Size - - - - - Adjusts the size of the selected widget - - - - - Lay Out &Horizontally - - - - - Lays out the selected widgets horizontally - - - - - Lay Out &Vertically - - - - - Lays out the selected widgets vertically - - - - - Lay Out in a &Form Layout - - - - - Lays out the selected widgets in a form layout - - - - - Lay Out in a &Grid - - - - - Lays out the selected widgets in a grid - - - - - Lay Out Horizontally in S&plitter - - - - - Lays out the selected widgets horizontally in a splitter - - - - - Lay Out Vertically in Sp&litter - - - - - Lays out the selected widgets vertically in a splitter - - - - - &Break Layout - - - - - Breaks the selected layout - - - - - Si&mplify Grid Layout - - - - - Removes empty columns and rows - - - - - &Preview... - - - - - Preview current form - - - - - Form &Settings... - - - - - Break Layout - - - - - Adjust Size - - - - - Could not create form preview - Title of warning message box - - - - - Form Settings - %1 - - - - - qdesigner_internal::FormWindowSettings - - - None - - - - - Device Profile: %1 - - - - - qdesigner_internal::GridPanel - - - Form - - - - - Grid - - - - - Visible - - - - - Grid &X - - - - - Snap - - - - - Reset - - - - - Grid &Y - - - - - qdesigner_internal::GroupBoxTaskMenu - - - Change title... - - - - - qdesigner_internal::HtmlTextEdit - - - Insert HTML entity - - - - - qdesigner_internal::IconSelector - - - The pixmap file '%1' cannot be read. - - - - - The file '%1' does not appear to be a valid pixmap file: %2 - - - - - The file '%1' could not be read: %2 - - - - - Choose a Pixmap - - - - - Pixmap Read Error - - - - - ... - - - - - Normal Off - - - - - Normal On - - - - - Disabled Off - - - - - Disabled On - - - - - Active Off - - - - - Active On - - - - - Selected Off - - - - - Selected On - - - - - Choose Resource... - - - - - Choose File... - - - - - Reset - - - - - Reset All - - - - - qdesigner_internal::ItemListEditor - - - Properties &<< - - - - - - Properties &>> - - - - - Items List - - - - - New Item - - - - - &New - - - - - Delete Item - - - - - &Delete - - - - - Move Item Up - - - - - U - - - - - Move Item Down - - - - - D - - - - - qdesigner_internal::LabelTaskMenu - - - Change rich text... - - - - - Change plain text... - - - - - qdesigner_internal::LineEditTaskMenu - - - Change text... - - - - - qdesigner_internal::ListWidgetEditor - - - New Item - - - - - Edit List Widget - - - - - Edit Combobox - - - - - qdesigner_internal::ListWidgetTaskMenu - - - Edit Items... - - - - - Change List Contents - - - - - qdesigner_internal::MdiContainerWidgetTaskMenu - - - Next Subwindow - - - - - Previous Subwindow - - - - - Tile - - - - - Cascade - - - - - qdesigner_internal::MenuTaskMenu - - - Remove - - - - - qdesigner_internal::MorphMenu - - - Morph into - - - - - qdesigner_internal::NewActionDialog - - - New Action... - - - - - &Text: - - - - - Object &name: - - - - - &Icon: - - - - - Shortcut: - - - - - Checkable: - - - - - ToolTip: - - - - - ... - - - - - qdesigner_internal::NewDynamicPropertyDialog - - - Set Property Name - - - - - The current object already has a property named '%1'. -Please select another, unique one. - - - - - The '_q_' prefix is reserved for the Qt library. -Please select another name. - - - - - Create Dynamic Property - - - - - Property Name - - - - - horizontalSpacer - - - - - Property Type - - - - - qdesigner_internal::NewFormWidget - - - Default size - - - - - QVGA portrait (240x320) - - - - - QVGA landscape (320x240) - - - - - VGA portrait (480x640) - - - - - VGA landscape (640x480) - - - - - Widgets - New Form Dialog Categories - - - - - Custom Widgets - - - - - None - - - - - Error loading form - - - - - Internal error: No template selected. - - - - - 0 - - - - - Choose a template for a preview - - - - - Embedded Design - - - - - Device: - - - - - Screen Size: - - - - - qdesigner_internal::NewPromotedClassPanel - - - Add - - - - - New Promoted Class - - - - - Base class name: - - - - - Promoted class name: - - - - - Header file: - - - - - Global include - - - - - Reset - - - - - qdesigner_internal::ObjectInspector - - - &Find in Text... - - - - - qdesigner_internal::ObjectInspector::ObjectInspectorPrivate - - - Change Current Page - - - - - qdesigner_internal::OrderDialog - - - Index %1 (%2) - - - - - %1 %2 - - - - - Change Page Order - - - - - Page Order - - - - - Move page up - - - - - Move page down - - - - - qdesigner_internal::PaletteEditor - - - Edit Palette - - - - - Tune Palette - - - - - Show Details - - - - - Compute Details - - - - - Quick - - - - - Preview - - - - - Disabled - - - - - Inactive - - - - - Active - - - - - qdesigner_internal::PaletteEditorButton - - - Change Palette - - - - - qdesigner_internal::PaletteModel - - - Color Role - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - qdesigner_internal::PixmapEditor - - - Choose Resource... - - - - - Choose File... - - - - - Copy Path - - - - - Paste Path - - - - - - ... - - - - - qdesigner_internal::PlainTextEditorDialog - - - Edit text - - - - - qdesigner_internal::PluginDialog - - - Components - - - - - Plugin Information - - - - - Refresh - - - - - Scan for newly installed custom widget plugins. - - - - - Qt Designer couldn't find any plugins - - - - - Qt Designer found the following plugins - - - - - New custom widget plugins have been found. - - - - - qdesigner_internal::PreviewActionGroup - - - %1 Style - - - - - qdesigner_internal::PreviewConfigurationWidget::PreviewConfigurationWidgetPrivate - - - Load Custom Device Skin - - - - - All QVFB Skins (*.%1) - - - - - %1 - Duplicate Skin - - - - - The skin '%1' already exists. - - - - - %1 - Error - - - - - %1 is not a valid skin directory: -%2 - - - - - qdesigner_internal::PreviewDeviceSkin - - - &Close - - - - - qdesigner_internal::PreviewManager - - - %1 - [Preview] - - - - - qdesigner_internal::PreviewWidget - - - Preview Window - - - - - LineEdit - - - - - ComboBox - - - - - PushButton - - - - - ButtonGroup2 - - - - - CheckBox1 - - - - - CheckBox2 - - - - - ButtonGroup - - - - - RadioButton1 - - - - - RadioButton2 - - - - - RadioButton3 - - - - - qdesigner_internal::PromotionModel - - - Name - - - - - Header file - - - - - Global include - - - - - Usage - - - - - qdesigner_internal::PromotionTaskMenu - - - Promoted widgets... - - - - - Promote to ... - - - - - Change signals/slots... - - - - - Promote to - - - - - Demote to %1 - - - - - qdesigner_internal::PropertyEditor - - - Add Dynamic Property... - - - - - Remove Dynamic Property - - - - - Sorting - - - - - Color Groups - - - - - Tree View - - - - - Drop Down Button View - - - - - String... - - - - - Bool... - - - - - Other... - - - - - Configure Property Editor - - - - - Object: %1 -Class: %2 - - - - - qdesigner_internal::PropertyLineEdit - - - Insert line break - - - - - qdesigner_internal::QDesignerPromotionDialog - - - Promoted Widgets - - - - - Promoted Classes - - - - - Promote - - - - - Change signals/slots... - - - - - %1 - Error - - - - - qdesigner_internal::QDesignerResource - - - Loading qrc file - - - - - The specified qrc file <p><b>%1</b></p><p>could not be found. Do you want to update the file location?</p> - - - - - New location for %1 - - - - - Resource files (*.qrc) - - - - - qdesigner_internal::QDesignerTaskMenu - - - Change objectName... - - - - - Change toolTip... - - - - - Change whatsThis... - - - - - Change styleSheet... - - - - - Create Menu Bar - - - - - Add Tool Bar - - - - - Create Status Bar - - - - - Remove Status Bar - - - - - Change script... - - - - - Change signals/slots... - - - - - Go to slot... - - - - - Size Constraints - - - - - Set Minimum Width - - - - - Set Minimum Height - - - - - Set Minimum Size - - - - - Set Maximum Width - - - - - Set Maximum Height - - - - - Set Maximum Size - - - - - Edit ToolTip - - - - - Edit WhatsThis - - - - - no signals available - - - - - Set size constraint on %n widget(s) - - - - - - - qdesigner_internal::QDesignerWidgetBox - - - - Unexpected element <%1> - - - - - A parse error occurred at line %1, column %2 of the XML code specified for the widget %3: %4 -%5 - - - - - The XML code specified for the widget %1 does not contain any widget elements. -%2 - - - - - qdesigner_internal::QtGradientEditor - - - Linear - - - - - Radial - - - - - Conical - - - - - Pad - - - - - Repeat - - - - - Reflect - - - - - qdesigner_internal::QtGradientStopsController - - - H - - - - - S - - - - - V - - - - - - Hue - - - - - Sat - - - - - Val - - - - - Saturation - - - - - Value - - - - - R - - - - - G - - - - - B - - - - - Red - - - - - Green - - - - - Blue - - - - - qdesigner_internal::RichTextEditorDialog - - - Edit text - - - - - Rich Text - - - - - Source - - - - - &OK - - - - - &Cancel - - - - - qdesigner_internal::RichTextEditorToolBar - - - Bold - - - - - CTRL+B - - - - - Italic - - - - - CTRL+I - - - - - Underline - - - - - CTRL+U - - - - - Left Align - - - - - Center - - - - - Right Align - - - - - Justify - - - - - Superscript - - - - - Subscript - - - - - Insert &Link - - - - - Insert &Image - - - - - qdesigner_internal::ScriptDialog - - - Edit script - - - - - <html>Enter a Qt Script snippet to be executed while loading the form.<br>The widget and its children are accessible via the variables <i>widget</i> and <i>childWidgets</i>, respectively. - - - - - Syntax error - - - - - qdesigner_internal::ScriptErrorDialog - - - Script errors - - - - - qdesigner_internal::SignalSlotDialog - - - There is already a slot with the signature '%1'. - - - - - There is already a signal with the signature '%1'. - - - - - %1 - Duplicate Signature - - - - - - Signals/Slots of %1 - - - - - qdesigner_internal::SignalSlotEditorPlugin - - - Edit Signals/Slots - - - - - F4 - - - - - qdesigner_internal::SignalSlotEditorTool - - - Edit Signals/Slots - - - - - qdesigner_internal::StatusBarTaskMenu - - - Remove - - - - - qdesigner_internal::StringListEditorButton - - - Change String List - - - - - qdesigner_internal::StyleSheetEditorDialog - - - - Valid Style Sheet - - - - - Add Resource... - - - - - Add Gradient... - - - - - Add Color... - - - - - Add Font... - - - - - Edit Style Sheet - - - - - Invalid Style Sheet - - - - - qdesigner_internal::TabOrderEditor - - - Start from Here - - - - - Restart - - - - - Tab Order List... - - - - - Tab Order List - - - - - Tab Order - - - - - qdesigner_internal::TabOrderEditorPlugin - - - Edit Tab Order - - - - - qdesigner_internal::TabOrderEditorTool - - - Edit Tab Order - - - - - qdesigner_internal::TableWidgetEditor - - - New Column - - - - - New Row - - - - - &Columns - - - - - &Rows - - - - - Properties &<< - - - - - - Properties &>> - - - - - Edit Table Widget - - - - - &Items - - - - - Table Items - - - - - qdesigner_internal::TableWidgetTaskMenu - - - Edit Items... - - - - - qdesigner_internal::TemplateOptionsWidget - - - Pick a directory to save templates in - - - - - Form - - - - - Additional Template Paths - - - - - ... - - - - - qdesigner_internal::TextEditTaskMenu - - - Edit HTML - - - - - Change HTML... - - - - - Edit Text - - - - - Change Plain Text... - - - - - qdesigner_internal::TextEditor - - - Choose Resource... - - - - - Choose File... - - - - - ... - - - - - Choose a File - - - - - qdesigner_internal::ToolBarEventFilter - - - Insert Separator before '%1' - - - - - Append Separator - - - - - Remove action '%1' - - - - - Remove Toolbar '%1' - - - - - Insert Separator - - - - - qdesigner_internal::TreeWidgetEditor - - - New Column - - - - - &Columns - - - - - Per column properties - - - - - Common properties - - - - - - New Item - - - - - - New Subitem - - - - - Properties &<< - - - - - - Properties &>> - - - - - Edit Tree Widget - - - - - &Items - - - - - Tree Items - - - - - 1 - - - - - &New - - - - - New &Subitem - - - - - Delete Item - - - - - &Delete - - - - - Move Item Left (before Parent Item) - - - - - L - - - - - Move Item Right (as a First Subitem of the Next Sibling Item) - - - - - R - - - - - Move Item Up - - - - - U - - - - - Move Item Down - - - - - D - - - - - qdesigner_internal::TreeWidgetTaskMenu - - - Edit Items... - - - - - qdesigner_internal::WidgetBox - - - Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML. - - - - - qdesigner_internal::WidgetBoxTreeWidget - - - Scratchpad - - - - - Custom Widgets - - - - - Expand all - - - - - Collapse all - - - - - List View - - - - - Icon View - - - - - Remove - - - - - Edit name - - - - - qdesigner_internal::WidgetDataBase - - - A custom widget plugin whose class name (%1) matches that of an existing class has been found. - - - - - qdesigner_internal::WidgetEditorTool - - - Edit Widgets - - - - - qdesigner_internal::WidgetFactory - - - The custom widget factory registered for widgets of class %1 returned 0. - - - - - A class name mismatch occurred when creating a widget using the custom widget factory registered for widgets of class %1. It returned a widget of class %2. - - - - - %1 Widget - - - - - The current page of the container '%1' (%2) could not be determined while creating a layout.This indicates an inconsistency in the ui-file, probably a layout being constructed on a container widget. - - - - - Attempt to add a layout to a widget '%1' (%2) which already has an unmanaged layout of type %3. -This indicates an inconsistency in the ui-file. - - - - - Cannot create style '%1'. - - - - - qdesigner_internal::WizardContainerWidgetTaskMenu - - - Next - - - - - Back - - - - - qdesigner_internal::ZoomMenu - - - %1 % - Zoom factor - - - - diff --git a/translations/linguist_tr_TR.ts b/translations/linguist_tr_TR.ts deleted file mode 100644 index 1a1baa8..0000000 --- a/translations/linguist_tr_TR.ts +++ /dev/null @@ -1,1955 +0,0 @@ - - - - - - - - (New Entry) - - - - - AboutDialog - - - Qt Linguist - - - - - BatchTranslationDialog - - - Qt Linguist - Batch Translation - - - - - Options - - - - - Set translated entries to finished - - - - - Retranslate entries with existing translation - - - - - Note that the modified entries will be reset to unfinished if 'Set translated entries to finished' above is unchecked. - - - - - Translate also finished entries - - - - - Phrase book preference - - - - - Move up - - - - - Move down - - - - - The batch translator will search through the selected phrase books in the order given above. - - - - - &Run - - - - - Cancel - - - - - Batch Translation of '%1' - Qt Linguist - - - - - Searching, please wait... - - - - - &Cancel - - - - - Linguist batch translator - - - - - Batch translated %n entries - - - - - - - DataModel - - - <qt>Duplicate messages found in '%1': - - - - - <p>[more duplicates omitted] - - - - - <p>* Context: %1<br>* Source: %2 - - - - - <br>* Comment: %3 - - - - - Linguist does not know the plural rules for '%1'. -Will assume a single universal form. - - - - - Cannot create '%2': %1 - - - - - Universal Form - - - - - ErrorsView - - - Accelerator possibly superfluous in translation. - - - - - Accelerator possibly missing in translation. - - - - - Translation does not end with the same punctuation as the source text. - - - - - A phrase book suggestion for '%1' was ignored. - - - - - Translation does not refer to the same place markers as in the source text. - - - - - Translation does not contain the necessary %n place marker. - - - - - Unknown error - - - - - FindDialog - - - - Choose Edit|Find from the menu bar or press Ctrl+F to pop up the Find dialog - - - - - Find - - - - - This window allows you to search for some text in the translation source file. - - - - - &Find what: - - - - - Type in the text to search for. - - - - - Options - - - - - Source texts are searched when checked. - - - - - &Source texts - - - - - Translations are searched when checked. - - - - - &Translations - - - - - Texts such as 'TeX' and 'tex' are considered as different when checked. - - - - - &Match case - - - - - Comments and contexts are searched when checked. - - - - - &Comments - - - - - Ignore &accelerators - - - - - Click here to find the next occurrence of the text you typed in. - - - - - Find Next - - - - - Click here to close this window. - - - - - Cancel - - - - - LRelease - - - Generated %n translation(s) (%1 finished and %2 unfinished) - - - - - - - - Ignored %n untranslated source text(s) - - - - - - - - MainWindow - - - - This is the application's main window. - - - - - Source text - - - - - - Index - - - - - - Context - - - - - Items - - - - - This panel lists the source contexts. - - - - - Strings - - - - - Phrases and guesses - - - - - Sources and Forms - - - - - Warnings - - - - - MOD - status bar: file(s) modified - - - - - Loading... - - - - - - Loading File - Qt Linguist - - - - - The file '%1' does not seem to be related to the currently open file(s) '%2'. - -Close the open file(s) first? - - - - - The file '%1' does not seem to be related to the file '%2' which is being loaded as well. - -Skip loading the first named file? - - - - - %n translation unit(s) loaded. - - - - - - - Related files (%1);; - - - - - Open Translation Files - - - - - - File saved. - - - - - - - Release - - - - - Qt message files for released applications (*.qm) -All files (*) - - - - - - File created. - - - - - - Printing... - - - - - Context: %1 - - - - - finished - - - - - unresolved - - - - - obsolete - - - - - - Printing... (page %1) - - - - - - Printing completed - - - - - - Printing aborted - - - - - Search wrapped. - - - - - - - - - - - - - - Qt Linguist - - - - - - Cannot find the string '%1'. - - - - - Search And Translate in '%1' - Qt Linguist - - - - - - - Translate - Qt Linguist - - - - - Translated %n entry(s) - - - - - - - No more occurrences of '%1'. Start over? - - - - - Create New Phrase Book - - - - - Qt phrase books (*.qph) -All files (*) - - - - - Phrase book created. - - - - - Open Phrase Book - - - - - Qt phrase books (*.qph);;All files (*) - - - - - %n phrase(s) loaded. - - - - - - - - - Add to phrase book - - - - - No appropriate phrasebook found. - - - - - Adding entry to phrasebook %1 - - - - - Select phrase book to add to - - - - - Unable to launch Qt Assistant (%1) - - - - - Version %1 - - - - - <center><img src=":/images/splash.png"/></img><p>%1</p></center><p>Qt Linguist is a tool for adding translations to Qt applications.</p><p>%2</p><p>Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</p><p>The program is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.</p> - - - - - Do you want to save the modified files? - - - - - Do you want to save '%1'? - - - - - Qt Linguist[*] - - - - - %1[*] - Qt Linguist - - - - - - No untranslated translation units left. - - - - - &Window - - - - - Minimize - - - - - Ctrl+M - - - - - Display the manual for %1. - - - - - Display information about %1. - - - - - &Save '%1' - - - - - Save '%1' &As... - - - - - Release '%1' - - - - - Release '%1' As... - - - - - &Close '%1' - - - - - - &Save - - - - - - - Save &As... - - - - - - - Release As... - - - - - - &Close - - - - - Save All - - - - - - &Release All - - - - - Close All - - - - - &Release - - - - - Translation File &Settings for '%1'... - - - - - &Batch Translation of '%1'... - - - - - Search And &Translate in '%1'... - - - - - - Translation File &Settings... - - - - - - &Batch Translation... - - - - - Search And &Translate... - - - - - - File - - - - - - Edit - - - - - - Translation - - - - - - Validation - - - - - - Help - - - - - Cannot read from phrase book '%1'. - - - - - Close this phrase book. - - - - - Enables you to add, modify, or delete entries in this phrase book. - - - - - Print the entries in this phrase book. - - - - - Cannot create phrase book '%1'. - - - - - Do you want to save phrase book '%1'? - - - - - All - - - - - MainWindow - - - - - &Phrases - - - - - &Close Phrase Book - - - - - &Edit Phrase Book - - - - - &Print Phrase Book - - - - - V&alidation - - - - - &View - - - - - Vie&ws - - - - - &Toolbars - - - - - &Help - - - - - &Translation - - - - - &File - - - - - Recently Opened &Files - - - - - &Edit - - - - - &Open... - - - - - Open a Qt translation source file (TS file) for editing - - - - - Ctrl+O - - - - - E&xit - - - - - Close this window and exit. - - - - - Ctrl+Q - - - - - Save - - - - - Save changes made to this Qt translation source file - - - - - Save As... - - - - - Save changes made to this Qt translation source file into a new file. - - - - - Create a Qt message file suitable for released applications from the current message file. - - - - - &Print... - - - - - Print a list of all the translation units in the current translation source file. - - - - - Ctrl+P - - - - - &Undo - - - - - Undo the last editing operation performed on the current translation. - - - - - Ctrl+Z - - - - - &Redo - - - - - Redo an undone editing operation performed on the translation. - - - - - Ctrl+Y - - - - - Cu&t - - - - - Copy the selected translation text to the clipboard and deletes it. - - - - - Ctrl+X - - - - - &Copy - - - - - Copy the selected translation text to the clipboard. - - - - - Ctrl+C - - - - - &Paste - - - - - Paste the clipboard text into the translation. - - - - - Ctrl+V - - - - - Select &All - - - - - Select the whole translation text. - - - - - Ctrl+A - - - - - &Find... - - - - - Search for some text in the translation source file. - - - - - Ctrl+F - - - - - Find &Next - - - - - Continue the search where it was left. - - - - - F3 - - - - - &Prev Unfinished - - - - - Previous unfinished item. - - - - - Move to the previous unfinished item. - - - - - Ctrl+K - - - - - &Next Unfinished - - - - - Next unfinished item. - - - - - Move to the next unfinished item. - - - - - Ctrl+J - - - - - P&rev - - - - - Move to previous item. - - - - - Move to the previous item. - - - - - Ctrl+Shift+K - - - - - Ne&xt - - - - - Next item. - - - - - Move to the next item. - - - - - Ctrl+Shift+J - - - - - &Done and Next - - - - - Mark item as done and move to the next unfinished item. - - - - - Mark this item as done and move to the next unfinished item. - - - - - Copy from source text - - - - - Copies the source text into the translation field. - - - - - Ctrl+B - - - - - &Accelerators - - - - - Toggle the validity check of accelerators. - - - - - Toggle the validity check of accelerators, i.e. whether the number of ampersands in the source and translation text is the same. If the check fails, a message is shown in the warnings window. - - - - - &Ending Punctuation - - - - - Toggle the validity check of ending punctuation. - - - - - Toggle the validity check of ending punctuation. If the check fails, a message is shown in the warnings window. - - - - - &Phrase matches - - - - - Toggle checking that phrase suggestions are used. - - - - - Toggle checking that phrase suggestions are used. If the check fails, a message is shown in the warnings window. - - - - - Place &Marker Matches - - - - - Toggle the validity check of place markers. - - - - - Toggle the validity check of place markers, i.e. whether %1, %2, ... are used consistently in the source text and translation text. If the check fails, a message is shown in the warnings window. - - - - - &New Phrase Book... - - - - - Create a new phrase book. - - - - - Ctrl+N - - - - - &Open Phrase Book... - - - - - Open a phrase book to assist translation. - - - - - Ctrl+H - - - - - &Reset Sorting - - - - - Sort the items back in the same order as in the message file. - - - - - &Display guesses - - - - - Set whether or not to display translation guesses. - - - - - &Statistics - - - - - Display translation statistics. - - - - - &Manual - - - - - F1 - - - - - About Qt Linguist - - - - - About Qt - - - - - Display information about the Qt toolkit by Trolltech. - - - - - &What's This? - - - - - What's This? - - - - - Enter What's This? mode. - - - - - Shift+F1 - - - - - &Search And Translate... - - - - - Replace the translation on all entries that matches the search source text. - - - - - Batch translate all entries using the information in the phrase books. - - - - - Create a Qt message file suitable for released applications from the current message file. The filename will automatically be determined from the name of the .ts file. - - - - - Open/Refresh Form &Preview - - - - - Form Preview Tool - - - - - F5 - - - - - &Add to Phrase Book - - - - - Ctrl+T - - - - - Open Read-O&nly... - - - - - &Save All - - - - - Ctrl+S - - - - - Close - - - - - &Close All - - - - - Ctrl+W - - - - - MessageEditor - - - German - - - - - Japanese - - - - - French - - - - - Polish - - - - - Chinese - - - - - This whole panel allows you to view and edit the translation of some source text. - - - - - Source text - - - - - This area shows the source text. - - - - - Source text (Plural) - - - - - This area shows the plural form of the source text. - - - - - Developer comments - - - - - This area shows a comment that may guide you, and the context in which the text occurs. - - - - - Here you can enter comments for your own use. They have no effect on the translated applications. - - - - - %1 translation (%2) - - - - - This is where you can enter or modify the translation of the above source text. - - - - - %1 translation - - - - - %1 translator comments - - - - - '%1' -Line: %2 - - - - - MessageModel - - - Completion status for %1 - - - - - <file header> - - - - - <context comment> - - - - - <unnamed context> - - - - - MsgEdit - - - - This is the right panel of the main window. - - - - - PhraseBookBox - - - - Go to Phrase > Edit Phrase Book... The dialog that pops up is a PhraseBookBox. - - - - - %1[*] - Qt Linguist - - - - - Qt Linguist - - - - - Cannot save phrase book '%1'. - - - - - Edit Phrase Book - - - - - This window allows you to add, modify, or delete entries in a phrase book. - - - - - &Translation: - - - - - This is the phrase in the target language corresponding to the source phrase. - - - - - S&ource phrase: - - - - - This is a definition for the source phrase. - - - - - This is the phrase in the source language. - - - - - &Definition: - - - - - Click here to add the phrase to the phrase book. - - - - - &New Entry - - - - - Click here to remove the entry from the phrase book. - - - - - &Remove Entry - - - - - Settin&gs... - - - - - Click here to save the changes made. - - - - - &Save - - - - - Click here to close this window. - - - - - Close - - - - - PhraseModel - - - Source phrase - - - - - Translation - - - - - Definition - - - - - PhraseView - - - Insert - - - - - Edit - - - - - Guess (%1) - - - - - Guess - - - - - QObject - - - Translation files (%1);; - - - - - All files (*) - - - - - - - - - - - Qt Linguist - - - - - C++ source files - - - - - Java source files - - - - - GNU Gettext localization files - - - - - Compiled Qt translations - - - - - Qt Linguist 'Phrase Book' - - - - - Qt Script source files - - - - - Qt translation sources (format 1.1) - - - - - Qt translation sources (format 2.0) - - - - - Qt translation sources (latest format) - - - - - Qt Designer form files - - - - - Qt Jambi form files - - - - - XLIFF localization files - - - - - SourceCodeView - - - <i>Source code not available</i> - - - - - <i>File %1 not available</i> - - - - - <i>File %1 not readable</i> - - - - - Statistics - - - Statistics - - - - - Close - - - - - Translation - - - - - Source - - - - - 0 - - - - - Words: - - - - - Characters: - - - - - Characters (with spaces): - - - - - TranslateDialog - - - This window allows you to search for some text in the translation source file. - - - - - Type in the text to search for. - - - - - Find &source text: - - - - - &Translate to: - - - - - Search options - - - - - Texts such as 'TeX' and 'tex' are considered as different when checked. - - - - - Match &case - - - - - Mark new translation as &finished - - - - - Click here to find the next occurrence of the text you typed in. - - - - - Find Next - - - - - Translate - - - - - Translate All - - - - - Click here to close this window. - - - - - Cancel - - - - - TranslationSettingsDialog - - - Source language - - - - - Language - - - - - Country/Region - - - - - Target language - - - - - Any Country - - - - - - Settings for '%1' - Qt Linguist - - - - diff --git a/translations/qt_help_tr_TR.ts b/translations/qt_help_tr_TR.ts deleted file mode 100644 index 7e2d8d1..0000000 --- a/translations/qt_help_tr_TR.ts +++ /dev/null @@ -1,355 +0,0 @@ - - - - - QCLuceneResultWidget - - - Search Results - - - - - Note: - - - - - The search results may not be complete since the documentation is still being indexed! - - - - - Your search did not match any documents. - - - - - (The reason for this might be that the documentation is still being indexed.) - - - - - QHelpCollectionHandler - - - The collection file is not set up yet! - - - - - Cannot load sqlite database driver! - - - - - - Cannot open collection file: %1 - - - - - Cannot create tables in file %1! - - - - - The specified collection file already exists! - - - - - Cannot create directory: %1 - - - - - Cannot copy collection file: %1 - - - - - Unknown filter! - - - - - Cannot register filter %1! - - - - - Cannot open documentation file %1! - - - - - Invalid documentation file! - - - - - The namespace %1 was not registered! - - - - - Namespace %1 already exists! - - - - - Cannot register namespace! - - - - - Cannot open database to optimize! - - - - - QHelpDBReader - - - Cannot open database '%1' '%2': %3 - - - - - QHelpEngineCore - - - The specified namespace does not exist! - - - - - QHelpEngineCorePrivate - - - Cannot open documentation file %1: %2! - - - - - QHelpGenerator - - - Invalid help data! - - - - - No output file name specified! - - - - - The file %1 cannot be overwritten! - - - - - Building up file structure... - - - - - Cannot open data base file %1! - - - - - Cannot register namespace %1! - - - - - Insert custom filters... - - - - - Insert help data for filter section (%1 of %2)... - - - - - Documentation successfully generated. - - - - - Some tables already exist! - - - - - Cannot create tables! - - - - - Cannot register virtual folder! - - - - - Insert files... - - - - - The file %1 does not exist! Skipping it. - - - - - Cannot open file %1! Skipping it. - - - - - The filter %1 is already registered! - - - - - Cannot register filter %1! - - - - - Insert indices... - - - - - Insert contents... - - - - - Cannot insert contents! - - - - - Cannot register contents! - - - - - QHelpSearchQueryWidget - - - Search for: - - - - - Search - - - - - Advanced search - - - - - words <B>similar</B> to: - - - - - <B>without</B> the words: - - - - - with <B>exact phrase</B>: - - - - - with <B>all</B> of the words: - - - - - with <B>at least one</B> of the words: - - - - - QHelpSearchResultWidget - - - 0 - 0 of 0 Hits - - - - - QHelpSearchResultWidgetPrivate - - - %1 - %2 of %3 Hits - - - - - QObject - - - Untitled - - - - - Unknown token. - - - - - Unknown token. Expected "QtHelpProject"! - - - - - Error in line %1: %2 - - - - - A virtual folder must not contain a '/' character! - - - - - A namespace must not contain a '/' character! - - - - - Missing namespace in QtHelpProject. - - - - - Missing virtual folder in QtHelpProject - - - - - Missing attribute in keyword at line %1. - - - - - The input file %1 could not be opened! - - - - -- cgit v0.12 From 292a37301950a64f211e3a2909ff64884b73e1cc Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Mon, 20 Apr 2009 18:49:21 +0200 Subject: Fix a bug in QFileDialog sidebar when the bookmark has an hidden parent If the bookmark in the sidebar has an hidden parent and the QFileDialog is set up to not show hidden files, then clicking on the bookmark move the current dir to root (like if the bookmark was invalid) instead of entering in the dir. The fix was to fetch the parent dir and the bookmark dir when the user select it in the sidebar. Task-number: 251321 Reviewed-by: jasplin --- src/gui/dialogs/qfiledialog.cpp | 5 ++++- src/gui/dialogs/qfilesystemmodel.h | 2 ++ tests/auto/qfiledialog/tst_qfiledialog.cpp | 34 ++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index 9935a80..d786f3e 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -693,7 +693,10 @@ void QFileDialog::setVisible(bool visible) */ void QFileDialogPrivate::_q_goToUrl(const QUrl &url) { - QModelIndex idx = model->index(url.toLocalFile()); + //The shortcut in the side bar may have a parent that is not fetched yet (e.g. an hidden file) + //so we force the fetching + QFileSystemModelPrivate::QFileSystemNode *node = model->d_func()->node(url.toLocalFile(), true); + QModelIndex idx = model->d_func()->index(node); _q_enterDirectory(idx); } diff --git a/src/gui/dialogs/qfilesystemmodel.h b/src/gui/dialogs/qfilesystemmodel.h index 52ecaf9..995268b 100644 --- a/src/gui/dialogs/qfilesystemmodel.h +++ b/src/gui/dialogs/qfilesystemmodel.h @@ -158,6 +158,8 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_performDelayedSort()) Q_PRIVATE_SLOT(d_func(), void _q_fileSystemChanged(const QString &path, const QList > &)) Q_PRIVATE_SLOT(d_func(), void _q_resolvedName(const QString &fileName, const QString &resolvedName)) + + friend class QFileDialogPrivate; }; inline bool QFileSystemModel::rmdir(const QModelIndex &aindex) const diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp index 695bfe7..981d445 100644 --- a/tests/auto/qfiledialog/tst_qfiledialog.cpp +++ b/tests/auto/qfiledialog/tst_qfiledialog.cpp @@ -157,6 +157,7 @@ private slots: void task228844_ensurePreviousSorting(); void task239706_editableFilterCombo(); void task218353_relativePaths(); + void task251321_sideBarHiddenEntries(); private: QByteArray userSettings; @@ -1852,5 +1853,38 @@ void tst_QFiledialog::task218353_relativePaths() appDir.rmdir("test"); } +void tst_QFiledialog::task251321_sideBarHiddenEntries() +{ + QNonNativeFileDialog fd; + + QDir current = QDir::currentPath(); + current.mkdir(".hidden"); + QDir hiddenDir = QDir(".hidden"); + hiddenDir.mkdir("subdir"); + QDir hiddenSubDir = QDir(".hidden/subdir"); + hiddenSubDir.mkdir("happy"); + hiddenSubDir.mkdir("happy2"); + + QList urls; + urls << QUrl::fromLocalFile(hiddenSubDir.absolutePath()); + fd.setSidebarUrls(urls); + fd.show(); + QTest::qWait(250); + + QSidebar *sidebar = qFindChild(&fd, "sidebar"); + sidebar->setFocus(); + sidebar->selectUrl(QUrl::fromLocalFile(hiddenSubDir.absolutePath())); + QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(0, 0)).center()); + QTest::qWait(250); + + QFileSystemModel *model = qFindChild(&fd, "qt_filesystem_model"); + QCOMPARE(model->rowCount(model->index(hiddenSubDir.absolutePath())), 2); + + hiddenSubDir.rmdir("happy2"); + hiddenSubDir.rmdir("happy"); + hiddenDir.rmdir("subdir"); + current.rmdir(".hidden"); +} + QTEST_MAIN(tst_QFiledialog) #include "tst_qfiledialog.moc" -- cgit v0.12 From b108e0479c6ec872ab767b8b81420b28ca1886cf Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Tue, 21 Apr 2009 10:17:56 +0200 Subject: There is no way to delete a invalid entry in the sidebar of QFileDialog. We can't remove an item in the sidebar if the bookmark is not valid (i.e. link to a non existing directory). ItemViews doesn't allow you to have disabled items and to select them at the same time, so i have implemented a delegate that paint in gray if the bookmark is invalid. So you can click on it and delete it. Task-number: 251341 Reviewed-by: jasplin --- src/gui/dialogs/qsidebar.cpp | 21 ++++++-- src/gui/dialogs/qsidebar_p.h | 13 ++++- tests/auto/qfiledialog/tst_qfiledialog.cpp | 82 ++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+), 4 deletions(-) diff --git a/src/gui/dialogs/qsidebar.cpp b/src/gui/dialogs/qsidebar.cpp index 1bd2b7d..bfdb37e 100644 --- a/src/gui/dialogs/qsidebar.cpp +++ b/src/gui/dialogs/qsidebar.cpp @@ -55,6 +55,18 @@ QT_BEGIN_NAMESPACE +void QSideBarDelegate::initStyleOption(QStyleOptionViewItem *option, + const QModelIndex &index) const +{ + QStyledItemDelegate::initStyleOption(option,index); + QVariant value = index.data(QUrlModel::EnabledRole); + if (value.isValid()) { + //If the bookmark/entry is not enabled then we paint it in gray + if (!qvariant_cast(value)) + option->state &= ~QStyle::State_Enabled; + } +} + /*! QUrlModel lets you have indexes from a QFileSystemModel to a list. When QFileSystemModel changes them QUrlModel will automatically update. @@ -88,9 +100,6 @@ Qt::ItemFlags QUrlModel::flags(const QModelIndex &index) const if (index.data(Qt::DecorationRole).isNull()) flags &= ~Qt::ItemIsEnabled; - if (invalidUrls.contains(index.data(UrlRole).toUrl())) - flags &= ~Qt::ItemIsEnabled; - return flags; } @@ -193,6 +202,11 @@ void QUrlModel::setUrl(const QModelIndex &index, const QUrl &url, const QModelIn newName = QFileInfo(url.toLocalFile()).fileName(); if (!invalidUrls.contains(url)) invalidUrls.append(url); + //The bookmark is invalid then we set to false the EnabledRole + setData(index, false, EnabledRole); + } else { + //The bookmark is valid then we set to true the EnabledRole + setData(index, true, EnabledRole); } // Make sure that we have at least 32x32 images @@ -356,6 +370,7 @@ void QSidebar::init(QFileSystemModel *model, const QList &newUrls) urlModel = new QUrlModel(this); urlModel->setFileSystemModel(model); setModel(urlModel); + setItemDelegate(new QSideBarDelegate(this)); connect(selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(clicked(const QModelIndex &))); diff --git a/src/gui/dialogs/qsidebar_p.h b/src/gui/dialogs/qsidebar_p.h index ecbbb37..56fd6d4 100644 --- a/src/gui/dialogs/qsidebar_p.h +++ b/src/gui/dialogs/qsidebar_p.h @@ -55,6 +55,7 @@ #include #include +#include #include #ifndef QT_NO_FILEDIALOG @@ -62,13 +63,23 @@ QT_BEGIN_NAMESPACE class QFileSystemModel; + +class QSideBarDelegate : public QStyledItemDelegate +{ + public: + QSideBarDelegate(QWidget *parent = 0) : QStyledItemDelegate(parent) {} + void initStyleOption(QStyleOptionViewItem *option, + const QModelIndex &index) const; +}; + class Q_AUTOTEST_EXPORT QUrlModel : public QStandardItemModel { Q_OBJECT public: enum Roles { - UrlRole = Qt::UserRole + 1 + UrlRole = Qt::UserRole + 1, + EnabledRole = Qt::UserRole + 2 }; QUrlModel(QObject *parent = 0); diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp index 981d445..13b13d6 100644 --- a/tests/auto/qfiledialog/tst_qfiledialog.cpp +++ b/tests/auto/qfiledialog/tst_qfiledialog.cpp @@ -158,6 +158,7 @@ private slots: void task239706_editableFilterCombo(); void task218353_relativePaths(); void task251321_sideBarHiddenEntries(); + void task251341_sideBarRemoveEntries(); private: QByteArray userSettings; @@ -1886,5 +1887,86 @@ void tst_QFiledialog::task251321_sideBarHiddenEntries() current.rmdir(".hidden"); } +class MyQSideBar : public QSidebar +{ +public : + MyQSideBar(QWidget *parent = 0) : QSidebar(parent) + {} + + void removeSelection() { + QList idxs = selectionModel()->selectedIndexes(); + QList indexes; + for (int i = 0; i < idxs.count(); i++) + indexes.append(idxs.at(i)); + + for (int i = 0; i < indexes.count(); ++i) + if (!indexes.at(i).data(Qt::UserRole + 1).toUrl().path().isEmpty()) + model()->removeRow(indexes.at(i).row()); + } +}; + +void tst_QFiledialog::task251341_sideBarRemoveEntries() +{ + QNonNativeFileDialog fd; + + QDir current = QDir::currentPath(); + current.mkdir("testDir"); + QDir testSubDir = QDir("testDir"); + + QList urls; + urls << QUrl::fromLocalFile(testSubDir.absolutePath()); + urls << QUrl::fromLocalFile("NotFound"); + fd.setSidebarUrls(urls); + fd.show(); + QTest::qWait(250); + + QSidebar *sidebar = qFindChild(&fd, "sidebar"); + sidebar->setFocus(); + //We enter in the first bookmark + sidebar->selectUrl(QUrl::fromLocalFile(testSubDir.absolutePath())); + QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(0, 0)).center()); + QTest::qWait(250); + + QFileSystemModel *model = qFindChild(&fd, "qt_filesystem_model"); + //There is no file + QCOMPARE(model->rowCount(model->index(testSubDir.absolutePath())), 0); + //Icon is not enabled QUrlModel::EnabledRole + QVariant value = sidebar->model()->index(0, 0).data(Qt::UserRole + 2); + QCOMPARE(qvariant_cast(value), true); + + sidebar->setFocus(); + //We enter in the second bookmark which is invalid + sidebar->selectUrl(QUrl::fromLocalFile("NotFound")); + QTest::mouseClick(sidebar->viewport(), Qt::LeftButton, 0, sidebar->visualRect(sidebar->model()->index(1, 0)).center()); + QTest::qWait(250); + + //We fallback to root because the entry in the bookmark is invalid + QCOMPARE(model->rowCount(model->index("NotFound")), model->rowCount(model->index(model->rootPath()))); + //Icon is not enabled QUrlModel::EnabledRole + value = sidebar->model()->index(1, 0).data(Qt::UserRole + 2); + QCOMPARE(qvariant_cast(value), false); + + MyQSideBar mySideBar; + mySideBar.init(model, urls); + mySideBar.show(); + mySideBar.selectUrl(QUrl::fromLocalFile(testSubDir.absolutePath())); + QTest::qWait(1000); + mySideBar.removeSelection(); + + //We remove the first entry + QList expected; + expected << QUrl::fromLocalFile("NotFound"); + QCOMPARE(mySideBar.urls(), expected); + + mySideBar.selectUrl(QUrl::fromLocalFile("NotFound")); + mySideBar.removeSelection(); + + //We remove the second entry + expected.clear(); + QCOMPARE(mySideBar.urls(), expected); + + current.rmdir("testDir"); +} + QTEST_MAIN(tst_QFiledialog) #include "tst_qfiledialog.moc" -- cgit v0.12 From 5306337bf3ba9b770824ae889e31e991a4e03ade Mon Sep 17 00:00:00 2001 From: Thomas Zander Date: Mon, 20 Apr 2009 17:35:25 +0200 Subject: Fixes: Qt expects hardcoded wacom device identifiers from xorg.conf Task: 210132 RevBy: Bradley T. Hughes Details:Make wacom detection use atoms instead of string compares --- src/gui/kernel/qapplication_x11.cpp | 18 +++++++----------- src/gui/kernel/qt_x11_p.h | 4 ++++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index b1270bc..366e576 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -294,6 +294,10 @@ static const char * x11_atomnames = { // XEMBED "_XEMBED\0" "_XEMBED_INFO\0" + + "Wacom Stylus\0" + "Wacom Cursor\0" + "Wacom Eraser\0" }; Q_GUI_EXPORT QX11Data *qt_x11Data = 0; @@ -2350,13 +2354,6 @@ void qt_init(QApplicationPrivate *priv, int, XAxisInfoPtr a; XDevice *dev = 0; -#if !defined(Q_OS_IRIX) - // XFree86 divides a stylus and eraser into 2 devices, so we must do for both... - const QString XFREENAMESTYLUS = QLatin1String("stylus"); - const QString XFREENAMEPEN = QLatin1String("pen"); - const QString XFREENAMEERASER = QLatin1String("eraser"); -#endif - if (X11->ptrXListInputDevices) { devices = X11->ptrXListInputDevices(X11->display, &ndev); if (!devices) @@ -2371,18 +2368,17 @@ void qt_init(QApplicationPrivate *priv, int, gotStylus = false; gotEraser = false; - QString devName = QString::fromLocal8Bit(devs->name).toLower(); #if defined(Q_OS_IRIX) + QString devName = QString::fromLocal8Bit(devs->name).toLower(); if (devName == QLatin1String(WACOM_NAME)) { deviceType = QTabletEvent::Stylus; gotStylus = true; } #else - if (devName.startsWith(XFREENAMEPEN) - || devName.startsWith(XFREENAMESTYLUS)) { + if (devs->type == ATOM(XWacomStylus)) { deviceType = QTabletEvent::Stylus; gotStylus = true; - } else if (devName.startsWith(XFREENAMEERASER)) { + } else if (devs->type == ATOM(XWacomEraser)) { deviceType = QTabletEvent::XFreeEraser; gotEraser = true; } diff --git a/src/gui/kernel/qt_x11_p.h b/src/gui/kernel/qt_x11_p.h index 563b7e9..b9ace9d 100644 --- a/src/gui/kernel/qt_x11_p.h +++ b/src/gui/kernel/qt_x11_p.h @@ -652,6 +652,10 @@ struct QX11Data _XEMBED, _XEMBED_INFO, + XWacomStylus, + XWacomCursor, + XWacomEraser, + NPredefinedAtoms, _QT_SETTINGS_TIMESTAMP = NPredefinedAtoms, -- cgit v0.12 From e43b059ea932f3e21f592c74b1723b4c6cb5465f Mon Sep 17 00:00:00 2001 From: Thomas Zander Date: Tue, 21 Apr 2009 11:44:55 +0200 Subject: Fixes: Incorrect textIndent() values in ODF RevBy: Simon Hausmann Task: 247952 Details: Use pixelToPoint on the text-indent values. --- src/gui/text/qtextodfwriter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp index 1edc3b8..75e89d2 100644 --- a/src/gui/text/qtextodfwriter.cpp +++ b/src/gui/text/qtextodfwriter.cpp @@ -477,7 +477,7 @@ void QTextOdfWriter::writeBlockFormat(QXmlStreamWriter &writer, QTextBlockFormat if (format.hasProperty(QTextFormat::BlockRightMargin)) writer.writeAttribute(foNS, QString::fromLatin1("margin-right"), pixelToPoint(qMax(qreal(0.), format.rightMargin())) ); if (format.hasProperty(QTextFormat::TextIndent)) - writer.writeAttribute(foNS, QString::fromLatin1("text-indent"), QString::number(format.textIndent())); + writer.writeAttribute(foNS, QString::fromLatin1("text-indent"), pixelToPoint(format.textIndent())); if (format.hasProperty(QTextFormat::PageBreakPolicy)) { if (format.pageBreakPolicy() & QTextFormat::PageBreak_AlwaysBefore) writer.writeAttribute(foNS, QString::fromLatin1("break-before"), QString::fromLatin1("page")); -- cgit v0.12 From 3ca6dde968488dfe005ffcdc88dbf6a0c1467438 Mon Sep 17 00:00:00 2001 From: Martin Pejcoch Date: Tue, 21 Apr 2009 12:05:02 +0200 Subject: Fixed a typo. Reviewed-by: Kavindra --- doc/src/snippets/code/src_qdbus_qdbusargument.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp index b982510..efd54ac 100644 --- a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp +++ b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp @@ -4,7 +4,7 @@ struct MyStructure int count; QString name; }; -QT_DECLARE_METATYPE(MyStructure) +Q_DECLARE_METATYPE(MyStructure) // Marshall the MyStructure data into a D-Bus argument QDBusArgument &operator<<(QDBusArgument &argument, const MyStructure &mystruct) -- cgit v0.12 From be7ee29e4b40d2496041873bba753761a6d7b8c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 21 Apr 2009 12:05:27 +0200 Subject: Fix crash in OpenGL paint engine with hq antialiasing and TxProject Use painter paths instead of rectangles for perspective transformed rects, as the rectangles might have been clipped. Task-number: 251485 Reviewed-by: Trond --- src/opengl/qpaintengine_opengl.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp index 88fd379..ec6e33b 100644 --- a/src/opengl/qpaintengine_opengl.cpp +++ b/src/opengl/qpaintengine_opengl.cpp @@ -3716,8 +3716,14 @@ void QOpenGLPaintEngine::drawRects(const QRectF *rects, int rectCount) d->disableClipping(); GLuint program = qt_gl_program_cache()->getProgram(d->drawable.context(), FRAGMENT_PROGRAM_MASK_TRAPEZOID_AA, 0, true); - QGLRectMaskGenerator maskGenerator(path, d->matrix, d->offscreen, program); - d->addItem(qt_mask_texture_cache()->getMask(maskGenerator, d)); + + if (d->matrix.type() >= QTransform::TxProject) { + QGLPathMaskGenerator maskGenerator(path, d->matrix, d->offscreen, program); + d->addItem(qt_mask_texture_cache()->getMask(maskGenerator, d)); + } else { + QGLRectMaskGenerator maskGenerator(path, d->matrix, d->offscreen, program); + d->addItem(qt_mask_texture_cache()->getMask(maskGenerator, d)); + } d->enableClipping(); } -- cgit v0.12 From 57f8033b7c1b26dfc91e257d1aaf9266ae67cc8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 21 Apr 2009 12:08:17 +0200 Subject: Fix non-opaque text from widget palette being blitted, not blended. QPainter inherits some properties from the widget, among other font and pen. These are set in the painter's state in initFrom(), but in 4.5 we forgot to call QPaintEngineEx::penChanged() to let an extended paint engine know that the pen has changed. This caused the raster engine to believe it could blit non-opaque text, due to the fast_text flag not being correctly updated. Task-number: 251534 Reviewed-by: Paul --- src/gui/painting/qpainter.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 2fa6a56..ffb273e 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -1484,7 +1484,9 @@ void QPainter::initFrom(const QWidget *widget) d->state->bgBrush = pal.brush(widget->backgroundRole()); d->state->deviceFont = QFont(widget->font(), const_cast (widget)); d->state->font = d->state->deviceFont; - if (d->engine) { + if (d->extended) { + d->extended->penChanged(); + } else if (d->engine) { d->engine->setDirty(QPaintEngine::DirtyPen); d->engine->setDirty(QPaintEngine::DirtyBrush); d->engine->setDirty(QPaintEngine::DirtyFont); -- cgit v0.12 From eb1411f550ab131162fd61bf81e9b22e0a75e26a Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 21 Apr 2009 12:48:00 +0200 Subject: QTableWidget header items not re-translated by QUiLoader. Task: 251691 Translate correct header item (fix to new feature). Reviewed-by: Oswald Buddenhagen --- tools/designer/src/uitools/quiloader.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/designer/src/uitools/quiloader.cpp b/tools/designer/src/uitools/quiloader.cpp index d3d1d54..67bd29c 100644 --- a/tools/designer/src/uitools/quiloader.cpp +++ b/tools/designer/src/uitools/quiloader.cpp @@ -259,9 +259,9 @@ public: const int row_cnt = tablew->rowCount(); const int col_cnt = tablew->columnCount(); for (int j = 0; j < col_cnt; ++j) - reTranslateTableItem(tablew->verticalHeaderItem(j), m_className); + reTranslateTableItem(tablew->horizontalHeaderItem(j), m_className); for (int i = 0; i < row_cnt; ++i) { - reTranslateTableItem(tablew->horizontalHeaderItem(i), m_className); + reTranslateTableItem(tablew->verticalHeaderItem(i), m_className); for (int j = 0; j < col_cnt; ++j) reTranslateTableItem(tablew->item(i, j), m_className); } -- cgit v0.12 From 92f07dcd690d596e2d6cc32211c142cd0e25fd97 Mon Sep 17 00:00:00 2001 From: kh Date: Tue, 21 Apr 2009 12:49:50 +0200 Subject: Doc - Changed the namespace in the qdocconf file to reflect Qt 4.5.1 should have been part of c8285ec610b02f440f692be90aed1e6925a8675 Task-number: 251346 Reviewed-by: TrustMe BT: yes --- tools/qdoc3/test/assistant.qdocconf | 4 ++-- tools/qdoc3/test/designer.qdocconf | 4 ++-- tools/qdoc3/test/linguist.qdocconf | 4 ++-- tools/qdoc3/test/qmake.qdocconf | 4 ++-- tools/qdoc3/test/qt-build-docs.qdocconf | 12 ++++++------ tools/qdoc3/test/qt.qdocconf | 10 +++++----- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/tools/qdoc3/test/assistant.qdocconf b/tools/qdoc3/test/assistant.qdocconf index 7bb6bbf..cd5a877 100644 --- a/tools/qdoc3/test/assistant.qdocconf +++ b/tools/qdoc3/test/assistant.qdocconf @@ -13,11 +13,11 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Assistant qhp.Assistant.file = assistant.qhp -qhp.Assistant.namespace = com.trolltech.assistant.450 +qhp.Assistant.namespace = com.trolltech.assistant.451 qhp.Assistant.virtualFolder = qdoc qhp.Assistant.indexTitle = Qt Assistant Manual qhp.Assistant.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png -qhp.Assistant.filterAttributes = qt 4.5.0 tools assistant +qhp.Assistant.filterAttributes = qt 4.5.1 tools assistant qhp.Assistant.customFilters.Assistant.name = Qt Assistant Manual qhp.Assistant.customFilters.Assistant.filterAttributes = qt tools assistant qhp.Assistant.subprojects = manual examples diff --git a/tools/qdoc3/test/designer.qdocconf b/tools/qdoc3/test/designer.qdocconf index 26636cd..bfafed0 100644 --- a/tools/qdoc3/test/designer.qdocconf +++ b/tools/qdoc3/test/designer.qdocconf @@ -13,11 +13,11 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Designer qhp.Designer.file = designer.qhp -qhp.Designer.namespace = com.trolltech.designer.450 +qhp.Designer.namespace = com.trolltech.designer.451 qhp.Designer.virtualFolder = qdoc qhp.Designer.indexTitle = Qt Designer Manual qhp.Designer.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png -qhp.Designer.filterAttributes = qt 4.5.0 tools designer +qhp.Designer.filterAttributes = qt 4.5.1 tools designer qhp.Designer.customFilters.Designer.name = Qt Designer Manual qhp.Designer.customFilters.Designer.filterAttributes = qt tools designer qhp.Designer.subprojects = manual examples diff --git a/tools/qdoc3/test/linguist.qdocconf b/tools/qdoc3/test/linguist.qdocconf index 5e889a8..d917100 100644 --- a/tools/qdoc3/test/linguist.qdocconf +++ b/tools/qdoc3/test/linguist.qdocconf @@ -13,11 +13,11 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Linguist qhp.Linguist.file = linguist.qhp -qhp.Linguist.namespace = com.trolltech.linguist.450 +qhp.Linguist.namespace = com.trolltech.linguist.451 qhp.Linguist.virtualFolder = qdoc qhp.Linguist.indexTitle = Qt Linguist Manual qhp.Linguist.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png -qhp.Linguist.filterAttributes = qt 4.5.0 tools linguist +qhp.Linguist.filterAttributes = qt 4.5.1 tools linguist qhp.Linguist.customFilters.Linguist.name = Qt Linguist Manual qhp.Linguist.customFilters.Linguist.filterAttributes = qt tools linguist qhp.Linguist.subprojects = manual examples diff --git a/tools/qdoc3/test/qmake.qdocconf b/tools/qdoc3/test/qmake.qdocconf index c357cfb..d236f81 100644 --- a/tools/qdoc3/test/qmake.qdocconf +++ b/tools/qdoc3/test/qmake.qdocconf @@ -13,11 +13,11 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = qmake qhp.qmake.file = qmake.qhp -qhp.qmake.namespace = com.trolltech.qmake.450 +qhp.qmake.namespace = com.trolltech.qmake.451 qhp.qmake.virtualFolder = qdoc qhp.qmake.indexTitle = QMake Manual qhp.qmake.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png -qhp.qmake.filterAttributes = qt 4.5.0 tools qmake +qhp.qmake.filterAttributes = qt 4.5.1 tools qmake qhp.qmake.customFilters.qmake.name = qmake Manual qhp.qmake.customFilters.qmake.filterAttributes = qt tools qmake qhp.qmake.subprojects = manual diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf index 25cdc5a..e6edb29 100644 --- a/tools/qdoc3/test/qt-build-docs.qdocconf +++ b/tools/qdoc3/test/qt-build-docs.qdocconf @@ -20,10 +20,10 @@ edition.DesktopLight.groups = -graphicsview-api qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.450 +qhp.Qt.namespace = com.trolltech.qt.451 qhp.Qt.virtualFolder = qdoc qhp.Qt.indexTitle = Qt Reference Documentation -qhp.Qt.indexRoot = +qhp.Qt.indexRoot = # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML @@ -33,11 +33,11 @@ qhp.Qt.extraFiles = classic.css \ images/taskmenuextension-example.png \ images/coloreditorfactoryimage.png \ images/dynamiclayouts-example.png \ - images/stylesheet-coffee-plastique.png + images/stylesheet-coffee-plastique.png -qhp.Qt.filterAttributes = qt 4.5.0 qtrefdoc -qhp.Qt.customFilters.Qt.name = Qt 4.5.0 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.0 +qhp.Qt.filterAttributes = qt 4.5.1 qtrefdoc +qhp.Qt.customFilters.Qt.name = Qt 4.5.1 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.1 qhp.Qt.subprojects = classes overviews examples qhp.Qt.subprojects.classes.title = Classes qhp.Qt.subprojects.classes.indexTitle = Qt's Classes diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf index 4d401a4..aa1088e 100644 --- a/tools/qdoc3/test/qt.qdocconf +++ b/tools/qdoc3/test/qt.qdocconf @@ -25,7 +25,7 @@ qhp.Qt.file = qt.qhp qhp.Qt.namespace = com.trolltech.qt.451 qhp.Qt.virtualFolder = qdoc qhp.Qt.indexTitle = Qt Reference Documentation -qhp.Qt.indexRoot = +qhp.Qt.indexRoot = # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML @@ -35,11 +35,11 @@ qhp.Qt.extraFiles = classic.css \ images/taskmenuextension-example.png \ images/coloreditorfactoryimage.png \ images/dynamiclayouts-example.png \ - images/stylesheet-coffee-plastique.png + images/stylesheet-coffee-plastique.png -qhp.Qt.filterAttributes = qt 4.5.0 qtrefdoc -qhp.Qt.customFilters.Qt.name = Qt 4.5.0 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.0 +qhp.Qt.filterAttributes = qt 4.5.1 qtrefdoc +qhp.Qt.customFilters.Qt.name = Qt 4.5.1 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.5.1 qhp.Qt.subprojects = classes overviews examples qhp.Qt.subprojects.classes.title = Classes qhp.Qt.subprojects.classes.indexTitle = Qt's Classes -- cgit v0.12 From 6a3735a47de8a9851e7795cf023d95d81867260d Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Tue, 21 Apr 2009 13:38:30 +0200 Subject: BT: Fix lock-up & crash in the Elastic Nodes example Ensure that we don't divide by 0 when two nodes are exactly on top of each other. Reviewed-by: Alexis Reviewed-by: Joao --- examples/graphicsview/elasticnodes/edge.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/examples/graphicsview/elasticnodes/edge.cpp b/examples/graphicsview/elasticnodes/edge.cpp index 4018c25..e32a35a 100644 --- a/examples/graphicsview/elasticnodes/edge.cpp +++ b/examples/graphicsview/elasticnodes/edge.cpp @@ -93,11 +93,16 @@ void Edge::adjust() QLineF line(mapFromItem(source, 0, 0), mapFromItem(dest, 0, 0)); qreal length = line.length(); - QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length); prepareGeometryChange(); - sourcePoint = line.p1() + edgeOffset; - destPoint = line.p2() - edgeOffset; + + if (!qFuzzyCompare(length, qreal(0.0))) { + QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length); + sourcePoint = line.p1() + edgeOffset; + destPoint = line.p2() - edgeOffset; + } else { + sourcePoint = destPoint = line.p1(); + } } QRectF Edge::boundingRect() const -- cgit v0.12 From b050659c691626bc46ef9ba87a934d06add7f39c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Tue, 21 Apr 2009 13:41:04 +0200 Subject: Fixed typos 'indended' -> 'intended' --- src/gui/math3d/qgenericmatrix.cpp | 6 +++--- src/gui/math3d/qmatrix4x4.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gui/math3d/qgenericmatrix.cpp b/src/gui/math3d/qgenericmatrix.cpp index 734c1e6..a77ca42 100644 --- a/src/gui/math3d/qgenericmatrix.cpp +++ b/src/gui/math3d/qgenericmatrix.cpp @@ -224,7 +224,7 @@ QT_BEGIN_NAMESPACE /*! \fn InnerT *QGenericMatrix::data() - Returns a pointer to the raw data of this matrix. This is indended + Returns a pointer to the raw data of this matrix. This is intended for use with raw GL functions. \sa constData() @@ -234,7 +234,7 @@ QT_BEGIN_NAMESPACE \fn const InnerT *QGenericMatrix::data() const Returns a constant pointer to the raw data of this matrix. - This is indended for use with raw GL functions. + This is intended for use with raw GL functions. \sa constData() */ @@ -243,7 +243,7 @@ QT_BEGIN_NAMESPACE \fn const InnerT *QGenericMatrix::constData() const Returns a constant pointer to the raw data of this matrix. - This is indended for use with raw GL functions. + This is intended for use with raw GL functions. \sa data() */ diff --git a/src/gui/math3d/qmatrix4x4.cpp b/src/gui/math3d/qmatrix4x4.cpp index 649532d..a8dabf3 100644 --- a/src/gui/math3d/qmatrix4x4.cpp +++ b/src/gui/math3d/qmatrix4x4.cpp @@ -1435,7 +1435,7 @@ QTransform QMatrix4x4::toTransform() const /*! \fn float *QMatrix4x4::data() - Returns a pointer to the raw data of this matrix. This is indended + Returns a pointer to the raw data of this matrix. This is intended for use with raw GL functions. \sa constData(), inferSpecialType() @@ -1445,7 +1445,7 @@ QTransform QMatrix4x4::toTransform() const \fn const float *QMatrix4x4::data() const Returns a constant pointer to the raw data of this matrix. - This is indended for use with raw GL functions. + This is intended for use with raw GL functions. \sa constData() */ @@ -1454,7 +1454,7 @@ QTransform QMatrix4x4::toTransform() const \fn const float *QMatrix4x4::constData() const Returns a constant pointer to the raw data of this matrix. - This is indended for use with raw GL functions. + This is intended for use with raw GL functions. \sa data() */ -- cgit v0.12 From df9977ebce528047c39d5cf35f452bb2f42cf2e9 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Tue, 21 Apr 2009 14:00:38 +0200 Subject: Fixed a flicker when switching current source in Phonon::MediaObject Task-number: 251776 --- src/3rdparty/phonon/ds9/mediaobject.cpp | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/3rdparty/phonon/ds9/mediaobject.cpp b/src/3rdparty/phonon/ds9/mediaobject.cpp index 93a19b0..1d0b69d 100644 --- a/src/3rdparty/phonon/ds9/mediaobject.cpp +++ b/src/3rdparty/phonon/ds9/mediaobject.cpp @@ -519,6 +519,15 @@ namespace Phonon qSwap(m_graphs[0], m_graphs[1]); //swap the graphs + if (currentGraph()->mediaSource().type() != Phonon::MediaSource::Invalid && + catchComError(currentGraph()->renderResult())) { + setState(Phonon::ErrorState); + return; + } + + //we need to play the next media + play(); + //we tell the video widgets to switch now to the new source #ifndef QT_NO_PHONON_VIDEO for (int i = 0; i < m_videoWidgets.count(); ++i) { @@ -527,15 +536,6 @@ namespace Phonon #endif //QT_NO_PHONON_VIDEO emit currentSourceChanged(currentGraph()->mediaSource()); - - if (currentGraph()->isLoading()) { - //will simply tell that when loading is finished - //it should start the playback - play(); - } - - - emit metaDataChanged(currentGraph()->metadata()); if (nextGraph()->hasVideo() != currentGraph()->hasVideo()) { @@ -548,15 +548,6 @@ namespace Phonon #ifndef QT_NO_PHONON_MEDIACONTROLLER setTitles(currentGraph()->titles()); #endif //QT_NO_PHONON_MEDIACONTROLLER - - //this manages only gapless transitions - if (currentGraph()->mediaSource().type() != Phonon::MediaSource::Invalid) { - if (catchComError(currentGraph()->renderResult())) { - setState(Phonon::ErrorState); - } else { - play(); - } - } } Phonon::State MediaObject::state() const -- cgit v0.12 From 49b4685a185f6932bcf4c685dc211cf2c4a3dddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Tue, 21 Apr 2009 14:52:11 +0200 Subject: Fix a problem where QPrintDialog/Unix didn't update print-to-file states. Setting a QPrinter to print to e.g. a PDF file and then passing the QPrinter object to a QPrintDialog didn't update the printer combobox and filename lineedit states correctly. Task-number: 224728 Reviewed-by: Samuel --- src/gui/dialogs/qprintdialog_unix.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/dialogs/qprintdialog_unix.cpp b/src/gui/dialogs/qprintdialog_unix.cpp index 76c22d0..87a4e65 100644 --- a/src/gui/dialogs/qprintdialog_unix.cpp +++ b/src/gui/dialogs/qprintdialog_unix.cpp @@ -727,7 +727,9 @@ void QUnixPrintWidgetPrivate::updateWidget() widget.printers->removeItem(widget.printers->count()-1); // remove separator filePrintersAdded = false; } - if (printer && filePrintersAdded && printer->printerName().isEmpty()) { + if (printer && filePrintersAdded && (printer->outputFormat() != QPrinter::NativeFormat + || printer->printerName().isEmpty())) + { if (printer->outputFormat() == QPrinter::PdfFormat) widget.printers->setCurrentIndex(widget.printers->count() - 2); else if (printer->outputFormat() == QPrinter::PostScriptFormat) -- cgit v0.12 From 95b7c50e503dd4743e22c35f341aa31105ea7d73 Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Tue, 21 Apr 2009 15:25:51 +0200 Subject: We don't need to call two times itemChange when an item is deleted. Previously we were calling two times itemChange on the parent to give QGraphicsItem::ItemChildAddedChange. We don't need that. One is enough. BT : yes Task-number: BT Reviewed-by: Andreas --- src/gui/graphicsview/qgraphicsscene.cpp | 6 ----- tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 35 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index 9881960..b75c422 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -697,12 +697,6 @@ void QGraphicsScenePrivate::_q_removeItemLater(QGraphicsItem *item) { Q_Q(QGraphicsScene); - if (QGraphicsItem *parent = item->d_func()->parent) { - parent->itemChange(QGraphicsItem::ItemChildRemovedChange, - qVariantFromValue(item)); - parent->d_func()->children.removeAll(item); - } - // Clear focus on the item to remove any reference in the focusWidget // chain. item->clearFocus(); diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 5565aa6..583a959 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -3654,6 +3654,8 @@ void tst_QGraphicsItem::defaultItemTest_QGraphicsEllipseItem() class ItemChangeTester : public QGraphicsRectItem { public: + ItemChangeTester(){} + ItemChangeTester(QGraphicsItem *parent) : QGraphicsRectItem(parent) {} QVariant itemChangeReturnValue; QGraphicsScene *itemSceneChangeTargetScene; @@ -3928,6 +3930,39 @@ void tst_QGraphicsItem::itemChange() QCOMPARE(tester.changes.size(), ++changeCount); QCOMPARE(tester.changes.last(), QGraphicsItem::ItemChildRemovedChange); QCOMPARE(qVariantValue(tester.values.last()), (QGraphicsItem *)&testerHelper); + + // ItemChildRemovedChange 1 + ItemChangeTester *test = new ItemChangeTester; + test->itemSceneChangeTargetScene = 0; + int count = 0; + QGraphicsScene *scene = new QGraphicsScene; + scene->addItem(test); + count = test->changes.size(); + //We test here the fact that when a child is deleted the parent receive only one ItemChildRemovedChange + QGraphicsRectItem *child = new QGraphicsRectItem(test); + //We received ItemChildAddedChange + QCOMPARE(test->changes.size(), ++count); + QCOMPARE(test->changes.last(), QGraphicsItem::ItemChildAddedChange); + delete child; + child = 0; + QCOMPARE(test->changes.size(), ++count); + QCOMPARE(test->changes.last(), QGraphicsItem::ItemChildRemovedChange); + + ItemChangeTester *childTester = new ItemChangeTester(test); + //Changes contains all sceneHasChanged and so on, we don't want to test that + int childCount = childTester->changes.size(); + //We received ItemChildAddedChange + QCOMPARE(test->changes.size(), ++count); + child = new QGraphicsRectItem(childTester); + //We received ItemChildAddedChange + QCOMPARE(childTester->changes.size(), ++childCount); + QCOMPARE(childTester->changes.last(), QGraphicsItem::ItemChildAddedChange); + //Delete the child of the top level with all its children + delete childTester; + //Only one removal + QCOMPARE(test->changes.size(), ++count); + QCOMPARE(test->changes.last(), QGraphicsItem::ItemChildRemovedChange); + delete scene; } { // ItemChildRemovedChange 2 -- cgit v0.12 From 924feac07729b680fbd337e3773c747b64e1da61 Mon Sep 17 00:00:00 2001 From: Norwegian Rock Cat Date: Tue, 21 Apr 2009 15:50:18 +0200 Subject: BT: Make things work on 10.3 The #ifdef was typed wrong. Reviewed-by: Prasanth Ullattil --- src/gui/kernel/qt_mac.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/kernel/qt_mac.cpp b/src/gui/kernel/qt_mac.cpp index b1247e8..44e10a8 100644 --- a/src/gui/kernel/qt_mac.cpp +++ b/src/gui/kernel/qt_mac.cpp @@ -131,7 +131,7 @@ QColor qcolorForTheme(ThemeBrush brush) QColor qcolorForThemeTextColor(ThemeTextColor themeColor) { -#ifdef QT_OS_MAC32 +#ifdef Q_OS_MAC32 RGBColor c; GetThemeTextColor(themeColor, 32, true, &c); QColor color = QColor(c.red / 265, c.green / 256, c.blue / 256); -- cgit v0.12 From 08feb22f9a924ce120da8b5c6e1669d2a630dd54 Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Tue, 21 Apr 2009 15:57:05 +0200 Subject: BT: Fix update regression for cached QGraphicsItem (Elastic Nodes stuck) This fixes a bug in 4.5.0 where cached items that call update() after they have been moved or transformed failed to get a call to paint(), so the last cache image was used to draw. The easiest way to reproduce this bug is in the Elastic Nodes example. If you press, wait, then release, the nodes will consistently move to sunken state, then back to normal state. But if you click quickly while moving the mouse, the nodes will stay sunken. The bug was that the item was marked as dirty as a result of being moved, and when the mouse button was released, the node item's call to update() was discarded, as the item was "already dirty". The fix is to allow invalidation of the cache even if the item is marked as dirty. Reviewed-by: bnilsen --- src/gui/graphicsview/qgraphicsitem.cpp | 14 ++++++++- tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 42 ++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index d1b8393..3e8d38f 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -3950,17 +3950,29 @@ bool QGraphicsItemPrivate::isProxyWidget() const */ void QGraphicsItem::update(const QRectF &rect) { - if ((rect.isEmpty() && !rect.isNull()) || d_ptr->discardUpdateRequest()) + if (rect.isEmpty() && !rect.isNull()) return; if (CacheMode(d_ptr->cacheMode) != NoCache) { QGraphicsItemCache *cache = d_ptr->extraItemCache(); + if (d_ptr->discardUpdateRequest(/* ignoreVisibleBit = */ false, + /* ignoreClipping = */ false, + /* ignoreDirtyBit = */ true)) { + return; + } + + // Invalidate cache. if (rect.isNull()) { cache->allExposed = true; cache->exposed.clear(); } else { cache->exposed.append(rect); } + // Only invalidate cache; item is already dirty. + if (d_ptr->dirty) + return; + } else if (d_ptr->discardUpdateRequest()) { + return; } // Effectively the same as updateHelper(rect); diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 583a959..77b7948 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -214,6 +214,7 @@ private slots: void tabChangesFocus(); void tabChangesFocus_data(); void cacheMode(); + void updateCachedItemAfterMove(); // task specific tests below me void task141694_textItemEnsureVisible(); @@ -6073,5 +6074,46 @@ void tst_QGraphicsItem::cacheMode() QCOMPARE(testerChild2->repaints, 6); } +void tst_QGraphicsItem::updateCachedItemAfterMove() +{ + // A simple item that uses ItemCoordinateCache + EventTester *tester = new EventTester; + tester->setCacheMode(QGraphicsItem::ItemCoordinateCache); + + // Add to a scene, show in a view, ensure it's painted and reset its + // repaint counter. + QGraphicsScene scene; + scene.addItem(tester); + QGraphicsView view(&scene); + view.show(); +#ifdef Q_WS_X11 + qt_x11_wait_for_window_manager(&view); +#endif + QTest::qWait(125); + tester->repaints = 0; + + // Move the item, should not cause repaints + tester->setPos(10, 0); + QTest::qWait(125); + QCOMPARE(tester->repaints, 0); + + // Move then update, should cause one repaint + tester->setPos(20, 0); + tester->update(); + QTest::qWait(125); + QCOMPARE(tester->repaints, 1); + + // Hiding the item doesn't cause a repaint + tester->hide(); + QTest::qWait(125); + QCOMPARE(tester->repaints, 1); + + // Moving a hidden item doesn't cause a repaint + tester->setPos(30, 0); + tester->update(); + QTest::qWait(125); + QCOMPARE(tester->repaints, 1); +} + QTEST_MAIN(tst_QGraphicsItem) #include "tst_qgraphicsitem.moc" -- cgit v0.12 From 183cb6052c45d7c83e36c78da4e2c59c768209c7 Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Tue, 21 Apr 2009 16:05:42 +0200 Subject: BT: Revert "Fixes: Don't fill the pixmap because we will copy the cache into it." This reverts commit 0985805ab3c7de5b15c115a98afb15944b6d93b9. The Elastic Nodes example shows a black background for the cache pixmap if the call to fill isn't there. Alexis and I both agree that it makes no sense that we fill the pixmap with transparent pixels instead of just drawing with QPainter::CompositionMode_Source, but since this regression was introduced after 4.5.0 was released we must revert before we investigate further. Reviewed-by: Alexis --- src/gui/graphicsview/qgraphicsscene.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index b75c422..13f70e5 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -4890,9 +4890,11 @@ void QGraphicsScenePrivate::drawItemHelper(QGraphicsItem *item, QPainter *painte if (newCacheIndent != deviceData->cacheIndent || deviceRect.size() != pix.size()) { QPoint diff = newCacheIndent - deviceData->cacheIndent; QPixmap newPix(deviceRect.size()); + // ### Investigate removing this fill (test with Plasma and + // graphicssystem raster). + newPix.fill(Qt::transparent); if (!pix.isNull()) { QPainter newPixPainter(&newPix); - newPixPainter.setCompositionMode(QPainter::CompositionMode_Source); newPixPainter.drawPixmap(-diff, pix); newPixPainter.end(); } -- cgit v0.12 From e6f48d43307326e14146a9d3d184d784d6ee8a4c Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Tue, 21 Apr 2009 17:15:18 +0200 Subject: Fix Q3FileDialog bug that make impossible to rename twice a file The line edit (to rename the file) contains a guard to avoid double emit when the editing is finished but this flag was not set back properly so it was making the line edit not usable afterwards. Task-number: 251779 Reviewed-by: bnilsen --- src/qt3support/dialogs/q3filedialog.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/qt3support/dialogs/q3filedialog.cpp b/src/qt3support/dialogs/q3filedialog.cpp index 4874b6d..1ec0cfc 100644 --- a/src/qt3support/dialogs/q3filedialog.cpp +++ b/src/qt3support/dialogs/q3filedialog.cpp @@ -631,6 +631,7 @@ public: protected: void keyPressEvent(QKeyEvent *e); void focusOutEvent(QFocusEvent *e); + void emitDoRename(); signals: void cancelRename(); @@ -1143,16 +1144,20 @@ void QRenameEdit::keyPressEvent(QKeyEvent *e) void QRenameEdit::focusOutEvent(QFocusEvent *) { - if (!doRenameAlreadyEmitted) { - doRenameAlreadyEmitted = true; - emit doRename(); - } + if (!doRenameAlreadyEmitted) + emitDoRename(); } void QRenameEdit::slotReturnPressed() { + emitDoRename(); +} + +void QRenameEdit::emitDoRename() +{ doRenameAlreadyEmitted = true; emit doRename(); + doRenameAlreadyEmitted = false; } /************************************************************************ -- cgit v0.12 From 0b3ef41cdc8fef79d184e91d2542cc34f7dec5e1 Mon Sep 17 00:00:00 2001 From: kh Date: Tue, 21 Apr 2009 17:31:08 +0200 Subject: Fix incorrect year and version number in assistant docs. Should have been part of 8aa8997f18afb85cb17f5b2a875a004302df4c72 Sorry the HOWTO file was not entirely clear that the *.qch needs to be updated too. Task-number: 251421 Reviewed-by: kh --- tools/assistant/tools/assistant/assistant.qch | Bin 366592 -> 368640 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/assistant/tools/assistant/assistant.qch b/tools/assistant/tools/assistant/assistant.qch index 550cd89..64763f7 100644 Binary files a/tools/assistant/tools/assistant/assistant.qch and b/tools/assistant/tools/assistant/assistant.qch differ -- cgit v0.12 From c36ff16f66ffd65839ba1e254ac557e491db6bf4 Mon Sep 17 00:00:00 2001 From: kh Date: Tue, 21 Apr 2009 18:00:04 +0200 Subject: correct the HowTo Task-number: none Reviewed-by: kh --- tools/assistant/tools/assistant/doc/HOWTO | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/assistant/tools/assistant/doc/HOWTO b/tools/assistant/tools/assistant/doc/HOWTO index 0e5b67b..a014347 100644 --- a/tools/assistant/tools/assistant/doc/HOWTO +++ b/tools/assistant/tools/assistant/doc/HOWTO @@ -1,9 +1,8 @@ How to build/ update a new assistant.qch for Assistant internal help -- in case of update: +- update: - open assistant.qdocconf, update year and qt version -- all other cases: - ..\..\..\..\qdoc3\debug\qdoc3.exe assistant.qdocconf will generate an folder html containing all required stuff @@ -12,6 +11,6 @@ How to build/ update a new assistant.qch for Assistant internal help - rebuild assistant -- to test you changes: +- to test your changes: - remove assistant.qch in your cache directory - restart assistant -- cgit v0.12 From 4f64ff3e8902529700336c7ad3aa9fccf5ca3e0b Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 21 Apr 2009 18:17:06 +0200 Subject: Add license headers for these two files, which are new in 4.6 and didn't have it --- .../auto/qprocess/testProcessEnvironment/main.cpp | 34 ++++++++++++++++++++++ tests/auto/selftests/xunit/tst_xunit.cpp | 34 ++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/tests/auto/qprocess/testProcessEnvironment/main.cpp b/tests/auto/qprocess/testProcessEnvironment/main.cpp index 098d13e..b5e75bc 100644 --- a/tests/auto/qprocess/testProcessEnvironment/main.cpp +++ b/tests/auto/qprocess/testProcessEnvironment/main.cpp @@ -3,6 +3,40 @@ ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** Contact: Qt Software Information (qt-info@nokia.com) ** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** ****************************************************************************/ #include diff --git a/tests/auto/selftests/xunit/tst_xunit.cpp b/tests/auto/selftests/xunit/tst_xunit.cpp index b42582e..d0b585f 100644 --- a/tests/auto/selftests/xunit/tst_xunit.cpp +++ b/tests/auto/selftests/xunit/tst_xunit.cpp @@ -3,6 +3,40 @@ ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). ** Contact: Qt Software Information (qt-info@nokia.com) ** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@nokia.com. +** $QT_END_LICENSE$ +** ****************************************************************************/ #include -- cgit v0.12 From 161f51a1167ea95414b88195f61753047ca4a708 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Wed, 28 Jan 2009 10:36:53 -0800 Subject: Fix some keyboard issues Without this patch Alt-modifiers doesn't work. The extra mappings are needed for certain keys to work right on atleast one known DirectFB implementation/hardware combination. Reviewed-by: Donald --- .../gfxdrivers/directfb/qdirectfbkeyboard.cpp | 130 ++++++++++++++++++--- 1 file changed, 112 insertions(+), 18 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp index cd19f69..368b9f9 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp @@ -173,6 +173,22 @@ void QDirectFBKeyboardHandlerPrivate::readKeyboardData() Qt::KeyboardModifiers modifiers = Qt::NoModifier; + // Not implemented: + // if (input.modifiers & DIMM_SUPER) + // if (input.modifiers & DIMM_HYPER) + + if (!(input.flags & DIEF_KEYSYMBOL) || + !(input.flags & DIEF_KEYID) || + !(input.type & (DIET_KEYPRESS|DIET_KEYRELEASE))) + { + static bool first = true; + if (first) { + qWarning("QDirectFBKeyboardHandler - Getting unexpected non-keyboard related events"); + first = false; + } + break; + } + if (input.flags & DIEF_MODIFIERS) { if (input.modifiers & DIMM_SHIFT) modifiers |= Qt::ShiftModifier; @@ -185,31 +201,15 @@ void QDirectFBKeyboardHandlerPrivate::readKeyboardData() if (input.modifiers & DIMM_META) modifiers |= Qt::MetaModifier; } - // Not implemented: - // if (input.modifiers & DIMM_SUPER) - // if (input.modifiers & DIMM_HYPER) - if ( !(input.flags & DIEF_KEYSYMBOL) || - !(input.flags & DIEF_KEYID) || - !(input.type & (DIET_KEYPRESS | DIET_KEYRELEASE)) ) - { - static int warningCount = 0; - if (!warningCount) { - qWarning("QDirectFBKeyboardHandler - Getting unexpected non-keyboard related events"); - warningCount = 100; - } - else - warningCount--; - break; - } - bool press = input.type & DIET_KEYPRESS; + const bool press = input.type & DIET_KEYPRESS; DFBInputDeviceKeySymbol symbol = input.key_symbol; int unicode = -1; int keycode = 0; keycode = keymap()->value(symbol); - if (keycode == 0 && DFB_KEY_TYPE(symbol) == DIKT_UNICODE) + if (DFB_KEY_TYPE(symbol) == DIKT_UNICODE) unicode = symbol; if (unicode != -1 || keycode != 0) { @@ -314,6 +314,100 @@ KeyMap::KeyMap() insert(DIKS_DEAD_SEMIVOICED_SOUND , Qt::Key_Dead_Semivoiced_Sound); insert(DIKS_DEAD_TILDE , Qt::Key_Dead_Tilde); insert(DIKS_DEAD_VOICED_SOUND , Qt::Key_Dead_Voiced_Sound); + insert(DIKS_SPACE , Qt::Key_Space); + insert(DIKS_EXCLAMATION_MARK , Qt::Key_Exclam); + insert(DIKS_QUOTATION , Qt::Key_QuoteDbl); + insert(DIKS_NUMBER_SIGN , Qt::Key_NumberSign); + insert(DIKS_DOLLAR_SIGN , Qt::Key_Dollar); + insert(DIKS_PERCENT_SIGN , Qt::Key_Percent); + insert(DIKS_AMPERSAND , Qt::Key_Ampersand); + insert(DIKS_APOSTROPHE , Qt::Key_Apostrophe); + insert(DIKS_PARENTHESIS_LEFT , Qt::Key_ParenLeft); + insert(DIKS_PARENTHESIS_RIGHT , Qt::Key_ParenRight); + insert(DIKS_ASTERISK , Qt::Key_Asterisk); + insert(DIKS_PLUS_SIGN , Qt::Key_Plus); + insert(DIKS_COMMA , Qt::Key_Comma); + insert(DIKS_MINUS_SIGN , Qt::Key_Minus); + insert(DIKS_PERIOD , Qt::Key_Period); + insert(DIKS_SLASH , Qt::Key_Slash); + insert(DIKS_0 , Qt::Key_0); + insert(DIKS_1 , Qt::Key_1); + insert(DIKS_2 , Qt::Key_2); + insert(DIKS_3 , Qt::Key_3); + insert(DIKS_4 , Qt::Key_4); + insert(DIKS_5 , Qt::Key_5); + insert(DIKS_6 , Qt::Key_6); + insert(DIKS_7 , Qt::Key_7); + insert(DIKS_8 , Qt::Key_8); + insert(DIKS_9 , Qt::Key_9); + insert(DIKS_COLON , Qt::Key_Colon); + insert(DIKS_SEMICOLON , Qt::Key_Semicolon); + insert(DIKS_LESS_THAN_SIGN , Qt::Key_Less); + insert(DIKS_EQUALS_SIGN , Qt::Key_Equal); + insert(DIKS_GREATER_THAN_SIGN , Qt::Key_Greater); + insert(DIKS_QUESTION_MARK , Qt::Key_Question); + insert(DIKS_AT , Qt::Key_At); + insert(DIKS_CAPITAL_A , Qt::Key_A); + insert(DIKS_CAPITAL_B , Qt::Key_B); + insert(DIKS_CAPITAL_C , Qt::Key_C); + insert(DIKS_CAPITAL_D , Qt::Key_D); + insert(DIKS_CAPITAL_E , Qt::Key_E); + insert(DIKS_CAPITAL_F , Qt::Key_F); + insert(DIKS_CAPITAL_G , Qt::Key_G); + insert(DIKS_CAPITAL_H , Qt::Key_H); + insert(DIKS_CAPITAL_I , Qt::Key_I); + insert(DIKS_CAPITAL_J , Qt::Key_J); + insert(DIKS_CAPITAL_K , Qt::Key_K); + insert(DIKS_CAPITAL_L , Qt::Key_L); + insert(DIKS_CAPITAL_M , Qt::Key_M); + insert(DIKS_CAPITAL_N , Qt::Key_N); + insert(DIKS_CAPITAL_O , Qt::Key_O); + insert(DIKS_CAPITAL_P , Qt::Key_P); + insert(DIKS_CAPITAL_Q , Qt::Key_Q); + insert(DIKS_CAPITAL_R , Qt::Key_R); + insert(DIKS_CAPITAL_S , Qt::Key_S); + insert(DIKS_CAPITAL_T , Qt::Key_T); + insert(DIKS_CAPITAL_U , Qt::Key_U); + insert(DIKS_CAPITAL_V , Qt::Key_V); + insert(DIKS_CAPITAL_W , Qt::Key_W); + insert(DIKS_CAPITAL_X , Qt::Key_X); + insert(DIKS_CAPITAL_Y , Qt::Key_Y); + insert(DIKS_CAPITAL_Z , Qt::Key_Z); + insert(DIKS_SQUARE_BRACKET_LEFT , Qt::Key_BracketLeft); + insert(DIKS_BACKSLASH , Qt::Key_Backslash); + insert(DIKS_SQUARE_BRACKET_RIGHT , Qt::Key_BracketRight); + insert(DIKS_CIRCUMFLEX_ACCENT , Qt::Key_AsciiCircum); + insert(DIKS_UNDERSCORE , Qt::Key_Underscore); + insert(DIKS_SMALL_A , Qt::Key_A); + insert(DIKS_SMALL_B , Qt::Key_B); + insert(DIKS_SMALL_C , Qt::Key_C); + insert(DIKS_SMALL_D , Qt::Key_D); + insert(DIKS_SMALL_E , Qt::Key_E); + insert(DIKS_SMALL_F , Qt::Key_F); + insert(DIKS_SMALL_G , Qt::Key_G); + insert(DIKS_SMALL_H , Qt::Key_H); + insert(DIKS_SMALL_I , Qt::Key_I); + insert(DIKS_SMALL_J , Qt::Key_J); + insert(DIKS_SMALL_K , Qt::Key_K); + insert(DIKS_SMALL_L , Qt::Key_L); + insert(DIKS_SMALL_M , Qt::Key_M); + insert(DIKS_SMALL_N , Qt::Key_N); + insert(DIKS_SMALL_O , Qt::Key_O); + insert(DIKS_SMALL_P , Qt::Key_P); + insert(DIKS_SMALL_Q , Qt::Key_Q); + insert(DIKS_SMALL_R , Qt::Key_R); + insert(DIKS_SMALL_S , Qt::Key_S); + insert(DIKS_SMALL_T , Qt::Key_T); + insert(DIKS_SMALL_U , Qt::Key_U); + insert(DIKS_SMALL_V , Qt::Key_V); + insert(DIKS_SMALL_W , Qt::Key_W); + insert(DIKS_SMALL_X , Qt::Key_X); + insert(DIKS_SMALL_Y , Qt::Key_Y); + insert(DIKS_SMALL_Z , Qt::Key_Z); + insert(DIKS_CURLY_BRACKET_LEFT , Qt::Key_BraceLeft); + insert(DIKS_VERTICAL_BAR , Qt::Key_Bar); + insert(DIKS_CURLY_BRACKET_RIGHT , Qt::Key_BraceRight); + insert(DIKS_TILDE , Qt::Key_AsciiTilde); } #include "qdirectfbkeyboard.moc" -- cgit v0.12 From 0ded26da02d0786b08e2bf52a7e68abf7c4c8701 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Wed, 22 Apr 2009 08:56:00 +1000 Subject: Fixes unit tests always giving 0 exit code when Qt is configured with `-developer-build'. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was an undocumented hack to make it easier for our autotest scripts to detect crashes in unit tests. Going forward, it should not be required. Reviewed-by: Shane Bradley Acked-by: Jesper Thomschütz --- src/testlib/qtestcase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index f17d95d..b5200dc 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -1481,7 +1481,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv) } #endif -#if defined(QTEST_NOEXITCODE) || (defined(QT_BUILD_INTERNAL) && !defined(QTEST_FORCE_EXITCODE)) +#if defined(QTEST_NOEXITCODE) return 0; #else -- cgit v0.12 From dade8b3a709d6889e049f8a20de5378e7bb28beb Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Wed, 22 Apr 2009 08:27:59 +0200 Subject: Fix the code snippet for executing a test, it should be CONFIG not QT Task-number: 251848 Reviewed-by: TrustMe --- doc/src/snippets/code/doc_src_qtestlib.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/snippets/code/doc_src_qtestlib.qdoc b/doc/src/snippets/code/doc_src_qtestlib.qdoc index ff52b2f..494fa10 100644 --- a/doc/src/snippets/code/doc_src_qtestlib.qdoc +++ b/doc/src/snippets/code/doc_src_qtestlib.qdoc @@ -61,7 +61,7 @@ void TestQString::toUpper() //! [9] -/myTestDirectory$ qmake -project "QT += testlib" +/myTestDirectory$ qmake -project "CONFIG += testlib" /myTestDirectory$ qmake /myTestDirectory$ make //! [9] -- cgit v0.12 From e5fa2cf55c8370ca58f82ba1ef37a54649bd42c8 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Wed, 22 Apr 2009 08:32:21 +0200 Subject: Fix my previous commit since I missed the q out of qtestlib Task-number: 251848 Reviewed-by: TrustMe --- doc/src/snippets/code/doc_src_qtestlib.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/snippets/code/doc_src_qtestlib.qdoc b/doc/src/snippets/code/doc_src_qtestlib.qdoc index 494fa10..a0e4944 100644 --- a/doc/src/snippets/code/doc_src_qtestlib.qdoc +++ b/doc/src/snippets/code/doc_src_qtestlib.qdoc @@ -61,7 +61,7 @@ void TestQString::toUpper() //! [9] -/myTestDirectory$ qmake -project "CONFIG += testlib" +/myTestDirectory$ qmake -project "CONFIG += qtestlib" /myTestDirectory$ qmake /myTestDirectory$ make //! [9] -- cgit v0.12 From 9792ddf1e5d3f5e6713765b53ea031fa4e6eff4e Mon Sep 17 00:00:00 2001 From: Alexis Menard Date: Wed, 22 Apr 2009 09:30:00 +0200 Subject: Fix double entries in the sidebar of QFileDialog The problem is QUrl == operator is case sensitive. On Windows we don't want double entries for C:\dev or c:\dev so i convert the url in lower case and compare them (on Windows only) to avoid duplicate entries. Task-number:226483 Reviewed-by:jasplin --- src/gui/dialogs/qsidebar.cpp | 4 ++++ tests/auto/qsidebar/tst_qsidebar.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/gui/dialogs/qsidebar.cpp b/src/gui/dialogs/qsidebar.cpp index bfdb37e..26108d7 100644 --- a/src/gui/dialogs/qsidebar.cpp +++ b/src/gui/dialogs/qsidebar.cpp @@ -248,7 +248,11 @@ void QUrlModel::addUrls(const QList &list, int row, bool move) if (!url.isValid() || url.scheme() != QLatin1String("file")) continue; for (int j = 0; move && j < rowCount(); ++j) { +#if defined(Q_OS_WIN) + if (index(j, 0).data(UrlRole).toUrl().toLocalFile().toLower() == url.toLocalFile().toLower()) { +#else if (index(j, 0).data(UrlRole) == url) { +#endif removeRow(j); if (j <= row) row--; diff --git a/tests/auto/qsidebar/tst_qsidebar.cpp b/tests/auto/qsidebar/tst_qsidebar.cpp index 7a262e6..705e222 100644 --- a/tests/auto/qsidebar/tst_qsidebar.cpp +++ b/tests/auto/qsidebar/tst_qsidebar.cpp @@ -176,6 +176,32 @@ void tst_QSidebar::addUrls() qsidebar.addUrls(urls, -1); qsidebar.addUrls(moreUrls, -1); QCOMPARE(qsidebar.urls()[0], urls[0]); + + QList doubleUrls; + //tow exact same paths, we have only one entry + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath()); + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath()); + qsidebar.setUrls(emptyUrls); + qsidebar.addUrls(doubleUrls, 1); + QCOMPARE(qsidebar.urls().size(), 1); + +#if defined(Q_OS_WIN) + //Windows is case insensitive so no duplicate entries in that case + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath()); + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath().toUpper()); + qsidebar.setUrls(emptyUrls); + qsidebar.addUrls(doubleUrls, 1); + QCOMPARE(qsidebar.urls().size(), 1); +#else + //Two different paths we should have two entries + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath()); + doubleUrls << QUrl::fromLocalFile(QDir::home().absolutePath().toUpper()); + qsidebar.setUrls(emptyUrls); + qsidebar.addUrls(doubleUrls, 1); + QCOMPARE(qsidebar.urls().size(), 2); +#endif + + } void tst_QSidebar::goToUrl() -- cgit v0.12 From a9d0e4f830687b33c3a93cce2a3b8d77cc3546cc Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Wed, 22 Apr 2009 10:47:11 +0200 Subject: Compile fix for static builds on Windows for QtOpenGL apps. Reviewed-by: Thiago --- src/opengl/qwindowsurface_gl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp index 837ccf2..b41adf9 100644 --- a/src/opengl/qwindowsurface_gl.cpp +++ b/src/opengl/qwindowsurface_gl.cpp @@ -86,7 +86,7 @@ QT_BEGIN_NAMESPACE // QGLGraphicsSystem // #ifdef Q_WS_WIN -Q_GUI_EXPORT bool qt_win_owndc_required; +extern Q_GUI_EXPORT bool qt_win_owndc_required; #endif QGLGraphicsSystem::QGLGraphicsSystem() : QGraphicsSystem() -- cgit v0.12 From e238e7b06f4c90c4b36621ade07329264fa7bed3 Mon Sep 17 00:00:00 2001 From: Thomas Zander Date: Wed, 22 Apr 2009 10:18:26 +0200 Subject: Fixes: Wacom tool-id lookup expects hardcoded wacom device identifiers from xorg.conf Details: use device name previously found using x-atoms instead of a hardcoded one. RevBy: Thiago Macieira Task: 210132 (followup) --- src/gui/kernel/qapplication_x11.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index 366e576..4814f1a 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -1583,6 +1583,7 @@ static PtrWacomConfigOpenDevice ptrWacomConfigOpenDevice = 0; static PtrWacomConfigGetRawParam ptrWacomConfigGetRawParam = 0; static PtrWacomConfigCloseDevice ptrWacomConfigCloseDevice = 0; static PtrWacomConfigTerm ptrWacomConfigTerm = 0; +Q_GLOBAL_STATIC(QByteArray, wacomDeviceName) #endif #endif @@ -2377,6 +2378,8 @@ void qt_init(QApplicationPrivate *priv, int, #else if (devs->type == ATOM(XWacomStylus)) { deviceType = QTabletEvent::Stylus; + if (wacomDeviceName()->isEmpty()) + wacomDeviceName()->append(devs->name); gotStylus = true; } else if (devs->type == ATOM(XWacomEraser)) { deviceType = QTabletEvent::XFreeEraser; @@ -4511,8 +4514,7 @@ void fetchWacomToolId(int &deviceType, qint64 &serialId) WACOMCONFIG *config = ptrWacomConfigInit(X11->display, 0); if (config == 0) return; - const char *name = "stylus"; // TODO get this from the X config instead (users may have called it differently) - WACOMDEVICE *device = ptrWacomConfigOpenDevice (config, name); + WACOMDEVICE *device = ptrWacomConfigOpenDevice (config, wacomDeviceName()->constData()); if (device == 0) return; unsigned keys[1]; -- cgit v0.12 From 5cba8ea7d6b793ba0012dfc387e6859ace7c664a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Tue, 21 Apr 2009 16:59:55 +0200 Subject: Fix more NaNs in Elastic Nodes example Don't try to draw zero-length lines. Don't draw lines if nodes are superimposed. Reviewed-by: Andreas --- examples/graphicsview/elasticnodes/edge.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/examples/graphicsview/elasticnodes/edge.cpp b/examples/graphicsview/elasticnodes/edge.cpp index e32a35a..eb02143 100644 --- a/examples/graphicsview/elasticnodes/edge.cpp +++ b/examples/graphicsview/elasticnodes/edge.cpp @@ -96,7 +96,7 @@ void Edge::adjust() prepareGeometryChange(); - if (!qFuzzyCompare(length, qreal(0.0))) { + if (length > qreal(20.)) { QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length); sourcePoint = line.p1() + edgeOffset; destPoint = line.p2() - edgeOffset; @@ -124,12 +124,15 @@ void Edge::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) if (!source || !dest) return; - // Draw the line itself QLineF line(sourcePoint, destPoint); + if (qFuzzyCompare(line.length(), qreal(0.))) + return; + + // Draw the line itself painter->setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); painter->drawLine(line); - // Draw the arrows if there's enough room + // Draw the arrows double angle = ::acos(line.dx() / line.length()); if (line.dy() >= 0) angle = TwoPi - angle; -- cgit v0.12 From e8468f21d24b85114a8841413f9328a17f7bc54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 22 Apr 2009 12:05:08 +0200 Subject: Fix crash in drawPixmap when painting on a null pixmap We need to check if the engine is null before we do the thread test. Reviewed-by: Thiago --- src/gui/painting/qpainter.cpp | 6 +++--- tests/auto/qpainter/tst_qpainter.cpp | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index ffb273e..65d87fa 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -5167,6 +5167,9 @@ void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm) Q_D(QPainter); + if (!d->engine) + return; + #ifndef QT_NO_DEBUG qt_painter_thread_test(d->device->devType(), "drawPixmap()"); #endif @@ -5176,9 +5179,6 @@ void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm) return; } - if (!d->engine) - return; - qreal x = p.x(); qreal y = p.y(); diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp index 8b43f9b..c81bf67 100644 --- a/tests/auto/qpainter/tst_qpainter.cpp +++ b/tests/auto/qpainter/tst_qpainter.cpp @@ -3792,8 +3792,11 @@ void tst_QPainter::imageBlending() void tst_QPainter::paintOnNullPixmap() { + QPixmap pix(16, 16); + QPixmap textPixmap; QPainter p(&textPixmap); + p.drawPixmap(10, 10, pix); p.end(); QPixmap textPixmap2(16,16); -- cgit v0.12 From 65398953e6ebaab177046b9516f15920b1f9d1a4 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Wed, 22 Apr 2009 12:48:58 +0200 Subject: Remove git merge conflict markers Reviewed-by: Trust me --- tools/qdoc3/test/linguist.qdocconf | 1 - tools/qdoc3/test/qmake.qdocconf | 1 - 2 files changed, 2 deletions(-) diff --git a/tools/qdoc3/test/linguist.qdocconf b/tools/qdoc3/test/linguist.qdocconf index 9a9c5b0..f4ee211 100644 --- a/tools/qdoc3/test/linguist.qdocconf +++ b/tools/qdoc3/test/linguist.qdocconf @@ -18,7 +18,6 @@ qhp.Linguist.virtualFolder = qdoc qhp.Linguist.indexTitle = Qt Linguist Manual qhp.Linguist.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png qhp.Linguist.filterAttributes = qt 4.6.0 tools linguist ->>>>>>> 4.5:tools/qdoc3/test/linguist.qdocconf qhp.Linguist.customFilters.Linguist.name = Qt Linguist Manual qhp.Linguist.customFilters.Linguist.filterAttributes = qt tools linguist qhp.Linguist.subprojects = manual examples diff --git a/tools/qdoc3/test/qmake.qdocconf b/tools/qdoc3/test/qmake.qdocconf index 62cd4ff..642e3be 100644 --- a/tools/qdoc3/test/qmake.qdocconf +++ b/tools/qdoc3/test/qmake.qdocconf @@ -18,7 +18,6 @@ qhp.qmake.virtualFolder = qdoc qhp.qmake.indexTitle = QMake Manual qhp.qmake.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png qhp.qmake.filterAttributes = qt 4.6.0 tools qmake ->>>>>>> 4.5:tools/qdoc3/test/qmake.qdocconf qhp.qmake.customFilters.qmake.name = qmake Manual qhp.qmake.customFilters.qmake.filterAttributes = qt tools qmake qhp.qmake.subprojects = manual -- cgit v0.12 From a8d14ae567c7e847c6dbba644c36fbc6c6afc468 Mon Sep 17 00:00:00 2001 From: Norwegian Rock Cat Date: Thu, 2 Apr 2009 09:31:50 +0200 Subject: Work on getting unified toolbars to look more native. Basically we try to get the toggled look correct and we've shrunk the size of the toolbar by a good 10 pixels. We still look a bit "off" for toggled on Tiger, but frankely that look is a bit odd. We are a bit taller than the pure Cocoa toolbar (2 px), but given that we are embedding our QToolbar, that's probably the best we can do. All-in-all, it looks much better. --- src/gui/kernel/kernel.pri | 2 +- src/gui/mac/images/leopard-unified-toolbar-on.png | Bin 0 -> 356 bytes src/gui/mac/maccursors.qrc | 9 --- src/gui/mac/macresources.qrc | 12 ++++ src/gui/styles/qmacstyle_mac.mm | 50 +++++++++++----- src/gui/styles/qstylehelper.cpp | 70 ++++++++++++++++++++-- src/gui/styles/qstylehelper_p.h | 3 + src/gui/widgets/qmainwindowlayout_mac.mm | 4 +- 8 files changed, 117 insertions(+), 33 deletions(-) create mode 100644 src/gui/mac/images/leopard-unified-toolbar-on.png delete mode 100644 src/gui/mac/maccursors.qrc create mode 100644 src/gui/mac/macresources.qrc diff --git a/src/gui/kernel/kernel.pri b/src/gui/kernel/kernel.pri index cb2b014..a1b982a 100644 --- a/src/gui/kernel/kernel.pri +++ b/src/gui/kernel/kernel.pri @@ -193,7 +193,7 @@ embedded { MENU_NIB.path = Resources MENU_NIB.version = Versions QMAKE_BUNDLE_DATA += MENU_NIB - RESOURCES += mac/maccursors.qrc + RESOURCES += mac/macresources.qrc LIBS += -framework AppKit } diff --git a/src/gui/mac/images/leopard-unified-toolbar-on.png b/src/gui/mac/images/leopard-unified-toolbar-on.png new file mode 100644 index 0000000..6716597 Binary files /dev/null and b/src/gui/mac/images/leopard-unified-toolbar-on.png differ diff --git a/src/gui/mac/maccursors.qrc b/src/gui/mac/maccursors.qrc deleted file mode 100644 index d80a63b..0000000 --- a/src/gui/mac/maccursors.qrc +++ /dev/null @@ -1,9 +0,0 @@ - - -images/copyarrowcursor.png -images/forbiddencursor.png -images/spincursor.png -images/waitcursor.png -images/pluscursor.png - - diff --git a/src/gui/mac/macresources.qrc b/src/gui/mac/macresources.qrc new file mode 100644 index 0000000..9696002 --- /dev/null +++ b/src/gui/mac/macresources.qrc @@ -0,0 +1,12 @@ + + +images/copyarrowcursor.png +images/forbiddencursor.png +images/spincursor.png +images/waitcursor.png +images/pluscursor.png + + +images/leopard-unified-toolbar-on.png + + diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm index 5d08c58..e32c5e2 100644 --- a/src/gui/styles/qmacstyle_mac.mm +++ b/src/gui/styles/qmacstyle_mac.mm @@ -2649,6 +2649,9 @@ int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QW case PM_MenuHMargin: ret = 0; break; + case PM_ToolBarFrameWidth: + ret = 0; + break; default: ret = QWindowsStyle::pixelMetric(metric, opt, widget); break; @@ -3679,8 +3682,8 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter if (tb->toolButtonStyle != Qt::ToolButtonIconOnly) { needText = true; if (tb->toolButtonStyle == Qt::ToolButtonTextUnderIcon) { - pr.setHeight(pixmap.size().height() + 6); - cr.adjust(0, pr.bottom(), 0, -3); + pr.setHeight(pixmap.size().height()); + cr.adjust(0, pr.bottom() + 1, 0, 1); alignment |= Qt::AlignCenter; } else { pr.setWidth(pixmap.width() + 8); @@ -3688,7 +3691,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter alignment |= Qt::AlignLeft | Qt::AlignVCenter; } } - if (down) { + if (opt->state & State_Sunken) { pr.translate(shiftX, shiftY); pixmap = darkenPixmap(pixmap); } @@ -3718,7 +3721,8 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter } drawItemText(p, cr, alignment, pal, tb->state & State_Enabled, tb->text, role); - if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_5 && down) { + if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_5 && + (tb->state & State_Sunken)) { // Draw a "drop shadow" in earlier versions. drawItemText(p, cr.adjusted(0, 1, 0, 1), alignment, tb->palette, tb->state & State_Enabled, tb->text); @@ -4544,9 +4548,10 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter case CE_ToolBar: { // For unified tool bars, draw nothing. if (w) { - if (QMainWindow * mainWindow = qobject_cast(w->window())) + if (QMainWindow * mainWindow = qobject_cast(w->window())) { if (mainWindow->unifiedTitleAndToolBarOnMac()) break; + } } // draw background gradient @@ -5270,6 +5275,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex if (const QStyleOptionToolButton *tb = qstyleoption_cast(opt)) { if (widget && qobject_cast(widget->parentWidget())) { +// p->fillRect(tb->rect, QColor(155, 0, 155, 155)); if (tb->subControls & SC_ToolButtonMenu) { QStyleOption arrowOpt(0); arrowOpt.rect = subControlRect(cc, tb, SC_ToolButtonMenu, widget); @@ -5282,16 +5288,22 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex drawToolbarButtonArrow(tb->rect, tds, cg); } if (tb->state & State_On) { - QPen oldPen = p->pen(); - p->setPen(QColor(0, 0, 0, 0x3a)); - p->fillRect(tb->rect.adjusted(1, 1, -1, -1), QColor(0, 0, 0, 0x12)); - p->drawLine(tb->rect.left() + 1, tb->rect.top(), - tb->rect.right() - 1, tb->rect.top()); - p->drawLine(tb->rect.left() + 1, tb->rect.bottom(), - tb->rect.right() - 1, tb->rect.bottom()); - p->drawLine(tb->rect.topLeft(), tb->rect.bottomLeft()); - p->drawLine(tb->rect.topRight(), tb->rect.bottomRight()); - p->setPen(oldPen); + if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) { + static QPixmap pm(QLatin1String(":/trolltech/mac/style/images/leopard-unified-toolbar-on.png")); + p->setRenderHint(QPainter::SmoothPixmapTransform); + QStyleHelper::drawBorderPixmap(pm, p, tb->rect, 2, 2, 2, 2); + } else { + QPen oldPen = p->pen(); + p->setPen(QColor(0, 0, 0, 0x3a)); + p->fillRect(tb->rect.adjusted(1, 1, -1, -1), QColor(0, 0, 0, 0x12)); + p->drawLine(tb->rect.left() + 1, tb->rect.top(), + tb->rect.right() - 1, tb->rect.top()); + p->drawLine(tb->rect.left() + 1, tb->rect.bottom(), + tb->rect.right() - 1, tb->rect.bottom()); + p->drawLine(tb->rect.topLeft(), tb->rect.bottomLeft()); + p->drawLine(tb->rect.topRight(), tb->rect.bottomRight()); + p->setPen(oldPen); + } } drawControl(CE_ToolButtonLabel, opt, p, widget); } else { @@ -6009,6 +6021,14 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, } break; case CT_ToolButton: + if (widget && qobject_cast(widget->parentWidget())) { + sz.rwidth() += 4; + if (sz.height() <= 32) { + // Workaround strange HIToolBar bug when getting constraints. + sz.rheight() += 1; + } + return sz; + } sz.rwidth() += 10; sz.rheight() += 10; return sz; diff --git a/src/gui/styles/qstylehelper.cpp b/src/gui/styles/qstylehelper.cpp index 3320970..69f8cd2 100644 --- a/src/gui/styles/qstylehelper.cpp +++ b/src/gui/styles/qstylehelper.cpp @@ -50,9 +50,10 @@ QT_BEGIN_NAMESPACE -const bool QStyleHelper::UsePixmapCache = true; +namespace QStyleHelper { +const bool UsePixmapCache = true; -QString QStyleHelper::uniqueName(const QString &key, const QStyleOption *option, const QSize &size) +QString uniqueName(const QString &key, const QStyleOption *option, const QSize &size) { QString tmp; const QStyleOptionComplex *complexOption = qstyleoption_cast(option); @@ -74,7 +75,7 @@ QString QStyleHelper::uniqueName(const QString &key, const QStyleOption *option, #ifndef QT_NO_DIAL -int QStyleHelper::calcBigLineSize(int radius) +int calcBigLineSize(int radius) { int bigLineSize = radius / 6; if (bigLineSize < 4) @@ -107,7 +108,7 @@ static QPointF calcRadialPos(const QStyleOptionSlider *dial, qreal offset) return pos; } -qreal QStyleHelper::angle(const QPointF &p1, const QPointF &p2) +qreal angle(const QPointF &p1, const QPointF &p2) { static const qreal rad_factor = 180 / Q_PI; qreal _angle = 0; @@ -139,7 +140,7 @@ qreal QStyleHelper::angle(const QPointF &p1, const QPointF &p2) return _angle; } -QPolygonF QStyleHelper::calcLines(const QStyleOptionSlider *dial) +QPolygonF calcLines(const QStyleOptionSlider *dial) { QPolygonF poly; int width = dial->rect.width(); @@ -182,7 +183,7 @@ QPolygonF QStyleHelper::calcLines(const QStyleOptionSlider *dial) // This will draw a nice and shiny QDial for us. We don't want // all the shinyness in QWindowsStyle, hence we place it here -void QStyleHelper::drawDial(const QStyleOptionSlider *option, QPainter *painter) +void drawDial(const QStyleOptionSlider *option, QPainter *painter) { QPalette pal = option->palette; QColor buttonColor = pal.button().color(); @@ -292,4 +293,61 @@ void QStyleHelper::drawDial(const QStyleOptionSlider *option, QPainter *painter) } #endif //QT_NO_DIAL +void drawBorderPixmap(const QPixmap &pixmap, QPainter *painter, const QRect &rect, + int left, int top, int right, + int bottom) +{ + QSize size = pixmap.size(); + //painter->setRenderHint(QPainter::SmoothPixmapTransform); + + //top + if (top > 0) { + painter->drawPixmap(QRect(rect.left() + left, rect.top(), rect.width() -right - left, top), pixmap, + QRect(left, 0, size.width() -right - left, top)); + + //top-left + if(left > 0) + painter->drawPixmap(QRect(rect.left(), rect.top(), left, top), pixmap, + QRect(0, 0, left, top)); + + //top-right + if (right > 0) + painter->drawPixmap(QRect(rect.left() + rect.width() - right, rect.top(), right, top), pixmap, + QRect(size.width() - right, 0, right, top)); + } + + //left + if (left > 0) + painter->drawPixmap(QRect(rect.left(), rect.top()+top, left, rect.height() - top - bottom), pixmap, + QRect(0, top, left, size.height() - bottom - top)); + + //center + painter->drawPixmap(QRect(rect.left() + left, rect.top()+top, rect.width() -right - left, + rect.height() - bottom - top), pixmap, + QRect(left, top, size.width() -right -left, + size.height() - bottom - top)); + //right + if (right > 0) + painter->drawPixmap(QRect(rect.left() +rect.width() - right, rect.top()+top, right, rect.height() - top - bottom), pixmap, + QRect(size.width() - right, top, right, size.height() - bottom - top)); + + //bottom + if (bottom > 0) { + painter->drawPixmap(QRect(rect.left() +left, rect.top() + rect.height() - bottom, + rect.width() - right - left, bottom), pixmap, + QRect(left, size.height() - bottom, + size.width() - right - left, bottom)); + //bottom-left + if (left > 0) + painter->drawPixmap(QRect(rect.left(), rect.top() + rect.height() - bottom, left, bottom), pixmap, + QRect(0, size.height() - bottom, left, bottom)); + + //bottom-right + if (right > 0) + painter->drawPixmap(QRect(rect.left() + rect.width() - right, rect.top() + rect.height() - bottom, right, bottom), pixmap, + QRect(size.width() - right, size.height() - bottom, right, bottom)); + + } +} +} QT_END_NAMESPACE diff --git a/src/gui/styles/qstylehelper_p.h b/src/gui/styles/qstylehelper_p.h index d9b2e28..24b4948 100644 --- a/src/gui/styles/qstylehelper_p.h +++ b/src/gui/styles/qstylehelper_p.h @@ -32,6 +32,9 @@ namespace QStyleHelper int calcBigLineSize(int radius); void drawDial(const QStyleOptionSlider *dial, QPainter *painter); #endif //QT_NO_DIAL + void drawBorderPixmap(const QPixmap &pixmap, QPainter *painter, const QRect &rect, + int left = 0, int top = 0, int right = 0, + int bottom = 0); } QT_END_NAMESPACE diff --git a/src/gui/widgets/qmainwindowlayout_mac.mm b/src/gui/widgets/qmainwindowlayout_mac.mm index c807afb..53e1ad5 100644 --- a/src/gui/widgets/qmainwindowlayout_mac.mm +++ b/src/gui/widgets/qmainwindowlayout_mac.mm @@ -502,11 +502,11 @@ void QMainWindowLayout::fixSizeInUnifiedToolbar(QToolBar *tb) const QMacCocoaAutoReleasePool pool; QWidgetItem layoutItem(tb); QSize size = layoutItem.maximumSize(); - NSSize nssize = NSMakeSize(size.width(), size.height()); + NSSize nssize = NSMakeSize(size.width(), size.height() - 2); [item setMaxSize:nssize]; size = layoutItem.minimumSize(); nssize.width = size.width(); - nssize.height = size.height(); + nssize.height = size.height() - 2; [item setMinSize:nssize]; } } -- cgit v0.12 From 7ba85aba8686d83dc8557a9fb6d4504fbbeec349 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Wed, 22 Apr 2009 11:58:41 +0200 Subject: Fix Transformed driver on 8-bit displays Task-number: 250971 Reviewed-by: Tom --- src/gui/embedded/qscreentransformed_qws.cpp | 4 +++- src/gui/painting/qmemrotate.cpp | 1 + src/gui/painting/qmemrotate_p.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gui/embedded/qscreentransformed_qws.cpp b/src/gui/embedded/qscreentransformed_qws.cpp index f988789..46ac1d1 100644 --- a/src/gui/embedded/qscreentransformed_qws.cpp +++ b/src/gui/embedded/qscreentransformed_qws.cpp @@ -410,7 +410,9 @@ void QTransformedScreen::blit(const QImage &image, const QPoint &topLeft, #endif #ifdef QT_QWS_DEPTH_8 case 8: - if (image.depth() == 16) + if (image.format() == QImage::Format_RGB444) + SET_BLIT_FUNC(quint8, qrgb444, trans, func); + else if (image.depth() == 16) SET_BLIT_FUNC(quint8, quint16, trans, func); else SET_BLIT_FUNC(quint8, quint32, trans, func); diff --git a/src/gui/painting/qmemrotate.cpp b/src/gui/painting/qmemrotate.cpp index 7ad0e42..4058143 100644 --- a/src/gui/painting/qmemrotate.cpp +++ b/src/gui/painting/qmemrotate.cpp @@ -537,6 +537,7 @@ QT_IMPL_MEMROTATE(quint32, quint24) QT_IMPL_MEMROTATE(quint32, quint18) QT_IMPL_MEMROTATE(quint32, quint8) QT_IMPL_MEMROTATE(quint16, quint8) +QT_IMPL_MEMROTATE(qrgb444, quint8) QT_IMPL_MEMROTATE(quint8, quint8) #ifdef QT_QWS_DEPTH_GENERIC QT_IMPL_MEMROTATE(quint32, qrgb_generic16) diff --git a/src/gui/painting/qmemrotate_p.h b/src/gui/painting/qmemrotate_p.h index bd6006b..c1eb93e 100644 --- a/src/gui/painting/qmemrotate_p.h +++ b/src/gui/painting/qmemrotate_p.h @@ -90,6 +90,7 @@ QT_DECL_MEMROTATE(quint32, quint24); QT_DECL_MEMROTATE(quint32, quint18); QT_DECL_MEMROTATE(quint32, quint8); QT_DECL_MEMROTATE(quint16, quint8); +QT_DECL_MEMROTATE(qrgb444, quint8); QT_DECL_MEMROTATE(quint8, quint8); #ifdef QT_QWS_DEPTH_GENERIC QT_DECL_MEMROTATE(quint32, qrgb_generic16); -- cgit v0.12 From 1b1da000ba15530f2070a57ea97bb3166fb67331 Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Wed, 22 Apr 2009 22:11:22 +1000 Subject: Make make_qfeatures_dot_h script generate the current copyright header. Update the script, and update the generated file. Reviewed-by: Thiago Reviewed-by: Paul Olav Tvete --- src/corelib/global/qfeatures.h | 54 +++++++++++++++++++-------------------- util/scripts/make_qfeatures_dot_h | 41 +++++++++++++++++++++++++---- 2 files changed, 63 insertions(+), 32 deletions(-) diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h index 6d55f7c..2189723 100644 --- a/src/corelib/global/qfeatures.h +++ b/src/corelib/global/qfeatures.h @@ -120,6 +120,9 @@ // QMovie //#define QT_NO_MOVIE +// QNetworkInterface +//#define QT_NO_NETWORKINTERFACE + // QNetworkProxy //#define QT_NO_NETWORKPROXY @@ -198,12 +201,12 @@ // Qt Prerendered Font Format //#define QT_NO_QWS_QPF -// Raster Paint Engine callback functions -//#define QT_NO_RASTERCALLBACKS - // Qt Prerendered Font Format 2 //#define QT_NO_QWS_QPF2 +// Raster Paint Engine callback functions +//#define QT_NO_RASTERCALLBACKS + // Resize Handler //#define QT_NO_RESIZEHANDLER @@ -273,9 +276,6 @@ // HtmlParser //#define QT_NO_TEXTHTMLPARSER -// OdfWriter -//#define QT_NO_TEXTODFWRITER - // QTextStream //#define QT_NO_TEXTSTREAM @@ -316,6 +316,11 @@ #define QT_NO_BUTTONGROUP #endif +// QClipboard +#if !defined(QT_NO_CLIPBOARD) && (defined(QT_NO_QWS_PROPERTIES)) +#define QT_NO_CLIPBOARD +#endif + // Codecs #if !defined(QT_NO_CODECS) && (defined(QT_NO_TEXTCODEC)) #define QT_NO_CODECS @@ -376,11 +381,6 @@ #define QT_NO_PHONON_VOLUMESLIDER #endif -// QPrinter -#if !defined(QT_NO_PRINTER) && (defined(QT_NO_TEXTSTREAM)) -#define QT_NO_PRINTER -#endif - // QProcess #if !defined(QT_NO_PROCESS) && (defined(QT_NO_THREAD)) #define QT_NO_PROCESS @@ -481,11 +481,6 @@ #define QT_NO_XMLSTREAMWRITER #endif -// Odf Writer -#if !defined(QT_NO_TEXTODFWRITER) && (defined(QT_NO_XMLSTREAMWRITER)) -#define QT_NO_TEXTODFWRITER -#endif - // Context menu #if !defined(QT_NO_CONTEXTMENU) && (defined(QT_NO_MENU)) #define QT_NO_CONTEXTMENU @@ -511,11 +506,21 @@ #define QT_NO_LIBRARY #endif +// QPrinter +#if !defined(QT_NO_PRINTER) && (defined(QT_NO_TEXTSTREAM) || defined(QT_NO_PICTURE)) +#define QT_NO_PRINTER +#endif + // QScrollArea #if !defined(QT_NO_SCROLLAREA) && (defined(QT_NO_SCROLLBAR)) #define QT_NO_SCROLLAREA #endif +// OdfWriter +#if !defined(QT_NO_TEXTODFWRITER) && (defined(QT_NO_XMLSTREAMWRITER)) +#define QT_NO_TEXTODFWRITER +#endif + // QToolButton #if !defined(QT_NO_TOOLBUTTON) && (defined(QT_NO_ICON) || defined(QT_NO_ACTION)) #define QT_NO_TOOLBUTTON @@ -636,16 +641,6 @@ #define QT_NO_WHATSTHIS #endif -// QClipboard -#if !defined(QT_NO_CLIPBOARD) && (defined(QT_NO_QWS_PROPERTIES)) -#define QT_NO_CLIPBOARD -#endif - -// Common UNIX Printing System -#if !defined(QT_NO_CUPS) && (defined(QT_NO_PRINTER) || defined(QT_NO_LIBRARY)) -#define QT_NO_CUPS -#endif - // QDirModel #if !defined(QT_NO_DIRMODEL) && (defined(QT_NO_ITEMVIEWS)) #define QT_NO_DIRMODEL @@ -726,6 +721,11 @@ #define QT_NO_COMPLETER #endif +// Common UNIX Printing System +#if !defined(QT_NO_CUPS) && (defined(QT_NO_PRINTER) || defined(QT_NO_LIBRARY)) +#define QT_NO_CUPS +#endif + // QDataWidgetMapper #if !defined(QT_NO_DATAWIDGETMAPPER) && (defined(QT_NO_ITEMVIEWS) || defined(QT_NO_PROPERTIES)) #define QT_NO_DATAWIDGETMAPPER @@ -757,7 +757,7 @@ #endif // QPrintPreviewWidget -#if !defined(QT_NO_PRINTPREVIEWWIDGET) && (defined(QT_NO_GRAPHICSVIEW) || defined(QT_NO_PRINTER) || defined(QT_NO_PICTURE)) +#if !defined(QT_NO_PRINTPREVIEWWIDGET) && (defined(QT_NO_GRAPHICSVIEW) || defined(QT_NO_PRINTER)) #define QT_NO_PRINTPREVIEWWIDGET #endif diff --git a/util/scripts/make_qfeatures_dot_h b/util/scripts/make_qfeatures_dot_h index c434649..5ca8c88 100755 --- a/util/scripts/make_qfeatures_dot_h +++ b/util/scripts/make_qfeatures_dot_h @@ -2,9 +2,9 @@ # # Usage: make_qfeatures_dot_h # -# Generates core/base/qfeatures.h from core/base/qfeatures.txt. +# Generates src/corelib/global/qfeatures.h from src/corelib/global/qfeatures.txt. # -# The tools/qfeatures.txt file can contain redundancies, and this program +# The qfeatures.txt file can contain redundancies, and this program # will show them. # @@ -85,11 +85,42 @@ open OUT, ">$ENV{QTDIR}/src/corelib/global/qfeatures.h" print OUT "/**************************************************************************** ** -** Copyright (C) 1992-\$THISYEAR\$ \$TROLLTECH\$. All rights reserved. +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info\@nokia.com) ** -** This file is part of the \$MODULE\$ of the Qt Toolkit. +** This file is part of the QtCore module of the Qt Toolkit. ** -** \$TROLLTECH_DUAL_LICENSE\$ +** \$QT_BEGIN_LICENSE:LGPL\$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales\@nokia.com. +** \$QT_END_LICENSE\$ ** ****************************************************************************/ -- cgit v0.12 From fa4049c9ba8446a582a9bd003d5cdf98ae0505eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Wed, 22 Apr 2009 13:25:56 +0200 Subject: Doc fixes Reviewed-by: Thiago --- doc/src/phonon-api.qdoc | 4 ++-- src/corelib/kernel/qcoreevent.cpp | 1 + src/gui/kernel/qapplication.cpp | 5 +++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/src/phonon-api.qdoc b/doc/src/phonon-api.qdoc index 3d04c68..501b5a5 100644 --- a/doc/src/phonon-api.qdoc +++ b/doc/src/phonon-api.qdoc @@ -4457,12 +4457,12 @@ */ /*! - \fn QList Phonon::GlobalConfig::audioOutputDeviceListFor(Phonon::Category category, HideAdvancedDevicesOverride override = FromSettings) const + \fn QList Phonon::GlobalConfig::audioOutputDeviceListFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const \internal */ /*! - \fn int Phonon::GlobalConfig::audioOutputDeviceFor(Phonon::Category category) const + \fn int Phonon::GlobalConfig::audioOutputDeviceFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const \internal */ diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp index 3fcfc98..11a2d3c 100644 --- a/src/corelib/kernel/qcoreevent.cpp +++ b/src/corelib/kernel/qcoreevent.cpp @@ -260,6 +260,7 @@ QT_BEGIN_NAMESPACE \omitvalue ApplicationActivated \omitvalue ApplicationDeactivated \omitvalue MacGLWindowChange + \omitvalue MacGLClearDrawable \omitvalue NetworkReplyUpdated \omitvalue FutureCallOut \omitvalue CocoaRequestModal diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 09f0f91..1624b9d 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -832,12 +832,13 @@ QApplication::QApplication(Display *dpy, int &argc, char **argv, #endif // Q_WS_X11 +extern void qInitDrawhelperAsm(); /*! + \fn void QApplicationPrivate::initialize() + Initializes the QApplication object, called from the constructors. */ -extern void qInitDrawhelperAsm(); - void QApplicationPrivate::initialize() { QWidgetPrivate::mapper = new QWidgetMapper; -- cgit v0.12 From 1187d1b2063b42378d9cd1a940bcd7eecb24fb69 Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Wed, 22 Apr 2009 23:32:40 +1000 Subject: Make all qdoc footers consistent with the main Qt docs. Use the same copyright message in all doc footers. As a side-effect, this change also removes most of the remaining THISYEAR placeholders, and fixes some footers that try to use 110% of the page width. Reviewed-by: Thiago --- tools/assistant/tools/assistant/doc/assistant.qdocconf | 3 +-- tools/qdoc3/test/carbide-eclipse-integration.qdocconf | 6 +++--- tools/qdoc3/test/jambi.qdocconf | 2 +- tools/qdoc3/test/qt-html-templates.qdocconf | 3 +-- tools/qdoc3/test/qt-inc.qdocconf | 2 +- tools/qdoc3/test/standalone-eclipse-integration.qdocconf | 6 +++--- util/qlalr/doc/qlalr.qdocconf | 2 +- 7 files changed, 11 insertions(+), 13 deletions(-) diff --git a/tools/assistant/tools/assistant/doc/assistant.qdocconf b/tools/assistant/tools/assistant/doc/assistant.qdocconf index 0d2271d..f71bc08 100644 --- a/tools/assistant/tools/assistant/doc/assistant.qdocconf +++ b/tools/assistant/tools/assistant/doc/assistant.qdocconf @@ -10,8 +10,7 @@ description = "Qt Assistant" HTML.{postheader,address} = "" HTML.footer = "


\n" \ "\n" \ - "\n" \ + "\n" \ "\n" \ "\n" \ "
Copyright © 2009 Nokia Corporation " \ - "and/or its subsidiary(-ies)Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt 4.5.1
" diff --git a/tools/qdoc3/test/carbide-eclipse-integration.qdocconf b/tools/qdoc3/test/carbide-eclipse-integration.qdocconf index 683048d..7fe489e 100644 --- a/tools/qdoc3/test/carbide-eclipse-integration.qdocconf +++ b/tools/qdoc3/test/carbide-eclipse-integration.qdocconf @@ -6,7 +6,7 @@ macro.TheEclipseIntegration = Carbide.c++ HTML.footer = "


\n" \ "\n" \ - "\n" \ - "\n" \ - "\n" \ + "\n" \ + "\n" \ + "\n" \ "
Copyright © 2009 Nokia CorporationTrademarks
Carbide.c++
Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Carbide.c++
" diff --git a/tools/qdoc3/test/jambi.qdocconf b/tools/qdoc3/test/jambi.qdocconf index 3644b69..5288b22 100644 --- a/tools/qdoc3/test/jambi.qdocconf +++ b/tools/qdoc3/test/jambi.qdocconf @@ -41,7 +41,7 @@ HTML.postheader = "\n" \ "
\n" \ - "\n" \ + "\n" \ "\n" \ "\n" \ "
Copyright © \$THISYEAR\$ TrolltechCopyright © 2009 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Jambi \\version
" diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf index f09192a..dc027d0 100644 --- a/tools/qdoc3/test/qt-html-templates.qdocconf +++ b/tools/qdoc3/test/qt-html-templates.qdocconf @@ -25,8 +25,7 @@ HTML.postheader = "\n" \ "
\n" \ - "\n" \ + "\n" \ "\n" \ "\n" \ "
Copyright © %THISYEAR% Nokia Corporation " \ - "and/or its subsidiary(-ies)Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt \\version
" diff --git a/tools/qdoc3/test/qt-inc.qdocconf b/tools/qdoc3/test/qt-inc.qdocconf index 97893dc..18d3faf 100644 --- a/tools/qdoc3/test/qt-inc.qdocconf +++ b/tools/qdoc3/test/qt-inc.qdocconf @@ -140,7 +140,7 @@ HTML.postheader = "\n" \ "
\n" \ - "\n" \ + "\n" \ "\n" \ "\n" \ "
Copyright © %THISYEAR% TrolltechCopyright © 2009 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt \\version
" diff --git a/tools/qdoc3/test/standalone-eclipse-integration.qdocconf b/tools/qdoc3/test/standalone-eclipse-integration.qdocconf index c3c4291..08b6070 100644 --- a/tools/qdoc3/test/standalone-eclipse-integration.qdocconf +++ b/tools/qdoc3/test/standalone-eclipse-integration.qdocconf @@ -5,7 +5,7 @@ macro.TheEclipseIntegration = The Qt Eclipse Integration HTML.footer = "


\n" \ "\n" \ - "\n" \ - "\n" \ - "\n" \ + "\n" \ + "\n" \ + "\n" \ "
Copyright © 2009 Nokia CorporationTrademarks
Qt Eclipse Integration 1.4.3
Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Eclipse Integration 1.4.3
" diff --git a/util/qlalr/doc/qlalr.qdocconf b/util/qlalr/doc/qlalr.qdocconf index d97ff7d..a97ef6a 100644 --- a/util/qlalr/doc/qlalr.qdocconf +++ b/util/qlalr/doc/qlalr.qdocconf @@ -59,7 +59,7 @@ HTML.postheader = "\n" \ "
\n" \ - "\n" \ + "\n" \ "\n" \ "\n" \ "
Copyright © \$THISYEAR\$ TrolltechCopyright © 2009 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt \\version
" -- cgit v0.12 From f8be94bf4e8fa359bfc71a10aa7dc6b12daf5dea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Wed, 22 Apr 2009 15:57:06 +0200 Subject: Fix QPrinter::pageRect() for Windows printers, when fullPage() is set. When QPrinter::fullPage() was set, pageRect() returned the same as paperRect(). Under Windows, there is always a non-printable area that was not taken into account in the fullPage() case. Task-number: 248881 Reviewed-by: Kim --- src/gui/painting/qprintengine_win.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/painting/qprintengine_win.cpp b/src/gui/painting/qprintengine_win.cpp index c8674b7..7601beb 100644 --- a/src/gui/painting/qprintengine_win.cpp +++ b/src/gui/painting/qprintengine_win.cpp @@ -1532,7 +1532,7 @@ QVariant QWin32PrintEngine::property(PrintEnginePropertyKey key) const value = rect; } else { value = QTransform(1/d->stretch_x, 0, 0, 1/d->stretch_y, 0, 0) - .mapRect(d->fullPage ? d->devPaperRect : d->devPageRect); + .mapRect(d->fullPage ? d->devPhysicalPageRect : d->devPageRect); } break; -- cgit v0.12 From 3696886a327fc4894518c5570b02d5238dcede8a Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Wed, 22 Apr 2009 15:55:28 +0200 Subject: QGtkStyle: Fix broken transparency on line edits in Clearlooks This basically uses a workaround to hint to our gtk theme that we do not want it to fill our line edit backgrouns with the background brush. This was suggested by Benjamin berg. More information can be found here: https://bugzilla.mozilla.org/show_bug.cgi?id=405421 Reviewed-by: Tor Arne --- src/gui/styles/qgtkstyle.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp index b7fa575..ca71da2 100644 --- a/src/gui/styles/qgtkstyle.cpp +++ b/src/gui/styles/qgtkstyle.cpp @@ -951,14 +951,15 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element, "interior-focus", &interior_focus, "focus-line-width", &focus_line_width, NULL); + // See https://bugzilla.mozilla.org/show_bug.cgi?id=405421 for info about this hack + g_object_set_data(G_OBJECT(gtkEntry), "transparent-bg-hint", GINT_TO_POINTER(TRUE)); + if (!interior_focus && option->state & State_HasFocus) rect.adjust(focus_line_width, focus_line_width, -focus_line_width, -focus_line_width); - gtkPainter.paintShadow(gtkEntry, "entry", rect, option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, GTK_SHADOW_IN, gtkEntry->style, option->state & State_HasFocus ? QLS("focus") : QString()); - if (!interior_focus && option->state & State_HasFocus) gtkPainter.paintShadow(gtkEntry, "entry", option->rect, option->state & State_Enabled ? GTK_STATE_ACTIVE : GTK_STATE_INSENSITIVE, -- cgit v0.12 From cf9db492ac60568bd159c3749dfa11e2347b9927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 22 Apr 2009 14:49:24 +0200 Subject: Prevent QTransform::type() from returning TxScale instead of TxProject. We have code that assumes that m33 = 1 if the type is TxScale. Instead of changing all that code it's better to just return TxProject as type when m33 is different from 1. Reviewed-by: Simon Hausmann --- src/gui/painting/qtransform.cpp | 4 ++-- tests/auto/qtransform/tst_qtransform.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp index 39e429d..af27fd5 100644 --- a/src/gui/painting/qtransform.cpp +++ b/src/gui/painting/qtransform.cpp @@ -1880,7 +1880,7 @@ const QMatrix &QTransform::toAffine() const QTransform::TransformationType QTransform::type() const { if (m_dirty >= m_type) { - if (m_dirty > TxShear && (!qFuzzyCompare(m_13 + 1, 1) || !qFuzzyCompare(m_23 + 1, 1))) + if (m_dirty > TxShear && (!qFuzzyCompare(m_13 + 1, 1) || !qFuzzyCompare(m_23 + 1, 1) || !qFuzzyCompare(m_33, 1))) m_type = TxProject; else if (m_dirty > TxScale && (!qFuzzyCompare(affine._m12 + 1, 1) || !qFuzzyCompare(affine._m21 + 1, 1))) { const qreal dot = affine._m11 * affine._m12 + affine._m21 * affine._m22; @@ -1888,7 +1888,7 @@ QTransform::TransformationType QTransform::type() const m_type = TxRotate; else m_type = TxShear; - } else if (m_dirty > TxTranslate && (!qFuzzyCompare(affine._m11, 1) || !qFuzzyCompare(affine._m22, 1) || !qFuzzyCompare(m_33, 1))) + } else if (m_dirty > TxTranslate && (!qFuzzyCompare(affine._m11, 1) || !qFuzzyCompare(affine._m22, 1))) m_type = TxScale; else if (m_dirty > TxNone && (!qFuzzyCompare(affine._dx + 1, 1) || !qFuzzyCompare(affine._dy + 1, 1))) m_type = TxTranslate; diff --git a/tests/auto/qtransform/tst_qtransform.cpp b/tests/auto/qtransform/tst_qtransform.cpp index 8516ddb..74c405e 100644 --- a/tests/auto/qtransform/tst_qtransform.cpp +++ b/tests/auto/qtransform/tst_qtransform.cpp @@ -593,6 +593,16 @@ void tst_QTransform::types() m3.translate(5.0f, 5.0f); QCOMPARE(m3.type(), QTransform::TxScale); QCOMPARE(m3.inverted().type(), QTransform::TxScale); + + m3.setMatrix(1.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, + 0.0f, 0.0f, 2.0f); + QCOMPARE(m3.type(), QTransform::TxProject); + + m3.setMatrix(0.0f, 2.0f, 0.0f, + 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 2.0f); + QCOMPARE(m3.type(), QTransform::TxProject); } -- cgit v0.12 From fd9cdaa55da455b90eacec571aeb2c84fa55f7e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Arve=20S=C3=A6ther?= Date: Wed, 22 Apr 2009 16:27:44 +0200 Subject: Improve the icon parsing for files with a slightly wrong BMP header. The reason it failed was that we always expected the height property of the BMP header to be double the height of the icon. The kde_favicon.ico did not fulfill this requirement. We can fix that by simply reading from the ICONDIR entry instead, since that has always the correct height. Task-number: 229829 Reviewed-by: alexis --- src/plugins/imageformats/ico/qicohandler.cpp | 60 ++++++++++----------- tests/auto/qimagereader/baseline/35floppy.ico | Bin 0 -> 4286 bytes tests/auto/qimagereader/baseline/kde_favicon.ico | Bin 0 -> 1150 bytes .../auto/qimagereader/baseline/semitransparent.ico | Bin 0 -> 9662 bytes tests/auto/qimagereader/tst_qimagereader.cpp | 30 +++++++++++ 5 files changed, 58 insertions(+), 32 deletions(-) create mode 100644 tests/auto/qimagereader/baseline/35floppy.ico create mode 100644 tests/auto/qimagereader/baseline/kde_favicon.ico create mode 100644 tests/auto/qimagereader/baseline/semitransparent.ico diff --git a/src/plugins/imageformats/ico/qicohandler.cpp b/src/plugins/imageformats/ico/qicohandler.cpp index aa53370..da5ae15 100644 --- a/src/plugins/imageformats/ico/qicohandler.cpp +++ b/src/plugins/imageformats/ico/qicohandler.cpp @@ -80,7 +80,7 @@ typedef struct typedef struct { // BMP information header quint32 biSize; // size of this struct quint32 biWidth; // pixmap width - quint32 biHeight; // pixmap height + quint32 biHeight; // pixmap height (specifies the combined height of the XOR and AND masks) quint16 biPlanes; // should be 1 quint16 biBitCount; // number of bits per pixel quint32 biCompression; // compression method @@ -108,7 +108,7 @@ private: bool readHeader(); bool readIconEntry(int index, ICONDIRENTRY * iconEntry); - bool readBMPHeader(ICONDIRENTRY & iconEntry, BMP_INFOHDR * header); + bool readBMPHeader(quint32 imageOffset, BMP_INFOHDR * header); void findColorInfo(QImage & image); void readColorTable(QImage & image); @@ -343,7 +343,7 @@ bool ICOReader::readHeader() return headerRead; } -bool ICOReader::readIconEntry(int index, ICONDIRENTRY * iconEntry) +bool ICOReader::readIconEntry(int index, ICONDIRENTRY *iconEntry) { if (iod) { if (iod->seek(startpos + ICONDIR_SIZE + (index * ICONDIRENTRY_SIZE))) { @@ -355,37 +355,12 @@ bool ICOReader::readIconEntry(int index, ICONDIRENTRY * iconEntry) -bool ICOReader::readBMPHeader(ICONDIRENTRY & iconEntry, BMP_INFOHDR * header) +bool ICOReader::readBMPHeader(quint32 imageOffset, BMP_INFOHDR * header) { - memset(&icoAttrib, 0, sizeof(IcoAttrib)); if (iod) { - if (iod->seek(startpos + iconEntry.dwImageOffset)) { + if (iod->seek(startpos + imageOffset)) { if (readBMPInfoHeader(iod, header)) { - - icoAttrib.nbits = header->biBitCount ? header->biBitCount : iconEntry.wBitCount; - icoAttrib.h = header->biHeight / 2; // this height is always double the iconEntry height (for the mask) - icoAttrib.w = header->biWidth; - - switch (icoAttrib.nbits) { - case 32: - case 24: - case 16: - icoAttrib.depth = 32; - break; - case 8: - case 4: - icoAttrib.depth = 8; - break; - default: - icoAttrib.depth = 1; - } - - if ( icoAttrib.depth == 32 ) // there's no colormap - icoAttrib.ncolors = 0; - else // # colors used - icoAttrib.ncolors = header->biClrUsed ? header->biClrUsed : 1 << icoAttrib.nbits; - //qDebug() << "Bits:" << icoAttrib.nbits << "Depth:" << icoAttrib.depth << "Ncols:" << icoAttrib.ncolors; - return TRUE; + return TRUE; } } } @@ -548,7 +523,28 @@ QImage ICOReader::iconAt(int index) if (readIconEntry(index, &iconEntry)) { BMP_INFOHDR header; - if (readBMPHeader(iconEntry, &header)) { + if (readBMPHeader(iconEntry.dwImageOffset, &header)) { + icoAttrib.nbits = header.biBitCount ? header.biBitCount : iconEntry.wBitCount; + + switch (icoAttrib.nbits) { + case 32: + case 24: + case 16: + icoAttrib.depth = 32; + break; + case 8: + case 4: + icoAttrib.depth = 8; + break; + default: + icoAttrib.depth = 1; + } + if (icoAttrib.depth == 32) // there's no colormap + icoAttrib.ncolors = 0; + else // # colors used + icoAttrib.ncolors = header.biClrUsed ? header.biClrUsed : 1 << icoAttrib.nbits; + icoAttrib.w = iconEntry.bWidth; + icoAttrib.h = iconEntry.bHeight; QImage::Format format = QImage::Format_ARGB32; if (icoAttrib.nbits == 24) diff --git a/tests/auto/qimagereader/baseline/35floppy.ico b/tests/auto/qimagereader/baseline/35floppy.ico new file mode 100644 index 0000000..59fd37e Binary files /dev/null and b/tests/auto/qimagereader/baseline/35floppy.ico differ diff --git a/tests/auto/qimagereader/baseline/kde_favicon.ico b/tests/auto/qimagereader/baseline/kde_favicon.ico new file mode 100644 index 0000000..15bcdbb Binary files /dev/null and b/tests/auto/qimagereader/baseline/kde_favicon.ico differ diff --git a/tests/auto/qimagereader/baseline/semitransparent.ico b/tests/auto/qimagereader/baseline/semitransparent.ico new file mode 100644 index 0000000..dd23de9 Binary files /dev/null and b/tests/auto/qimagereader/baseline/semitransparent.ico differ diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp index 3841111..8f7094c 100644 --- a/tests/auto/qimagereader/tst_qimagereader.cpp +++ b/tests/auto/qimagereader/tst_qimagereader.cpp @@ -153,6 +153,9 @@ private slots: void autoDetectImageFormat(); void fileNameProbing(); + + void pixelCompareWithBaseline_data(); + void pixelCompareWithBaseline(); }; // Testing get/set functions @@ -1368,5 +1371,32 @@ void tst_QImageReader::fileNameProbing() QCOMPARE(r.fileName(), name); } +void tst_QImageReader::pixelCompareWithBaseline_data() +{ + QTest::addColumn("fileName"); + + QTest::newRow("floppy (16px,32px - 16 colors)") << "35floppy.ico"; + QTest::newRow("semitransparent") << "semitransparent.ico"; + QTest::newRow("slightlybroken") << "kde_favicon.ico"; +} + +void tst_QImageReader::pixelCompareWithBaseline() +{ + QFETCH(QString, fileName); + + QImage icoImg; + // might fail if the plugin does not exist, which is ok. + if (icoImg.load(QString::fromAscii("images/%1").arg(fileName))) { + QString baselineFileName = QString::fromAscii("baseline/%1").arg(fileName); +#if 0 + icoImg.save(baselineFileName); +#else + QImage baseImg; + QVERIFY(baseImg.load(baselineFileName)); + QCOMPARE(baseImg, icoImg); +#endif + } +} + QTEST_MAIN(tst_QImageReader) #include "tst_qimagereader.moc" -- cgit v0.12 From cb14e8b90c71afb851c3165fc009e4fa11dd04c9 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Wed, 22 Apr 2009 09:46:29 -0700 Subject: Take out STATIC_ALLOC of primary surface creation We never resize this surface anyway so it's not necessary. Make it possible to enable with an option. Reviewed-by: Donald --- src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp index 041d522..65c027d 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp @@ -833,15 +833,15 @@ bool QDirectFBScreen::connect(const QString &displaySpec) description.flags = DFBSurfaceDescriptionFlags(description.flags | DSDESC_WIDTH); if (::setIntOption(displayArgs, QLatin1String("height"), &description.height)) description.flags = DFBSurfaceDescriptionFlags(description.flags | DSDESC_HEIGHT); - description.caps = DFBSurfaceCapabilities(DSCAPS_PRIMARY - | DSCAPS_DOUBLE - | DSCAPS_STATIC_ALLOC); - if (displayArgs.contains(QLatin1String("forcepremultiplied"), - Qt::CaseInsensitive)) { - description.caps = DFBSurfaceCapabilities(description.caps - | DSCAPS_PREMULTIPLIED); + uint caps = DSCAPS_PRIMARY|DSCAPS_DOUBLE; + if (displayArgs.contains(QLatin1String("static_alloc"))) + caps |= DSCAPS_STATIC_ALLOC; + + if (displayArgs.contains(QLatin1String("forcepremultiplied"), Qt::CaseInsensitive)) { + caps |= DSCAPS_PREMULTIPLIED; } + description.caps = DFBSurfaceCapabilities(caps); // We don't track the primary surface as it's released in disconnect d_ptr->dfbSurface = createDFBSurface(&description, DontTrackSurface); if (!d_ptr->dfbSurface) { -- cgit v0.12 From 5a7f626f3c6d5d5e2ceaa2c7db9de5b51deca637 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Wed, 22 Apr 2009 09:41:54 -0700 Subject: Unify IDirectFBSurface->Lock() calls Certain compilers warns on this kind of code: uchar *mem = ...; (void**)(&mem) dereferencing type punned pointer etc. Since we had this for every call to Lock I put it all into a convenience function. Also fix some issues where we memcpy'ed more bytes than necessary (when stride != w * depth() / 8) and fix issue with QDirectFBScreen::solidFill with pixelFormat == RGB32 Reviewed-by: Donald --- .../gfxdrivers/directfb/qdirectfbpaintdevice.cpp | 19 ++----- .../gfxdrivers/directfb/qdirectfbpixmap.cpp | 19 ++++--- .../gfxdrivers/directfb/qdirectfbscreen.cpp | 64 ++++++++++++++-------- src/plugins/gfxdrivers/directfb/qdirectfbscreen.h | 2 + 4 files changed, 58 insertions(+), 46 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp index 2a2ef5c..924090c 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp @@ -56,23 +56,16 @@ IDirectFBSurface *QDirectFBPaintDevice::directFBSurface() const } -// Locks the dfb surface and creates a QImage (lockedImage) from the pointer -void QDirectFBPaintDevice::lockDirectFB() { - +void QDirectFBPaintDevice::lockDirectFB() +{ if (lockedImage) return; // Already locked - void *mem; - int w, h; - DFBResult result = dfbSurface->Lock(dfbSurface, DSLF_WRITE, &mem, &bpl); - if (result != DFB_OK || !mem) { - DirectFBError("QDirectFBPixmapData::buffer()", result); - return; + if (uchar *mem = QDirectFBScreen::lockSurface(dfbSurface, DSLF_WRITE, &bpl)) { + const QSize s = size(); + lockedImage = new QImage(mem, s.width(), s.height(), bpl, + QDirectFBScreen::getImageFormat(dfbSurface)); } - - dfbSurface->GetSize(dfbSurface, &w, &h); - lockedImage = new QImage(static_cast(mem), w, h, bpl, - QDirectFBScreen::getImageFormat(dfbSurface)); } diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp index 0a1696a..a6017b8 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp @@ -267,16 +267,17 @@ void QDirectFBPixmapData::fill(const QColor &color) if (forceRaster) { // in DSPF_RGB32 all dfb drawing causes the Alpha byte to be // set to 0. This causes issues for the raster engine. - char *mem; - int bpl; - const int h = QPixmapData::height(); - dfbSurface->Lock(dfbSurface, DSLF_WRITE, (void**)&mem, &bpl); - const int c = color.rgba(); - for (int i = 0; i < h; ++i) { - memset(mem, c, bpl); - mem += bpl; + uchar *mem = QDirectFBScreen::lockSurface(dfbSurface, DSLF_WRITE, &bpl); + if (mem) { + const int h = QPixmapData::height(); + const int w = QPixmapData::width() * 4; // 4 bytes per 32 bit pixel + const int c = color.rgba(); + for (int i = 0; i < h; ++i) { + memset(mem, c, w); + mem += bpl; + } + dfbSurface->Unlock(dfbSurface); } - dfbSurface->Unlock(dfbSurface); } else { dfbSurface->Clear(dfbSurface, color.red(), color.green(), color.blue(), color.alpha()); diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp index 65c027d..490eeb0 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp @@ -159,15 +159,17 @@ IDirectFBSurface* QDirectFBScreen::createDFBSurface(const QImage &img, SurfaceCr IDirectFBSurface *surface = createDFBSurface(&desc, options); #ifdef QT_NO_DIRECTFB_PREALLOCATED if (surface) { - char *mem; int bpl; - surface->Lock(surface, DSLF_WRITE, (void**)&mem, &bpl); - const int h = img.height(); - for (int i = 0; i < h; ++i) { - memcpy(mem, img.scanLine(i), bpl); - mem += bpl; + uchar *mem = QDirectFBScreen::lockSurface(surface, DSLF_WRITE, &bpl); + if (mem) { + const int h = img.height(); + const int w = img.width() * img.depth() / 8; + for (int i = 0; i < h; ++i) { + memcpy(mem, img.scanLine(i), w); + mem += bpl; + } + surface->Unlock(surface); } - surface->Unlock(surface); } #endif #ifndef QT_NO_DIRECTFB_PALETTE @@ -317,15 +319,17 @@ IDirectFBSurface *QDirectFBScreen::copyToDFBSurface(const QImage &img, imgSurface->Release(imgSurface); #else // QT_NO_DIRECTFB_PREALLOCATED Q_ASSERT(image.format() == pixmapFormat); - char *mem; int bpl; - dfbSurface->Lock(dfbSurface, DSLF_WRITE, (void**)&mem, &bpl); - const int w = image.width() * image.depth() / 8; - for (int i = 0; i < image.height(); ++i) { - memcpy(mem, image.scanLine(i), w); - mem += bpl; + uchar *mem = QDirectFBScreen::lockSurface(dfbSurface, DSLF_WRITE, &bpl); + if (mem) { + const int h = image.height(); + const int w = image.width() * image.depth() / 8; + for (int i=0; iUnlock(dfbSurface); } - dfbSurface->Unlock(dfbSurface); #endif return dfbSurface; } @@ -1188,23 +1192,23 @@ void QDirectFBScreen::blit(IDirectFBSurface *src, const QPoint &topLeft, points.data(), n); } +// This function is only ever called by QScreen::drawBackground which +// is only ever called by QScreen::compose which is never called with +// DirectFB so it's really a noop. void QDirectFBScreen::solidFill(const QColor &color, const QRegion ®ion) { if (region.isEmpty()) return; if (QDirectFBScreen::getImageFormat(d_ptr->dfbSurface) == QImage::Format_RGB32) { - uchar *mem; - int bpl; - d_ptr->dfbSurface->Lock(d_ptr->dfbSurface, DSLF_WRITE, (void**)&mem, &bpl); - QImage img(mem, w, h, bpl, QImage::Format_RGB32); - QPainter p(&img); - p.setBrush(color); - p.setPen(Qt::NoPen); - const QVector rects = region.rects(); - p.drawRects(rects.constData(), rects.size()); - p.end(); + data = QDirectFBScreen::lockSurface(d_ptr->dfbSurface, DSLF_WRITE, &lstep); + if (!data) + return; + + QScreen::solidFill(color, region); d_ptr->dfbSurface->Unlock(d_ptr->dfbSurface); + data = 0; + lstep = 0; } else { d_ptr->dfbSurface->SetColor(d_ptr->dfbSurface, color.red(), color.green(), color.blue(), @@ -1241,3 +1245,15 @@ bool QDirectFBScreen::initSurfaceDescriptionPixelFormat(DFBSurfaceDescription *d } return true; } + +uchar *QDirectFBScreen::lockSurface(IDirectFBSurface *surface, DFBSurfaceLockFlags flags, int *bpl) +{ + void *mem; + const DFBResult result = surface->Lock(surface, flags, static_cast(&mem), bpl); + if (result != DFB_OK) { + DirectFBError("QDirectFBPixmapData::lockSurface()", result); + } + + return reinterpret_cast(mem); +} + diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h index f394ac1..8dd38dc 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h @@ -127,6 +127,8 @@ public: const QImage &image); #endif + static uchar *lockSurface(IDirectFBSurface *surface, DFBSurfaceLockFlags flags, int *bpl = 0); + private: void compose(const QRegion &r); void blit(IDirectFBSurface *src, const QPoint &topLeft, -- cgit v0.12 From b250e23a418f991bb979158e119bdb78cddc8228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= Date: Wed, 22 Apr 2009 19:24:10 +0200 Subject: Don't emit QApplication::focusChanged for no reason The Qt::NoFocusReason is used when Qt temporarily moves the focus to the QMenuBar while switching from one widget to another. While this did not result in a QFocusEvent, it did result in emitting the QApplication::focusChanged signal. This in turn caused a slowness in Qt Creator, since it wanted to update the current context and find filter. The fix here makes sure the focusChanged signal is not emitted when the focus reason is Qt::NoFocusReason, since these focus changes are not interesting for the application. Reviewed-by: mae --- src/gui/kernel/qapplication.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 1624b9d..d0b1790 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -2100,8 +2100,8 @@ void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason) if (that) QApplication::sendEvent(that->style(), &in); } + emit qApp->focusChanged(prev, focus_widget); } - emit qApp->focusChanged(prev, focus_widget); } } -- cgit v0.12 From 5c5d5cf6f70155d0920d8727696785d8348d65fb Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Wed, 22 Apr 2009 20:12:45 +0200 Subject: Show filter extensions in the GTK file dialog if no name is provided In the GTK+ file dialog filters are only represented by names such as "All files", while the actual extensions are hidden. You can create a filter without a name in Qt however so in this case we have to fall back to showing the file extensions instead. Task-number: 251928 Reviewed-by: rosch --- src/gui/styles/gtksymbols.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/styles/gtksymbols.cpp b/src/gui/styles/gtksymbols.cpp index acb8437..0842ec7 100644 --- a/src/gui/styles/gtksymbols.cpp +++ b/src/gui/styles/gtksymbols.cpp @@ -746,9 +746,9 @@ static void setupGtkFileChooser(GtkWidget* gtkFileChooser, QWidget *parent, foreach (const QString &rawfilter, filters) { GtkFileFilter *gtkFilter = QGtk::gtk_file_filter_new (); QString name = rawfilter.left(rawfilter.indexOf(QLatin1Char('('))); - QGtk::gtk_file_filter_set_name(gtkFilter, qPrintable(name)); - QStringList extensions = extract_filter(rawfilter); + QGtk::gtk_file_filter_set_name(gtkFilter, qPrintable(name.isEmpty() ? extensions.join(QLS(", ")) : name)); + foreach (const QString &fileExtension, extensions) { QGtk::gtk_file_filter_add_pattern (gtkFilter, qPrintable(fileExtension)); } -- cgit v0.12 From 8d7729cd116d40b0ab0bc65a709fe7b70ba84e64 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Wed, 22 Apr 2009 11:57:46 -0700 Subject: Kill some warnings Refactor two small things so that we don't get warnings when QT_DIRECTFB_NO_(OPAQUEDETECTION|MOUSE|KEYBOARD) is defined Reviewed-by: Shane McLaughlin --- src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp | 3 +++ src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp | 5 ++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp index a6017b8..f9172cc 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp @@ -160,6 +160,9 @@ static bool checkForAlphaPixels(const QImage &img) void QDirectFBPixmapData::fromImage(const QImage &img, Qt::ImageConversionFlags flags) { +#ifdef QT_NO_DIRECTFB_OPAQUE_DETECTION + Q_UNUSED(flags); +#endif Q_ASSERT(img.depth() != 1); // these should be handled by QRasterPixmapData if (img.hasAlphaChannel() #ifndef QT_NO_DIRECTFB_OPAQUE_DETECTION diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp index 490eeb0..b2b8e9b 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp @@ -956,16 +956,15 @@ void QDirectFBScreen::disconnect() bool QDirectFBScreen::initDevice() { - QWSServer *server = QWSServer::instance(); #ifndef QT_NO_DIRECTFB_MOUSE if (qgetenv("QWS_MOUSE_PROTO").isEmpty()) { - server->setDefaultMouse("None"); + QWSServer::instance()->->setDefaultMouse("None"); d_ptr->mouse = new QDirectFBMouseHandler; } #endif #ifndef QT_NO_DIRECTFB_KEYBOARD if (qgetenv("QWS_KEYBOARD").isEmpty()) { - server->setDefaultKeyboard("None"); + QWSServer::instance()->->setDefaultKeyboard("None"); d_ptr->keyboard = new QDirectFBKeyboardHandler(QString()); } #endif -- cgit v0.12 From 08218fb6dbcc4f133c20cdc3a4e6575606924a29 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Wed, 22 Apr 2009 12:31:03 -0700 Subject: Compile Reviewed-by: TrustMe --- src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp index b2b8e9b..3e54e7f 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp @@ -958,13 +958,13 @@ bool QDirectFBScreen::initDevice() { #ifndef QT_NO_DIRECTFB_MOUSE if (qgetenv("QWS_MOUSE_PROTO").isEmpty()) { - QWSServer::instance()->->setDefaultMouse("None"); + QWSServer::instance()->setDefaultMouse("None"); d_ptr->mouse = new QDirectFBMouseHandler; } #endif #ifndef QT_NO_DIRECTFB_KEYBOARD if (qgetenv("QWS_KEYBOARD").isEmpty()) { - QWSServer::instance()->->setDefaultKeyboard("None"); + QWSServer::instance()->setDefaultKeyboard("None"); d_ptr->keyboard = new QDirectFBKeyboardHandler(QString()); } #endif -- cgit v0.12 From d64d13102d3d53d0aa43597408d7abf3fecb57a3 Mon Sep 17 00:00:00 2001 From: Anders Bakken Date: Wed, 22 Apr 2009 15:09:59 -0700 Subject: Convert bitmaps to alpha pixmap format Ideally we'd let raster pixmap data handle this but QPixmap::fromImage creates a QPixmapData::PixmapType regardless of the bit depth of the image so we have to handle this case. Reviewed-by: Donald --- src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp index f9172cc..ea9bb3a 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp @@ -157,13 +157,13 @@ static bool checkForAlphaPixels(const QImage &img) return false; } -void QDirectFBPixmapData::fromImage(const QImage &img, +void QDirectFBPixmapData::fromImage(const QImage &i, Qt::ImageConversionFlags flags) { #ifdef QT_NO_DIRECTFB_OPAQUE_DETECTION Q_UNUSED(flags); #endif - Q_ASSERT(img.depth() != 1); // these should be handled by QRasterPixmapData + const QImage img = (i.depth() == 1 ? i.convertToFormat(screen->alphaPixmapFormat()) : i); if (img.hasAlphaChannel() #ifndef QT_NO_DIRECTFB_OPAQUE_DETECTION && (flags & Qt::NoOpaqueDetection || ::checkForAlphaPixels(img)) -- cgit v0.12 From ed24cd82444faeeda0a171a9082808ebb667e092 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Thu, 23 Apr 2009 08:41:39 +1000 Subject: Fixes compile on linux-g++-32 and linux-g++-64. Broken by a8d14ae567c7e847c6dbba644c36fbc6c6afc468 --- src/gui/styles/qstylehelper_p.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/styles/qstylehelper_p.h b/src/gui/styles/qstylehelper_p.h index 24b4948..711bd2d 100644 --- a/src/gui/styles/qstylehelper_p.h +++ b/src/gui/styles/qstylehelper_p.h @@ -19,6 +19,7 @@ QT_BEGIN_NAMESPACE class QPainter; +class QPixmap; class QStyleOptionSlider; class QStyleOption; -- cgit v0.12 From 7fa8e95d1b87403aab14dd326520600bc028a195 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Thu, 23 Apr 2009 09:06:43 +1000 Subject: Fixes memory leak in QSvgWidget. `q' is 0 during construction of QSvgWidgetPrivate, thus each QSvgWidget instance was creating a QSvgRenderer with no parent. Acked-by: Thiago Macieira Reviewed-by: Shane Bradley --- src/svg/qsvgwidget.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/svg/qsvgwidget.cpp b/src/svg/qsvgwidget.cpp index a4200ca..ac8595f 100644 --- a/src/svg/qsvgwidget.cpp +++ b/src/svg/qsvgwidget.cpp @@ -83,18 +83,6 @@ class QSvgWidgetPrivate : public QWidgetPrivate { Q_DECLARE_PUBLIC(QSvgWidget) public: - QSvgWidgetPrivate() - : QWidgetPrivate() - { - Q_Q(QSvgWidget); - renderer = new QSvgRenderer(q); - } - QSvgWidgetPrivate(const QString &file) - : QWidgetPrivate() - { - Q_Q(QSvgWidget); - renderer = new QSvgRenderer(file, q); - } QSvgRenderer *renderer; }; @@ -104,6 +92,7 @@ public: QSvgWidget::QSvgWidget(QWidget *parent) : QWidget(*new QSvgWidgetPrivate, parent, 0) { + d_func()->renderer = new QSvgRenderer(this); QObject::connect(d_func()->renderer, SIGNAL(repaintNeeded()), this, SLOT(update())); } @@ -113,8 +102,9 @@ QSvgWidget::QSvgWidget(QWidget *parent) of the specified \a file. */ QSvgWidget::QSvgWidget(const QString &file, QWidget *parent) - : QWidget(*new QSvgWidgetPrivate(file), parent, 0) + : QWidget(*new QSvgWidgetPrivate, parent, 0) { + d_func()->renderer = new QSvgRenderer(file, this); QObject::connect(d_func()->renderer, SIGNAL(repaintNeeded()), this, SLOT(update())); } -- cgit v0.12 From 99d243860548d6be8a68dfd027c51530351d12cb Mon Sep 17 00:00:00 2001 From: jasplin Date: Thu, 23 Apr 2009 08:48:15 +0200 Subject: Removed dead code. Reviewed-by: TrustMe --- src/gui/kernel/qshortcutmap.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/gui/kernel/qshortcutmap.cpp b/src/gui/kernel/qshortcutmap.cpp index 9766a69..415d71e 100644 --- a/src/gui/kernel/qshortcutmap.cpp +++ b/src/gui/kernel/qshortcutmap.cpp @@ -359,8 +359,6 @@ bool QShortcutMap::tryShortcutEvent(QObject *o, QKeyEvent *e) else e->ignore(); - int identicalMatches = d->identicals.count(); - switch(result) { case QKeySequence::NoMatch: return stateWasAccepted; -- cgit v0.12 From 389c4fdebe681eb3af5a2431c390323f52a03c17 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Thu, 23 Apr 2009 09:24:23 +0200 Subject: Carbon/Cocoa: It is possible to resize a widget above its maximum size This is not strange since we never did anything to limit a resize within the max min boundries. This patch factores out the code that ensures this into a private function that is called both as a reaction to a resize event, but also if resize is done programatically. Task-number: 251893 Reviewed-by: Trenton Schulz --- src/gui/kernel/qwidget_mac.mm | 88 ++++++++++++++++++++++++------------------- src/gui/kernel/qwidget_p.h | 1 + 2 files changed, 50 insertions(+), 39 deletions(-) diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 37dc79c..a00f969 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -4001,6 +4001,33 @@ void QWidgetPrivate::setWSGeometry(bool dontShow, const QRect &oldRect) } } +void QWidgetPrivate::applyMaxAndMinSizeConstraints(int &w, int &h) +{ + if (QWExtra *extra = extraData()) { + w = qMin(w, extra->maxw); + h = qMin(h, extra->maxh); + w = qMax(w, extra->minw); + h = qMax(h, extra->minh); + + // Deal with size increment + if (QTLWExtra *top = topData()) { + if(top->incw) { + w = w/top->incw; + w *= top->incw; + } + if(top->inch) { + h = h/top->inch; + h *= top->inch; + } + } + } + + if (isRealWindow()) { + w = qMax(0, w); + h = qMax(0, h); + } +} + void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove) { Q_Q(QWidget); @@ -4011,7 +4038,9 @@ void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove) QMacCocoaAutoReleasePool pool; bool realWindow = isRealWindow(); + if (realWindow && !(w == 0 && h == 0) && !q->testAttribute(Qt::WA_DontShowOnScreen)) { + applyMaxAndMinSizeConstraints(w, h); topData()->isSetGeometry = 1; topData()->isMove = isMove; #ifndef QT_MAC_USE_COCOA @@ -4037,10 +4066,26 @@ void QWidgetPrivate::setGeometry_sys_helper(int x, int y, int w, int h, bool isM { Q_Q(QWidget); bool realWindow = isRealWindow(); - if(QWExtra *extra = extraData()) { // any size restrictions? - if(realWindow) { + + QPoint oldp = q->pos(); + QSize olds = q->size(); + const bool isResize = (olds != QSize(w, h)); + + if (!realWindow && !isResize && QPoint(x, y) == oldp) + return; + + if (isResize) + data.window_state = data.window_state & ~Qt::WindowMaximized; + + const bool visible = q->isVisible(); + data.crect = QRect(x, y, w, h); + + if (realWindow) { + if (QWExtra *extra = extraData()) { + applyMaxAndMinSizeConstraints(w, h); qt_mac_update_sizer(q); - if(q->windowFlags() & Qt::WindowMaximizeButtonHint) { + + if (q->windowFlags() & Qt::WindowMaximizeButtonHint) { #ifndef QT_MAC_USE_COCOA OSWindowRef window = qt_mac_window_for(q); if(extra->maxw && extra->maxh && extra->maxw == extra->minw @@ -4051,43 +4096,8 @@ void QWidgetPrivate::setGeometry_sys_helper(int x, int y, int w, int h, bool isM } #endif } - } - - w = qMin(w,extra->maxw); - h = qMin(h,extra->maxh); - w = qMax(w,extra->minw); - h = qMax(h,extra->minh); - - // Deal with size increment - if(QTLWExtra *top = topData()) { - if(top->incw) { - w = w/top->incw; - w *= top->incw; - } - if(top->inch) { - h = h/top->inch; - h *= top->inch; - } - } - } - - if (realWindow) { - w = qMax(0, w); - h = qMax(0, h); - } - - QPoint oldp = q->pos(); - QSize olds = q->size(); - const bool isResize = (olds != QSize(w, h)); - if(!realWindow && !isResize && QPoint(x, y) == oldp) - return; - if(isResize && q->isMaximized()) - data.window_state = data.window_state & ~Qt::WindowMaximized; - const bool visible = q->isVisible(); - data.crect = QRect(x, y, w, h); - if(realWindow) { - if(QWExtra *extra = extraData()) { //set constraints + // Update max and min constraints: const float max_f(20000); #ifndef QT_MAC_USE_COCOA #define SF(x) ((x > max_f) ? max_f : x) diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h index 9e93f66..423e833 100644 --- a/src/gui/kernel/qwidget_p.h +++ b/src/gui/kernel/qwidget_p.h @@ -257,6 +257,7 @@ public: void macUpdateIsOpaque(); void setEnabled_helper_sys(bool enable); bool isRealWindow() const; + void applyMaxAndMinSizeConstraints(int &w, int &h); #endif void raise_sys(); -- cgit v0.12