From 4645c7861804b3e22333ba29244b6ee4a60175b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Morten=20S=C3=B8rvig?=
Date: Tue, 16 Jun 2009 15:52:51 +0200
Subject: Blank out the Qt-3 area license headers in the qt3to4 resources.
Avoid triggering the license checks in Qt 4. Replace characters between
"/*" and "*/" with a space.
Reviewed-by: Trust Me
---
tools/porting/src/qt3headers0.resource | Bin 547809 -> 548362 bytes
tools/porting/src/qt3headers1.resource | Bin 512251 -> 512882 bytes
tools/porting/src/qt3headers2.resource | Bin 392439 -> 393093 bytes
tools/porting/src/qt3headers3.resource | Bin 553089 -> 553753 bytes
4 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/tools/porting/src/qt3headers0.resource b/tools/porting/src/qt3headers0.resource
index 13be468..8e24385 100644
Binary files a/tools/porting/src/qt3headers0.resource and b/tools/porting/src/qt3headers0.resource differ
diff --git a/tools/porting/src/qt3headers1.resource b/tools/porting/src/qt3headers1.resource
index e06d270..8da4b9a 100644
Binary files a/tools/porting/src/qt3headers1.resource and b/tools/porting/src/qt3headers1.resource differ
diff --git a/tools/porting/src/qt3headers2.resource b/tools/porting/src/qt3headers2.resource
index e44c81d..62bdb8e 100644
Binary files a/tools/porting/src/qt3headers2.resource and b/tools/porting/src/qt3headers2.resource differ
diff --git a/tools/porting/src/qt3headers3.resource b/tools/porting/src/qt3headers3.resource
index 6d259f2..6a096e8 100644
Binary files a/tools/porting/src/qt3headers3.resource and b/tools/porting/src/qt3headers3.resource differ
--
cgit v0.12
From f2f9babce5d7910f76aa47f5c446ccd0f9f23ac1 Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen
Date: Tue, 16 Jun 2009 17:29:22 +0200
Subject: revert built-time qm generation
it simply breaks too much (embedded builds in particular).
will come up with something better in master.
note however, that the .qm files do NOT return to the repository. the
release manager needs to run "make qm" before packaging, just like
Qt-from-git users who want translations do (i.e., almost nobody).
Reviewed-by: Jason McDonald
---
configure | 4 ----
configure.exe | Bin 856064 -> 856064 bytes
projects.pro | 7 +-----
tools/configure/configureapp.cpp | 1 -
translations/translations.pri | 38 ++++++++++++++++++++++++++---
translations/translations.pro | 50 ---------------------------------------
6 files changed, 36 insertions(+), 64 deletions(-)
delete mode 100644 translations/translations.pro
diff --git a/configure b/configure
index 336b7cf..e58180a 100755
--- a/configure
+++ b/configure
@@ -7050,9 +7050,6 @@ FNR == 1 {
if ( \$3 == "moc" || \$3 ~ /^Qt/ ) {
target_file = first
matched_target = 1
- } else if ( \$3 == "lrelease" || \$3 == "qm_phony_target" ) {
- target_file = second
- matched_target = 1
}
}
@@ -7137,7 +7134,6 @@ for part in $CFG_BUILD_PARTS; do
case "$part" in
tools) PART_ROOTS="$PART_ROOTS tools" ;;
libs) PART_ROOTS="$PART_ROOTS src" ;;
- translations) PART_ROOTS="$PART_ROOTS tools/linguist/lrelease translations" ;;
examples) PART_ROOTS="$PART_ROOTS examples demos" ;;
*) ;;
esac
diff --git a/configure.exe b/configure.exe
index c7e09fc..9da5c60 100644
Binary files a/configure.exe and b/configure.exe differ
diff --git a/projects.pro b/projects.pro
index fc53100..f6c596d 100644
--- a/projects.pro
+++ b/projects.pro
@@ -41,12 +41,7 @@ for(PROJECT, $$list($$lower($$unique(QT_BUILD_PARTS)))) {
} else:isEqual(PROJECT, docs) {
contains(QT_BUILD_PARTS, tools):include(doc/doc.pri)
} else:isEqual(PROJECT, translations) {
- contains(QT_BUILD_PARTS, tools) {
- include(translations/translations.pri) # ts targets
- } else {
- SUBDIRS += tools/linguist/lrelease
- }
- SUBDIRS += translations # qm build step
+ contains(QT_BUILD_PARTS, tools):include(translations/translations.pri)
} else:isEqual(PROJECT, qmake) {
# SUBDIRS += qmake
} else {
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index c01ea38..b9acdb1 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -3142,7 +3142,6 @@ void Configure::buildHostTools()
<< "src/tools/moc"
<< "src/tools/rcc"
<< "src/tools/uic"
- << "tools/linguist/lrelease"
<< "tools/checksdk";
if (dictionary[ "CETEST" ] == "yes")
diff --git a/translations/translations.pri b/translations/translations.pri
index c143043..0c5c1ee 100644
--- a/translations/translations.pri
+++ b/translations/translations.pri
@@ -8,8 +8,16 @@ defineReplace(prependAll) {
return ($$result)
}
-LUPDATE = $$QT_BUILD_TREE/bin/lupdate -locations relative -no-ui-lines
-win32:LUPDATE ~= s|/|\|g
+defineReplace(fixPath) {
+WIN {
+ return ($$replace($$1, /, \))
+} ELSE {
+ return ($$1)
+}
+}
+
+LUPDATE = $$fixPath($$QT_BUILD_TREE/bin/lupdate) -locations relative -no-ui-lines
+LRELEASE = $$fixPath($$QT_BUILD_TREE/bin/lrelease)
###### Qt Libraries
@@ -33,18 +41,27 @@ ts-qt.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
-ts $$prependAll($$[QT_INSTALL_TRANSLATIONS]/qt_,$$QT_TS,.ts))
ts-qt.depends = sub-tools
+qm-qt.commands = $$LRELEASE $$prependAll($$[QT_INSTALL_TRANSLATIONS]/qt_,$$QT_TS,.ts)
+qm-qt.depends = sub-tools
+
###### Designer
ts-designer.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
../tools/designer/translations/translations.pro)
ts-designer.depends = sub-tools
+qm-designer.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/designer/translations/translations.pro
+qm-designer.depends = sub-tools
+
###### Linguist
ts-linguist.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
../tools/linguist/linguist/linguist.pro)
ts-linguist.depends = sub-tools
+qm-linguist.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/linguist/linguist/linguist.pro
+qm-linguist.depends = sub-tools
+
###### Assistant
ts-assistant.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
@@ -55,21 +72,36 @@ ts-assistant.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
../tools/assistant/translations/translations_adp.pro)
ts-assistant.depends = sub-tools
+qm-assistant.commands = ($$LRELEASE $$QT_SOURCE_TREE/tools/assistant/translations/translations.pro \
+ && $$LRELEASE \
+ $$QT_SOURCE_TREE/tools/assistant/translations/qt_help.pro \
+ && $$LRELEASE \
+ $$QT_SOURCE_TREE/tools/assistant/translations/translations_adp.pro)
+qm-assistant.depends = sub-tools
+
###### Qtconfig
ts-qtconfig.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
../tools/qtconfig/translations/translations.pro)
ts-qtconfig.depends = sub-tools
+qm-qtconfig.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/qtconfig/translations/translations.pro
+qm-qtconfig.depends = sub-tools
+
###### Qvfp
ts-qvfb.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
../tools/qvfb/translations/translations.pro)
ts-qvfb.depends = sub-tools
+qm-qvfb.commands = $$LRELEASE $$QT_SOURCE_TREE/tools/qvfb/translations/translations.pro
+qm-qvfb.depends = sub-tools
+
###### Overall Rules
ts.depends = ts-qt ts-designer ts-linguist ts-assistant ts-qtconfig ts-qvfb
+qm.depends = qm-qt qm-designer qm-linguist qm-assistant qm-qtconfig qm-qvfb
QMAKE_EXTRA_TARGETS += ts-qt ts-designer ts-linguist ts-assistant ts-qtconfig ts-qvfb \
- ts
+ qm-qt qm-designer qm-linguist qm-assistant qm-qtconfig qm-qvfb \
+ ts qm
diff --git a/translations/translations.pro b/translations/translations.pro
deleted file mode 100644
index 6f14108..0000000
--- a/translations/translations.pro
+++ /dev/null
@@ -1,50 +0,0 @@
-TRANSLATIONS = $$files(*.ts)
-
-LRELEASE = $$QT_BUILD_TREE/bin/lrelease
-win32 {
- LRELEASE ~= s|/|\|g
-} else:!static {
- path = $$QT_BUILD_TREE/lib
- !macx:var = LD_LIBRARY_PATH
- else:qt_no_framework:var = DYLD_LIBRARY_PATH
- else:var = DYLD_FRAMEWORK_PATH
-
- LRELEASE = test -z \"\$\$$$var\" && $$var=$$path || $$var=$$path:\$\$$$var; export $$var; $$LRELEASE
-}
-
-contains(TEMPLATE_PREFIX, vc):vcproj = 1
-
-TEMPLATE = app
-TARGET = qm_phony_target
-CONFIG -= qt separate_debug_info
-QT =
-LIBS =
-
-updateqm.input = TRANSLATIONS
-updateqm.output = ${QMAKE_FILE_BASE}.qm
-isEmpty(vcproj):updateqm.variable_out = PRE_TARGETDEPS
-updateqm.commands = @echo lrelease ${QMAKE_FILE_IN}; $$LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT}
-updateqm.name = LRELEASE ${QMAKE_FILE_IN}
-updateqm.CONFIG += no_link
-QMAKE_EXTRA_COMPILERS += updateqm
-
-isEmpty(vcproj) {
- QMAKE_LINK = @: IGNORE THIS LINE
- OBJECTS_DIR =
- win32:CONFIG -= embed_manifest_exe
-} else {
- CONFIG += console
- PHONY_DEPS = .
- phony_src.input = PHONY_DEPS
- phony_src.output = phony.c
- phony_src.variable_out = GENERATED_SOURCES
- phony_src.commands = echo int main() { return 0; } > phony.c
- phony_src.name = CREATE phony.c
- phony_src.CONFIG += combine
- QMAKE_EXTRA_COMPILERS += phony_src
-}
-
-translations.path = $$[QT_INSTALL_TRANSLATIONS]
-translations.files = $$TRANSLATIONS
-translations.files ~= s,\\.ts$,.qm,g
-INSTALLS += translations
--
cgit v0.12
From eb80cebd25020e26f9f4d0111f53f2246c503194 Mon Sep 17 00:00:00 2001
From: Derick Hawcroft
Date: Wed, 17 Jun 2009 09:02:29 +1000
Subject: add SqlQuery unit test for task: 234422
---
tests/auto/qsqlquery/tst_qsqlquery.cpp | 41 +++++++++++++++++++++++++++++++++-
1 file changed, 40 insertions(+), 1 deletion(-)
diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp
index d17706b..825db6c 100644
--- a/tests/auto/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp
@@ -177,9 +177,10 @@ private slots:
#ifdef NOT_READY_YET
void task_217003_data() { generic_data(); }
void task_217003();
-
void task_229811();
void task_229811_data() { generic_data(); }
+ void task_234422_data() { generic_data(); }
+ void task_234422();
#endif
void task_250026_data() { generic_data("QODBC"); }
void task_250026();
@@ -2775,6 +2776,44 @@ void tst_QSqlQuery::task_229811()
q.exec("DROP TABLE " + tableName );
}
+
+void tst_QSqlQuery::task_234422()
+{
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+
+ QSqlQuery query(db);
+ QStringList m_airlines;
+ QStringList m_countries;
+
+ m_airlines << "Lufthansa" << "SAS" << "United" << "KLM" << "Aeroflot";
+ m_countries << "DE" << "SE" << "US" << "NL" << "RU";
+
+ QString tableName = qTableName( "task_234422" );
+
+ query.exec("DROP TABLE " + tableName);
+ QVERIFY_SQL(query,exec("CREATE TABLE " + tableName + " (id int primary key, "
+ "name varchar(20), homecountry varchar(2))"));
+ for (int i = 0; i < m_airlines.count(); ++i) {
+ QVERIFY(query.exec(QString("INSERT INTO " + tableName + " values(%1, '%2', '%3')")
+ .arg(i).arg(m_airlines[i], m_countries[i])));
+ }
+
+ QVERIFY_SQL(query, exec("SELECT name FROM " + tableName));
+ QVERIFY(query.isSelect());
+ QVERIFY(query.first());
+ QVERIFY(query.next());
+ QCOMPARE(query.at(), 1);
+
+ QSqlQuery query2(query);
+
+ QVERIFY_SQL(query2,exec());
+ QVERIFY(query2.first());
+ QCOMPARE(query2.at(), 0);
+ QCOMPARE(query.at(), 1);
+}
+
#endif
QTEST_MAIN( tst_QSqlQuery )
--
cgit v0.12
From e5b32fbe0efc8b6b688374fde3fc1c01fe685d98 Mon Sep 17 00:00:00 2001
From: Thierry Bastian
Date: Tue, 16 Jun 2009 17:45:20 +0200
Subject: Fixed a bottleneck in itemviews that would ask for an update outside
of the boundaries of the viewport.
Now we catch this and don't call update. This was a performance
regression against 4.4.
Task-number: 256183
Reviewed-by: alexis
---
src/gui/itemviews/qabstractitemview.cpp | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index 5673019..c3d1bf7 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -2901,8 +2901,14 @@ void QAbstractItemView::scrollToBottom()
void QAbstractItemView::update(const QModelIndex &index)
{
Q_D(QAbstractItemView);
- if (index.isValid())
- d->viewport->update(visualRect(index));
+ if (index.isValid()) {
+ const QRect rect = visualRect(index);
+ //this test is important for peformance reason
+ //For example in dataChanged we simply update all the cells without checking
+ //it can be a major bottleneck to update rects that aren't even part of the viewport
+ if (d->viewport->geometry().intersects(rect))
+ d->viewport->update(rect);
+ }
}
/*!
--
cgit v0.12
From a54c18e27bbb14872abd0559c268ba33b1265703 Mon Sep 17 00:00:00 2001
From: Thierry Bastian
Date: Wed, 17 Jun 2009 10:42:26 +0200
Subject: ItemViews : Fixed a performance regression whne changing data in the
model
This is a part of a bigger patch from 4.6
90cdbf8bd409652fd1e28adcd7f02fc1fae2c1c0
Task-number: 256183
Reviewed-by: ogoffart
---
src/gui/itemviews/qabstractitemview.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index c3d1bf7..8594968 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -2932,7 +2932,7 @@ void QAbstractItemView::dataChanged(const QModelIndex &topLeft, const QModelInde
}
if (isVisible() && !d->delayedPendingLayout) {
// otherwise the items will be update later anyway
- d->viewport->update(visualRect(topLeft));
+ update(topLeft);
}
return;
}
--
cgit v0.12
From b56095c51087717c0797f64abf3c4200066348b8 Mon Sep 17 00:00:00 2001
From: Jason McDonald
Date: Wed, 17 Jun 2009 18:52:23 +1000
Subject: BT: Remove Intel CC 10 issue from known issues doc.
Acked-by: Andy Shaw
---
doc/src/known-issues.qdoc | 7 -------
1 file changed, 7 deletions(-)
diff --git a/doc/src/known-issues.qdoc b/doc/src/known-issues.qdoc
index e005b14..9c90908 100644
--- a/doc/src/known-issues.qdoc
+++ b/doc/src/known-issues.qdoc
@@ -58,13 +58,6 @@
\section1 Issues with Third Party Software
- \section2 Intel Compiler Support
-
- Although it is possible to build applications against Qt 4.5.x using Intel
- CC 10, these applications will crash when run. We recommend that developers
- who rely on this compiler wait until a fix is available before upgrading to
- the Qt 4.5.x series of releases.
-
\section2 X11 Hardware Support
\list
--
cgit v0.12
From e3736c5031b941a665952a9696d989d79b25f32f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Samuel=20R=C3=B8dal?=
Date: Tue, 16 Jun 2009 09:03:15 +0200
Subject: Fixed segmentation fault caused by empty clip.
Make sure not to use the broken QRect constructor, and do an early check
on whether the clip rect is empty in QRasterizer::rasterizeLine().
Task-number: 254105
Reviewed-by: Trond
---
src/gui/painting/qpaintengine_raster.cpp | 2 +-
src/gui/painting/qrasterizer.cpp | 2 +-
tests/auto/qpainter/tst_qpainter.cpp | 19 +++++++++++++++++++
3 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 743c4b8..84af880 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -3956,7 +3956,7 @@ void QRasterPaintEnginePrivate::initializeRasterizer(QSpanData *data)
const QClipData *c = clip();
if (c) {
const QRect r(QPoint(c->xmin, c->ymin),
- QPoint(c->xmax, c->ymax));
+ QSize(c->xmax - c->xmin, c->ymax - c->ymin));
clipRect = clipRect.intersected(r);
blend = data->blend;
} else {
diff --git a/src/gui/painting/qrasterizer.cpp b/src/gui/painting/qrasterizer.cpp
index 629b38e..58e4b4e 100644
--- a/src/gui/painting/qrasterizer.cpp
+++ b/src/gui/painting/qrasterizer.cpp
@@ -703,7 +703,7 @@ static inline qreal qRoundF(qreal v)
void QRasterizer::rasterizeLine(const QPointF &a, const QPointF &b, qreal width, bool squareCap)
{
- if (a == b || width == 0)
+ if (a == b || width == 0 || d->clipRect.isEmpty())
return;
QPointF pa = a;
diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp
index dcf9a04..cb532ce 100644
--- a/tests/auto/qpainter/tst_qpainter.cpp
+++ b/tests/auto/qpainter/tst_qpainter.cpp
@@ -227,6 +227,7 @@ private slots:
void extendedBlendModes();
void zeroOpacity();
+ void emptyClip();
private:
void fillData();
@@ -4194,5 +4195,23 @@ void tst_QPainter::zeroOpacity()
QCOMPARE(target.pixel(0, 0), 0xff000000);
}
+void tst_QPainter::emptyClip()
+{
+ QImage img(64, 64, QImage::Format_ARGB32_Premultiplied);
+ QPainter p(&img);
+ p.setRenderHints(QPainter::Antialiasing);
+ p.setClipRect(0, 32, 64, 0);
+ p.fillRect(0, 0, 64, 64, Qt::white);
+
+ QPainterPath path;
+ path.lineTo(64, 0);
+ path.lineTo(64, 64);
+ path.lineTo(40, 64);
+ path.lineTo(40, 80);
+ path.lineTo(0, 80);
+
+ p.fillPath(path, Qt::green);
+}
+
QTEST_MAIN(tst_QPainter)
#include "tst_qpainter.moc"
--
cgit v0.12
From c65262cf3e3cd9c72184582306e550f686b2f27e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Samuel=20R=C3=B8dal?=
Date: Wed, 17 Jun 2009 15:46:19 +0200
Subject: Fixed bugs in QPainterPath::united().
Change from a relative to an absolute fuzzy compare as was the case
pre-4.4. With a relative fuzzy compare points that have an x or y
coordinate of 0 will never be merged with points that are very close to
0, for example (1e-15, 0).
Task-number: 251909
Reviewed-by: Trond
---
src/gui/painting/qpathclipper.cpp | 69 +++++++++++++++++-----------
tests/auto/qpathclipper/tst_qpathclipper.cpp | 20 ++++++++
2 files changed, 62 insertions(+), 27 deletions(-)
diff --git a/src/gui/painting/qpathclipper.cpp b/src/gui/painting/qpathclipper.cpp
index 544b838..d4c92cc 100644
--- a/src/gui/painting/qpathclipper.cpp
+++ b/src/gui/painting/qpathclipper.cpp
@@ -45,9 +45,6 @@
#include
#include
-#include
-#include
-
/**
The algorithm is as follows:
@@ -68,6 +65,20 @@
QT_BEGIN_NAMESPACE
+static inline bool fuzzyIsNull(qreal d)
+{
+ if (sizeof(qreal) == sizeof(double))
+ return qAbs(d) <= 1e-12;
+ else
+ return qAbs(d) <= 1e-5f;
+}
+
+static inline bool comparePoints(const QPointF &a, const QPointF &b)
+{
+ return fuzzyIsNull(a.x() - b.x())
+ && fuzzyIsNull(a.y() - b.y());
+}
+
//#define QDEBUG_CLIPPER
static qreal dot(const QPointF &a, const QPointF &b)
{
@@ -105,8 +116,10 @@ private:
bool QIntersectionFinder::beziersIntersect(const QBezier &one, const QBezier &two) const
{
- return (one.pt1() == two.pt1() && one.pt2() == two.pt2() && one.pt3() == two.pt3() && one.pt4() == two.pt4())
- || (one.pt1() == two.pt4() && one.pt2() == two.pt3() && one.pt3() == two.pt2() && one.pt4() == two.pt1())
+ return (comparePoints(one.pt1(), two.pt1()) && comparePoints(one.pt2(), two.pt2())
+ && comparePoints(one.pt3(), two.pt3()) && comparePoints(one.pt4(), two.pt4()))
+ || (comparePoints(one.pt1(), two.pt4()) && comparePoints(one.pt2(), two.pt3())
+ && comparePoints(one.pt3(), two.pt2()) && comparePoints(one.pt4(), two.pt1()))
|| QBezier::findIntersections(one, two, 0);
}
@@ -118,17 +131,17 @@ bool QIntersectionFinder::linesIntersect(const QLineF &a, const QLineF &b) const
const QPointF q1 = b.p1();
const QPointF q2 = b.p2();
- if (p1 == p2 || q1 == q2)
+ if (comparePoints(p1, p2) || comparePoints(q1, q2))
return false;
- const bool p1_equals_q1 = (p1 == q1);
- const bool p2_equals_q2 = (p2 == q2);
+ const bool p1_equals_q1 = comparePoints(p1, q1);
+ const bool p2_equals_q2 = comparePoints(p2, q2);
if (p1_equals_q1 && p2_equals_q2)
return true;
- const bool p1_equals_q2 = (p1 == q2);
- const bool p2_equals_q1 = (p2 == q1);
+ const bool p1_equals_q2 = comparePoints(p1, q2);
+ const bool p2_equals_q1 = comparePoints(p2, q1);
if (p1_equals_q2 && p2_equals_q1)
return true;
@@ -184,8 +197,10 @@ bool QIntersectionFinder::linesIntersect(const QLineF &a, const QLineF &b) const
void QIntersectionFinder::intersectBeziers(const QBezier &one, const QBezier &two, QVector > &t, QDataBuffer &intersections)
{
- if ((one.pt1() == two.pt1() && one.pt2() == two.pt2() && one.pt3() == two.pt3() && one.pt4() == two.pt4())
- || (one.pt1() == two.pt4() && one.pt2() == two.pt3() && one.pt3() == two.pt2() && one.pt4() == two.pt1())) {
+ if ((comparePoints(one.pt1(), two.pt1()) && comparePoints(one.pt2(), two.pt2())
+ && comparePoints(one.pt3(), two.pt3()) && comparePoints(one.pt4(), two.pt4()))
+ || (comparePoints(one.pt1(), two.pt4()) && comparePoints(one.pt2(), two.pt3())
+ && comparePoints(one.pt3(), two.pt2()) && comparePoints(one.pt4(), two.pt1()))) {
return;
}
@@ -230,17 +245,17 @@ void QIntersectionFinder::intersectLines(const QLineF &a, const QLineF &b, QData
const QPointF q1 = b.p1();
const QPointF q2 = b.p2();
- if (p1 == p2 || q1 == q2)
+ if (comparePoints(p1, p2) || comparePoints(q1, q2))
return;
- const bool p1_equals_q1 = (p1 == q1);
- const bool p2_equals_q2 = (p2 == q2);
+ const bool p1_equals_q1 = comparePoints(p1, q1);
+ const bool p2_equals_q2 = comparePoints(p2, q2);
if (p1_equals_q1 && p2_equals_q2)
return;
- const bool p1_equals_q2 = (p1 == q2);
- const bool p2_equals_q1 = (p2 == q1);
+ const bool p1_equals_q2 = comparePoints(p1, q2);
+ const bool p2_equals_q1 = comparePoints(p2, q1);
if (p1_equals_q2 && p2_equals_q1)
return;
@@ -624,11 +639,11 @@ public:
const qreal pivot = pivotComponents[depth & 1];
const qreal value = pointComponents[depth & 1];
- if (qFuzzyCompare(pivot, value)) {
+ if (fuzzyIsNull(pivot - value)) {
const qreal pivot2 = pivotComponents[(depth + 1) & 1];
const qreal value2 = pointComponents[(depth + 1) & 1];
- if (qFuzzyCompare(pivot2, value2)) {
+ if (fuzzyIsNull(pivot2 - value2)) {
if (node.id < 0)
node.id = m_tree->nextId();
@@ -802,15 +817,15 @@ QWingedEdge::TraversalStatus QWingedEdge::next(const QWingedEdge::TraversalStatu
static bool isLine(const QBezier &bezier)
{
- const bool equal_1_2 = bezier.pt1() == bezier.pt2();
- const bool equal_2_3 = bezier.pt2() == bezier.pt3();
- const bool equal_3_4 = bezier.pt3() == bezier.pt4();
+ const bool equal_1_2 = comparePoints(bezier.pt1(), bezier.pt2());
+ const bool equal_2_3 = comparePoints(bezier.pt2(), bezier.pt3());
+ const bool equal_3_4 = comparePoints(bezier.pt3(), bezier.pt4());
// point?
if (equal_1_2 && equal_2_3 && equal_3_4)
return true;
- if (bezier.pt1() == bezier.pt4())
+ if (comparePoints(bezier.pt1(), bezier.pt4()))
return equal_1_2 || equal_3_4;
return (equal_1_2 && equal_3_4) || (equal_1_2 && equal_2_3) || (equal_2_3 && equal_3_4);
@@ -844,14 +859,14 @@ void QPathSegments::addPath(const QPainterPath &path)
else
currentPoint = path.elementAt(i);
- if (i > 0 && m_points.at(lastMoveTo) == currentPoint)
+ if (i > 0 && comparePoints(m_points.at(lastMoveTo), currentPoint))
current = lastMoveTo;
else
m_points << currentPoint;
switch (path.elementAt(i).type) {
case QPainterPath::MoveToElement:
- if (hasMoveTo && last != lastMoveTo && m_points.at(last) != m_points.at(lastMoveTo))
+ if (hasMoveTo && last != lastMoveTo && !comparePoints(m_points.at(last), m_points.at(lastMoveTo)))
m_segments << Segment(m_pathId, last, lastMoveTo);
hasMoveTo = true;
last = lastMoveTo = current;
@@ -879,7 +894,7 @@ void QPathSegments::addPath(const QPainterPath &path)
}
}
- if (hasMoveTo && last != lastMoveTo && m_points.at(last) != m_points.at(lastMoveTo))
+ if (hasMoveTo && last != lastMoveTo && !comparePoints(m_points.at(last), m_points.at(lastMoveTo)))
m_segments << Segment(m_pathId, last, lastMoveTo);
for (int i = firstSegment; i < m_segments.size(); ++i) {
@@ -1357,7 +1372,7 @@ void QWingedEdge::addBezierEdge(const QBezier *bezier, const QPointF &a, const Q
if (qFuzzyCompare(alphaA, alphaB))
return;
- if (a == b) {
+ if (comparePoints(a, b)) {
int v = insert(a);
addBezierEdge(bezier, v, v, alphaA, alphaB, path);
diff --git a/tests/auto/qpathclipper/tst_qpathclipper.cpp b/tests/auto/qpathclipper/tst_qpathclipper.cpp
index f3077ee..6e6b632 100644
--- a/tests/auto/qpathclipper/tst_qpathclipper.cpp
+++ b/tests/auto/qpathclipper/tst_qpathclipper.cpp
@@ -93,6 +93,7 @@ private slots:
void task204301();
void task209056();
+ void task251909();
};
Q_DECLARE_METATYPE(QPainterPath)
@@ -1397,6 +1398,25 @@ void tst_QPathClipper::task209056()
QVERIFY(p3 != QPainterPath());
}
+void tst_QPathClipper::task251909()
+{
+ QPainterPath p1;
+ p1.moveTo(0, -10);
+ p1.lineTo(10, -10);
+ p1.lineTo(10, 0);
+ p1.lineTo(0, 0);
+
+ QPainterPath p2;
+ p2.moveTo(0, 8e-14);
+ p2.lineTo(10, -8e-14);
+ p2.lineTo(10, 10);
+ p2.lineTo(0, 10);
+
+ QPainterPath result = p1.united(p2);
+
+ QVERIFY(result.elementCount() <= 5);
+}
+
QTEST_APPLESS_MAIN(tst_QPathClipper)
--
cgit v0.12
From bcfdfb4bb223a3be146ff21f604b8e75ffa2ef13 Mon Sep 17 00:00:00 2001
From: Ritt Konstantin
Date: Wed, 17 Jun 2009 14:52:01 +0200
Subject: Update Russian translation for Qt libraries.
Added QtWebkit and QXmlPatterns translations.
This is an almost complete translation.
Merge-request: 689
Reviewed-by: Oswald Buddenhagen
---
translations/qt_ru.ts | 3436 ++++++++++++++++++++++++-------------------------
1 file changed, 1681 insertions(+), 1755 deletions(-)
diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts
index 28e786b..1e6a4eb 100644
--- a/translations/qt_ru.ts
+++ b/translations/qt_ru.ts
@@ -1,37 +1,30 @@
-
+
AudioOutput
-
+ <html>Звуковое устройство <b>%1</b> не работает.<br/>Будет использоваться <b>%2</b>.</html>
-
+ <html>Переключение на звуковое устройство <b>%1</b><br/>, которое доступно и имеет высший приоритет.</html>
-
+ Возвращение к устройству '%1'
CloseButton
-
+
-
-
-
-
- PPDOptionsModel
-
-
- Имя
+ Закрыть вкладку
@@ -39,32 +32,32 @@
-
+ Уведомления
-
+ Музыка
-
+ Видео
-
+ Общение
-
+ Игры
-
+ Средства для людей с ограниченными возможностями
@@ -73,13 +66,15 @@
-
+ Внимание: Похоже, пакет gstreamer0.10-plugins-good не установлен.
+ Некоторые возможности воспроизведения видео недоступны.
-
+ Внимание: Похоже, основной модуль GStreamer не установлен.
+ Поддержка видео и аудио отключена
@@ -90,12 +85,15 @@
Check your Gstreamer installation and make sure you
have libgstreamer-plugins-base installed.
-
+ Невозможно начать воспроизведение.
+
+Проверьте установку Gstreamer и убедитесь,
+что пакет libgstreamer-plugins-base установлен.
-
+ Отсутствует необходимый кодек. Вам нужно установить следующие кодеки для воспроизведения данного содержимого: %0
@@ -107,27 +105,27 @@ have libgstreamer-plugins-base installed.
-
+ Не удалось открыть источник медиа-данных.
-
+ Неверный тип источника медиа-данных.
-
+ Не удалось найти источник медиа-данных.
-
+ Не удалось открыть звуковое устройство. Устройство уже используется.
-
+ Не удалось декодировать источник медиа-данных.
@@ -136,14 +134,14 @@ have libgstreamer-plugins-base installed.
-
+ Громкость: %1%
-
+ Используйте данный ползунок для настройки громкости. Крайнее левое положение соответствует 0%, крайнее правое - %1%
@@ -151,12 +149,12 @@ have libgstreamer-plugins-base installed.
-
+ %1, %2 не определен
-
+ Неоднозначный %1 не обрабатывается
@@ -164,52 +162,52 @@ have libgstreamer-plugins-base installed.
- True
+ Да
- False
+ Нет
- Вставить
+ Вставить
- Обновить
+ Обновить
- Удалить
+ Удалить
Q3FileDialog
-
+
- Копировать или переместить файл
+ Копировать или переместить файл
- Открытие: %1
+ Чтение: %1
- Запись: %1
+ Запись: %1
-
+
- Отмена
+ Отмена
@@ -217,307 +215,307 @@ have libgstreamer-plugins-base installed.
- Все файлы (*)
+ Все файлы (*)
- Имя
+ Имя
- Размер
+ Размер
- Тип
+ Тип
- Дата
+ Дата
- Атрибуты
+ Атрибуты
- &OK
+ &Готово
- &Смотреть в:
+ &Папка:
- &Имя файла:
+ &Имя файла:
- &Тип файла:
+ &Тип файла:
- Назад
+ Назад
- Вверх на один уровень
+ На один уровень вверх
- Создать новый каталог
+ Создать папку
- Список
+ Список
- Детальный вид
+ Подробный вид
- Предпросмотр информации о файле
+ Предпросмотр информации о файле
- Предпросмотр содержимого файла
+ Предпросмотр содержимого файла
- Чтение-запись
+ Чтение и запись
- Только чтение
+ Только чтение
- Только запись
+ Только запись
- Нет доступа
+ Нет доступа
- Ссылка на файл
+ Ссылка на файл
- Ссылка на каталог
+ Ссылка на каталог
- Ссылка на спецфайл
+ Ссылка на спецфайл
- Файл
+ Файл
- Каталог
+ Каталог
- Спецфайл
+ Спецфайл
- Открыть
+ Открыть
- Сохранить как
+ Сохранить как
- &Открыть
+ &Открыть
- &Сохранить
+ &Сохранить
- &Переименовать
+ &Переименовать
- &Удалить
+ &Удалить
- О&бновить
+ О&бновить
- По &имени
+ По &имени
- По &размеру
+ По &размеру
- По &дате
+ По &дате
- &Не упорядочивать
+ &Не упорядочивать
- Упорядочить
+ Упорядочить
- Показать &скрытые файлы
+ Показать скр&ытые файлы
- файл
+ файл
- каталог
+ каталог
- ссылку
+ ссылку
- Удалить %1
+ Удалить %1
- <qt>Вы действительно хотите удалить %1 "%2"?</qt>
+ <qt>Вы действительно хотите удалить %1 "%2"?</qt>
- &Да
+ &Да
- &Нет
+ &Нет
- Новый каталог 1
+ Новая папка 1
- Новый каталог
+ Новая папка
- Новый каталог %1
+ Новая папка %1
- Найти каталог
+ Найти каталог
- Каталоги
+ Каталоги
- Каталог:
+ Каталог:
- Ошибка
+ Ошибка
- %1
+ %1
Файл не найден.
Проверьте правильность пути и имени файла.
- Все файлы (*.*)
+ Все файлы (*.*)
- Открыть
+ Открыть
- Выбрать каталог
+ Выбрать каталог
@@ -527,21 +525,21 @@ Check path and filename.
- Невозможно просмотреть каталог
+ Не удалось прочитать каталог
%1
- Невозможно создать каталог
+ Не удалось создать каталог
%1
- Невозможно удалить файл или каталог
+ Не удалось удалить файл или каталог
%1
@@ -550,7 +548,7 @@ Check path and filename.
%1
to
%2
- Невозможно переименовать
+ Не удалось переименовать
%1
в
%2
@@ -559,14 +557,14 @@ to
- Невозможно открыть
+ Не удалось открыть
%1
- Невозможно записать
+ Не удалось записать
%1
@@ -575,12 +573,12 @@ to
- Выровнять
+ Выровнять
- Настроить...
+ Настроить...
@@ -588,7 +586,7 @@ to
- Операция прервана пользователем
+ Операция остановлена пользователем
@@ -597,7 +595,7 @@ to
- Отмена
+ Отмена
@@ -606,27 +604,27 @@ to
- OK
+ Готово
- Применить
+ Применить
- Справка
+ Справка
- По умолчанию
+ По умолчанию
- Отмена
+ Отмена
@@ -634,38 +632,38 @@ to
- &Отменить
+ &Отменить действие
- &Повторить
+ &Повторить действие
- &Вырезать
+ &Вырезать
- &Копировать
+ &Копировать
- &Вставить
+ В&ставить
- Очистить
+ Очистить
- Выделить все
+ Выделить всё
@@ -673,67 +671,67 @@ to
-
+ Системное меню
-
+ Восстановить
- Свернуть
+ Свернуть
-
+ Восстановить
- Развернуть
+ Распахнуть
- Закрыть
+ Закрыть
-
+ Содержит команды управления окном
-
+ Возвращает свёрнутое окно в нормальное состояние
-
+ Сворачивает окно
-
+ Возвращает распахнутое окно в нормальное состояние
-
+ Разворачивает окно на весь экран
-
+ Зыкрывает окно
-
+ Отображает название окна и содержит команды управления им
@@ -741,7 +739,7 @@ to
- Больше...
+ Больше...
@@ -751,49 +749,49 @@ to
- Протокол `%1' не поддерживается
+ Протокол '%1' не поддерживается
- Протокол `%1' не поддерживает просмотр каталогов
+ Протокол '%1' не поддерживает просмотр каталогов
- Протокол `%1' не поддерживает создание новых каталогов
+ Протокол '%1' не поддерживает создание каталогов
- Протокол `%1' не поддерживает удаление файлов или каталогов
+ Протокол '%1' не поддерживает удаление файлов или каталогов
- Протокол `%1' не поддерживает переименование файлов или каталогов
+ Протокол '%1' не поддерживает переименование файлов или каталогов
- Протокол `%1' не поддерживает доставку файлов
+ Протокол '%1' не поддерживает доставку файлов
- Протокол `%1' не поддерживает отправку файлов
+ Протокол '%1' не поддерживает отправку файлов
- Протокол `%1' не поддерживает копирование или перемещение файлов и каталогов
+ Протокол '%1' не поддерживает копирование или перемещение файлов или каталогов
- (неизвестно)
+ (неизвестно)
@@ -801,72 +799,72 @@ to
- &Отмена
+ &Отмена
- < &Назад
+ < &Назад
- &Вперед >
+ &Далее >
- &Финиш
+ &Завершить
- &Справка
+ &Справка
QAbstractSocket
-
+
-
+ Узел не найден
- Отказано в соединении
+ Отказано в соединении
-
+ Время на соединение истекло
-
+ Операция с сокетом не поддерживается
-
+ Время на операцию с сокетом истекло
-
+ Сокет не подключён
-
+ Сеть недоступна
@@ -874,26 +872,25 @@ to
-
+ Шаг вв&ерх
-
+ Шаг вн&из
-
+ &Выделить всё
QApplication
-
-
- Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.
- LTR
+
+
+ Активировать
@@ -906,37 +903,38 @@ to
Ошибка совместимости библиотеки Qt
-
-
-
+
+
+ Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.
+ LTR
-
+
-
+ Активирует главное окно программы
QAxSelect
-
+
-
+ Выбор компоненты ActiveX
-
+
- OK
+ Выбрать
-
+
- &Отмена
+ &Отмена
-
+
-
+ COM &Объект:
@@ -944,17 +942,17 @@ to
-
+ Снять отметку
-
+ Отметить
-
+ Переключить
@@ -977,17 +975,17 @@ to
- &Крас:
+ &Красный:
- &Зел:
+ &Зелёный:
- С&ин:
+ С&иний:
@@ -997,7 +995,7 @@ to
-
+ Выбор цвета
@@ -1007,28 +1005,12 @@ to
- &Собственные цвета
-
-
-
- &Выбрать собственные цвета >>
-
-
-
- OK
-
-
-
- Отмена
+ &Произвольные цвета
- &Добавить к собственным цветам
-
-
-
- Выбрать цвет
+ &Добавить к произвольным цветам
@@ -1037,22 +1019,22 @@ to
- Открыть
+ Открыть
- False
+ Нет
- True
+ Да
- Закрыть
+ Закрыть
@@ -1061,76 +1043,76 @@ to
QSystemSemaphore
-
+ %1: пустой ключ
QSystemSemaphore
-
+ %1: невозможно создать ключ
QSystemSemaphore
-
+ %1: ошибка ftok
QDB2Driver
-
+
-
+ Невозможно соединиться
-
+
-
+ Невозможно выполнить транзакцию
-
+ Невозможно откатить транзакцию
-
+ Невозможно установить автовыполнение транзакции
QDB2Result
-
+
-
+ Невозможно выполнить выражение
-
+ Невозможно подготовить выражение
-
+ Невозможно привязать значение
-
+ Невозможно получить запись %1
-
+ Невозможно получить следующую строку
-
+ Невозможно получить первую строку
@@ -1184,132 +1166,132 @@ to
-
+ Готово
QDialogButtonBox
-
+
- OK
+ Готово
-
-
- Сохранить
+
+
+ &Готово
-
+
- &Сохранить
+ &Сохранить
+
+
+
+
+ Сохранить
- Открыть
+ Открыть
-
- Отмена
+
+ &Отмена
-
- &Отмена
+
+ Отмена
-
- Закрыть
+
+ &Закрыть
-
- &Закрыть
+
+ Закрыть
- Применить
+ Применить
-
+ Сбросить
- Справка
+ Справка
-
+ Не сохранять
-
+ Отклонить
- &Да
+ &Да
-
+ Да для &всех
- &Нет
+ &Нет
-
+ Н&ет для всех
-
+ Сохранить все
-
+ Прервать
-
+ Повторить
-
+ Пропустить
-
+ Восстановить значения по умолчанию
-
-
-
-
-
- &OK
+ Закрыть без сохранения
@@ -1317,29 +1299,29 @@ to
- Имя
+ Имя
- Размер
+ Размер
Match OS X Finder
-
+ Вид
All other platforms
- Тип
+ Тип
-
+ Дата изменения
@@ -1347,7 +1329,7 @@ to
- Закрыть
+ Закрыть
@@ -1365,28 +1347,18 @@ to
-
+ Больше
-
+ Меньше
QErrorMessage
-
-
- &Показывать это сообщение в дальнейшем
-
-
-
-
- &OK
-
-
-
+
Отладочное сообщение:
@@ -1400,326 +1372,347 @@ to
Критическая ошибка:
+
+
+
+ &Показывать это сообщение в дальнейшем
+
+
+
+
+ &Закрыть
+
QFile
-
+
-
+ Файл существует
-
+
+
+ Последовательный файл не будет переименовываться с использованием поблочного копирования
+
+
+
-
+ Невозможно удалить исходный файл
-
+
-
+ Невозможно открыть %1 для ввода
-
+ Невозможно открыть для вывода
-
+ Сбой записи блока
-
+ Невозможно создать %1 для вывода
QFileDialog
-
-
+
+
Все файлы (*)
-
-
-
- Назад
-
-
-
-
-
- Список
+
+
+ Каталоги
-
-
-
- Детальный вид
+
+
+
+
+
+ &Открыть
-
-
-
- Файл
+
+
+
+ &Сохранить
-
+
Открыть
-
-
- Сохранить как
-
-
-
-
-
-
-
- &Открыть
+
+
+ %1 уже существует.
+Хотите заменить его?
-
-
-
- &Сохранить
+
+
+ %1
+Файл не найден.
+Проверьте правильность указанного имени файла.
-
-
-
+
+
+ Мой компьютер
-
+
- &Переименовать
+ &Переименовать
- &Удалить
+ &Удалить
- Показать &скрытые файлы
+ Показать скр&ытые файлы
-
-
- Новый каталог
+
+
+
+ Назад
-
-
- Найти каталог
+
+
+
+ Родительский каталог
-
-
- Каталоги
+
+
+
+ Список
-
-
- Все файлы (*.*)
+
+
+
+ Подробный вид
-
-
-
- Каталог:
+
+
+
+ Типы файлов:
-
-
-
+
+
+
+ Каталог:
-
+
+
-
+Directory not found.
+Please verify the correct directory name was given.
+ %1
+Каталог не найден.
+Проверьте правильность указанного имени каталога.
-
-
-
+
+
+ '%1' защищён от записи.
+Всё-равно хотите удалить?
-
-
-
-
+
+
+ Вы уверены, что хотите удалить '%1'?
-
-
-
-
+
+
+ Не удалось удалить каталог.
-
-
-
-
+
+
+ Недавние документы
-
-
-
+
+
+ Все файлы (*.*)
-
-
-
+
+
+ Сохранить как
-
-
-
+
+
+ Диск
-
-
-
+
+
+
+ Файл
-
+
-
+ Неизвестный
-
+
+
+ Найти каталог
+
+
+
-
+ Показать
-
-
+
+
- Вперед
+ Вперёд
+
+
+
+
+ Новая папка
-
+
-
+ &Новая папка
-
+
-
+ &Выбрать
-
+
-
+ Удалить
-
-
+
+
- &Имя файла:
+ &Имя файла:
-
-
+
+
-
+ Перейти к:
-
-
+
+
- Создать новый каталог
+ Создать папку
QFileSystemModel
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+ Некорректное имя файла
-
+ <b>Имя "%1" не может быть использовано.</b><p>Попробуйте использовать имя меньшей длины и/или без символов пунктуации.
- Имя
+ Имя
- Размер
+ Размер
Match OS X Finder
-
+ Вид
All other platforms
- Тип
+ Тип
-
+ Дата изменения
-
+
-
+ Мой компьютер
-
+ Компьютер
+
+
+
+
+ %1 Тб
+
+
+
+
+ %1 Гб
+
+
+
+
+ %1 Мб
+
+
+
+
+ %1 Кб
+
+
+
+
+ %1 байт
@@ -1728,80 +1721,80 @@ Do you want to delete it anyway?
-
+ Обычный
-
+ Жирный
-
+ Полужирный
-
+ Чёрный
-
+ Средний
-
+ Светлый
-
+ Курсив
-
+ Наклонный
-
+ Любая
-
+ Латиница
-
+ Греческая
-
+ Кириллица
-
+ Армянская
-
+ Иврит
@@ -1811,7 +1804,7 @@ Do you want to delete it anyway?
-
+ Сирийская
@@ -1871,7 +1864,7 @@ Do you want to delete it anyway?
-
+ Тайская
@@ -1881,7 +1874,7 @@ Do you want to delete it anyway?
-
+ Тибетская
@@ -1891,42 +1884,42 @@ Do you want to delete it anyway?
-
+ Грузинская
-
+ Кхмерская
-
+ Китайская упрощенная
-
+ Китайская традиционная
-
+ Японская
-
+ Корейская
-
+ Вьетнамская
-
+ Символьная
@@ -1936,20 +1929,20 @@ Do you want to delete it anyway?
-
+ Руническая
QFontDialog
-
+
&Шрифт
- &Стиль шрифта
+ Ст&иль шрифта
@@ -1964,12 +1957,12 @@ Do you want to delete it anyway?
- &Перечеркивать
+ Зачёр&кнутый
- П&одчеркивать
+ П&одчёркнутый
@@ -1977,74 +1970,59 @@ Do you want to delete it anyway?
Пример
-
-
-
- Выбрать шрифт
+
+
+ &Система письма
-
-
-
+
+
+
+ Выбор шрифта
QFtp
-
-
- Обнаружен узел %1
-
-
-
-
- Узел обнаружен
-
-
-
-
-
-
- Установлено соединение с узлом %1
-
-
-
-
- Соединение с узлом установлено
-
-
-
-
- Соединение с узлом %1 разорвано
-
-
-
-
-
-
- Соединение разорвано
+
+
+
+ Соединение не установлено
-
-
+
+
- Узел %1 не обнаружен
+ Узел %1 не найден
- Отказано в соединении с узлом %1
+ В соединении с узлом %1 отказано
-
+ Время на соединение с узлом %1 истекло
-
+
+
+
+
+ Установлено соединение с узлом %1
+
+
+
+
+
+ Отказ в соединении для передачи данных
+
+
+
-
+
Неизвестная ошибка
@@ -2054,7 +2032,7 @@ Do you want to delete it anyway?
- Ошибка соединения с узлом:
+ Не удалось соединиться с узлом:
%1
@@ -2062,7 +2040,7 @@ Do you want to delete it anyway?
- Ошибка входа в систему:
+ Не удалось авторизоваться:
%1
@@ -2070,7 +2048,7 @@ Do you want to delete it anyway?
- Ошибка просмотра каталога:
+ Не удалось прочитать каталог:
%1
@@ -2078,7 +2056,7 @@ Do you want to delete it anyway?
- Ошибка смены каталога:
+ Не удалось сменить каталог:
%1
@@ -2086,7 +2064,7 @@ Do you want to delete it anyway?
- Ошибка загрузки файла:
+ Не удалось загрузить файл:
%1
@@ -2094,7 +2072,7 @@ Do you want to delete it anyway?
- Ошибка отправки файла:
+ Не удалось отгрузить файл:
%1
@@ -2102,7 +2080,7 @@ Do you want to delete it anyway?
- Ошибка удаления файла:
+ Не удалось удалить файл:
%1
@@ -2110,7 +2088,7 @@ Do you want to delete it anyway?
- Ошибка создания каталога:
+ Не удалось создать каталог:
%1
@@ -2118,20 +2096,35 @@ Do you want to delete it anyway?
- Ошибка удаления каталога:
+ Не удалось удалить каталог:
%1
-
-
-
- Нет соединения
+
+
+
+
+ Соединение закрыто
-
-
-
- Отказано в соединении передачи данных
+
+
+ Узел %1 найден
+
+
+
+
+ Соединение с %1 закрыто
+
+
+
+
+ Узел найден
+
+
+
+
+ Соединение с узлом установлено
@@ -2139,7 +2132,7 @@ Do you want to delete it anyway?
- Неизвестная ошибка
+ Неизвестная ошибка
@@ -2149,12 +2142,12 @@ Do you want to delete it anyway?
-
+
-
+ Узел не найден
@@ -2162,170 +2155,170 @@ Do you want to delete it anyway?
-
+ Неизвестный тип адреса
- Неизвестная ошибка
+ Неизвестная ошибка
QHttp
-
-
-
- Отказано в соединении
-
-
-
-
-
-
- Узел %1 не обнаружен
+
+
+
+
+
+ Неизвестная ошибка
-
-
-
- Неверная длина данных
+
+
+
+ Запрос прерван
-
-
-
+
+
+
+ Не указан сервер для подключения
-
-
-
-
-
- Ошибка HTTP-запроса
+
+
+
+ Неверная длина содержимого
-
-
- Обнаружен узел %1
+
+
+
+ Сервер неожиданно разорвал соединение
-
-
- Узел обнаружен
+
+
+ Неизвестный метод авторизации
-
-
- Установлено соединение с узлом %1
+
+
+ Ошибка записи ответа на устройство
-
-
- Соединение с узлом установлено
+
+
+
+ Отказано в соединении
-
-
- Соединение с узлом %1 разорвано
+
+
+
+
+ Узел %1 не найден
-
-
-
- Соединение разорвано
+
+
+
+
+
+ HTTP-запрос не удался
-
-
-
-
-
- Неизвестная ошибка
+
+
+
+ Некорректный HTTP-заголовок ответа
-
-
-
- Запрос отменен
+
+
+
+
+
+ Некорректное HTTP-фрагментирование данных
-
-
-
- Не выбран сервер для подключения
+
+
+ Узел %1 найден
-
-
-
- Неожиданный разрыв соединения сервером
+
+
+ Установлено соединение с узлом %1
-
-
-
- Получен некорректный HTTP-заголовок
+
+
+ Соединение с узлом %1 закрыто
-
-
-
+
+
+ Узел найден
-
-
-
-
-
- Некорректный HTTP-ответ
+
+
+ Соединение с узлом установлено
-
-
-
+
+
+
+ Соединение закрыто
-
+
-
+ Требуется авторизация на прокси-сервере
-
+ Требуется авторизация
-
+ В соединении отказано (или время ожидания истекло)
-
+ Прокси-сервер требует авторизацию
-
+ Узел требует авторизацию
-
+ Данные повреждены
-
+ Указан неизвестный протокол
-
+ Квитирование SSL не удалось
+
+
+
+
+ Запрошено соединение по протоколу HTTPS, но поддержка SSL не скомпилирована
@@ -2333,188 +2326,188 @@ Do you want to delete it anyway?
-
+ Не получен HTTP-ответ от прокси-сервера
-
+ Ошибка разбора запроса авторизации от прокси-сервера
-
+ Требуется авторизация
-
+ Прокси-сервер запретил соединение
-
+ Ошибка обмена данными с прокси-сервером HTTP
-
+ Прокси-сервер не найден
-
+ В соединении прокси-сервером отказано
-
+ Время на соединение с прокси-сервером истекло
-
+ Соединение с прокси-сервером неожиданно закрыто
QIBaseDriver
-
+
-
+ Ошибка открытия базы данных
-
+ Не удалось начать транзакцию
-
+ Невозможно выполнить транзакцию
-
+ Невозможно откатить транзакцию
QIBaseResult
-
+
-
+ Невозможно создать BLOB
-
+ Невозможно записать BLOB
-
+ Невозможно открыть BLOB
-
+ Невозможно прочитать BLOB
-
+
-
+ Не удалось найти массив
-
+
-
+ Не удалось найти данные массива
-
+
-
+ Не удалось найти информацию о запросе
-
+ Не удалось начать транзакцию
-
+ Невозможно выполнить транзакцию
-
+ Не удалось получить ресурсы для создания выражения
-
+ Не удалось подготовить выражение
-
+ Не удалось описать входящее выражение
-
+ Не удалось описать выражение
-
+ Невозможно закрыть выражение
-
+ Невозможно выполнить запрос
-
+ Не удалось получить следующий элемент
-
+ Не удалось найти информацию о выражении
QIODevice
-
+
-
+ Доступ запрещён
-
+ Слишком много открытых файлов
-
+ Файл или каталог не существует
-
+ Нет свободного места на устройстве
-
+
- Неизвестная ошибка
+ Неизвестная ошибка
@@ -2522,22 +2515,22 @@ Do you want to delete it anyway?
-
+ Метод ввода X-сервера
-
+ Метод ввода X-сервера
-
+ Метод ввода Windows
-
+ Метод ввода Mac OS X
@@ -2545,7 +2538,7 @@ Do you want to delete it anyway?
-
+ Укажите значение:
@@ -2553,66 +2546,66 @@ Do you want to delete it anyway?
-
+ Не удалось выполнить mmap '%1': %2
-
+ Проверочная информация для модуля '%1' не совпадает
-
+ Не удалось выполнить unmap '%1': %2
-
+ Модуль '%1' использует несоместимую библиотеку Qt. (%2.%3.%4) [%5]
-
+ Модуль '%1' использует несоместимую библиотеку Qt. Ожидается ключ "%2", но получен ключ "%3"
- Неизвестная ошибка
+ Неизвестная ошибка
-
+ Динамическая библиотека не найдена.
-
+ Файл '%1' - не является корректным модулем Qt.
-
+ Модуль '%1' использует несоместимую библиотеку Qt. (Невозможно совместить релизные и отладочные библиотеки.)
-
+ Невозможно загрузить библиотеку %1: %2
-
+ Невозможно выгрузить библиотеку %1: %2
-
+ Невозможно разрешить символ "%1" в %2: %3
@@ -2620,62 +2613,62 @@ Do you want to delete it anyway?
- &Отменить
+ &Отменить действие
- &Повторить
+ &Повторить действие
- &Вырезать
+ &Вырезать
- &Копировать
+ &Копировать
- В&ставить
+ В&ставить
-
-
- Выделить все
+
+
+ Удалить
-
-
- Удалить
+
+
+ Выделить всё
QLocalServer
-
+
-
+ %1: Некорректное имя
-
+ %1: Доступ запрещён
-
+ %1: Адрес используется
-
+ %1: Неизвестная ошибка %2
@@ -2684,13 +2677,13 @@ Do you want to delete it anyway?
-
+ %1: Отказано в соединении
-
+ %1: Закрыто удаленной стороной
@@ -2698,143 +2691,143 @@ Do you want to delete it anyway?
-
+ %1: Некорректное имя
-
+ %1: Ошибка обращения к сокету
-
+ %1: Ошибка выделения ресурсов сокета
-
+ %1: Время на операцию с сокетом истекло
-
+ %1: Датаграмма слишком большая
-
+ %1: Ошибка соединения
-
+ %1: Операция с сокетом не поддерживается
-
+ %1: Неизвестная ошибка
-
+ %1: Неизвестная ошибка %2
QMYSQLDriver
-
+
-
+ Невозможно открыть базу данных '
-
+ Невозможно соединиться
-
+
-
+ Невозможно начать транзакцию
-
+ Невозможно выполнить транзакцию
-
+ Невозможно откатить транзакцию
QMYSQLResult
-
+
-
+ Невозможно получить данные
-
+
-
+ Невозможно выполнить запрос
-
+ Невозможно сохранить результат
-
+
-
+ Невозможно подготовить выражение
-
+
-
+ Невозможно сбросить выражение
-
+
-
+ Невозможно привязать значение
-
+ Невозможно выполнить выражение
-
+ Невозможно привязать результирующие значения
-
+ Невозможно сохранить результаты выполнения выражения
-
+
-
+ Невозможно выполнить следующий запрос
-
+ Невозможно сохранить следующий результат
@@ -2842,7 +2835,7 @@ Do you want to delete it anyway?
-
+ (Неозаглавлено)
@@ -2850,92 +2843,92 @@ Do you want to delete it anyway?
- %1 - [%2]
+ %1 - [%2]
- Закрыть
+ Закрыть
- Свернуть
+ Свернуть
- Восстановить
+ Восстановить
- &Восстановить
+ &Восстановить
- &Переместить
+ &Переместить
- &Размер
+ &Размер
- &Свернуть
+ &Свернуть
- Р&азвернуть
+ Р&аспахнуть
- Всегда &наверху
+ Оставаться &сверху
- &Закрыть
+ &Закрыть
-
+ - [%1]
- Развернуть
+ Распахнуть
-
+ Восстановить из заголовка
-
+ Свернуть в заголовок
-
+ Восстановить
- Справка
+ Справка
- Меню
+ Меню
@@ -2944,91 +2937,56 @@ Do you want to delete it anyway?
- Закрыть
+ Закрыть
- Открыть
+ Открыть
-
+ Выполнить
- QMenuBar
-
-
- О программе
-
-
-
- Конфигурация
-
-
-
- Настройки
-
-
-
- Параметры
-
-
-
- Настройки
-
-
-
- Настройки
-
-
-
- Выход
-
+ QMessageBox
-
- Выход
+
+
+ Справка
-
-
- QMessageBox
-
-
+
+
- OK
+ Закрыть
-
-
-
+
+
+ <h3>О Qt</h3><p>Данная программа использует Qt версии %1.</p><p>Qt - это инструментарий для разработки кроссплатформенных приложений на C++.</p><p>Qt предоставляет совместимость на уровне исходных текстов между MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux и всеми популярными коммерческими вариантами Unix. Также Qt доступна для встраиваемых устройств в виде Qt для Embedded Linux и Qt для Windows CE.</p><p>Qt доступна под тремя различными лицензиями, разработанными для удовлетворения требований различных пользователей.</p>Qt под нашей коммерческой лицензией предназначена для развития проприетарного/коммерческого программного обеспечения, когда Вы не желаете предоставлять исходные коды третьим сторонам, или в случае невозможности принятия условий лицензий GNU LGPL версии 2.1 или GNU GPL версии 3.0.</p><p>Qt под лицензией GNU LGPL версии 2.1 предназначена для разработки программного обеспечения с открытым исходным кодом или коммерческого программного обеспечения при соблюдении постановлений и условий лицензии GNU LGPL версии 2.1.</p><p>Qt под лицензией GNU General Public License версии 3.0 предназначена для разработки программных приложений в тех случаях, когда Вы хотели бы использовать такие приложения в сочетании с программным обеспечением на условиях лицензии GNU GPL с версии 3.0 или если Вы готовы соблюдать условия лицензии GNU GPL версии 3.0.</p><p>Обратитесь к <a href="http://www.qtsoftware.com/products/licensing">www.qtsoftware.com/products/licensing</a> для обзора лицензий Qt.</p><p>Copyright (C) 2009 Корпорация Nokia и/или её дочерние подразделения.</p><p>Qt - продукт компании Nokia. Обратитесь к <a href="http://www.qtsoftware.com/qt/">www.qtsoftware.com/qt</a> для получения дополнительной информации.</p>
-
-
- Справка
+
+
+ О Qt
-
+
-
+ Показать подробности...
-
-
-
-
-
-
+ Скрыть подробности...
@@ -3036,7 +2994,7 @@ Do you want to delete it anyway?
-
+ Выбор режима ввода
@@ -3057,132 +3015,132 @@ Do you want to delete it anyway?
-
+ Удалённый узел закрыл соединение
-
+ Время на сетевую операцию истекло
-
+ Недостаточно ресурсов
-
+ Операция с сокетом не поддерживается
-
+ Протокол не поддерживается
-
+ Некорректный дескриптор сокета
-
+ Сеть недоступна
-
+ Доступ запрещён
-
+ Время на соединение истекло
- Отказано в соединении
+ Отказано в соединении
-
+ Адрес уже используется
-
+ Адрес недоступен
-
+ Адрес защищён
-
+ Невозможно отправить сообщение
-
+ Невозможно получить сообщение
-
+ Невозможно записать
-
+ Ошибка сети
-
+ Другой сокет уже прослушивает этот порт
-
+ Невозможно инициализировать не-блочный сокет
-
+ Невозможно инициализировать широковещательный сокет
-
+ Попытка использовать IPv6 на платформе, не поддерживающей IPv6
-
+ Узел недоступен
-
+ Датаграмма слишком большая для отправки
-
+ Операция с не-сокетом
- Неизвестная ошибка
+ Неизвестная ошибка
-
+ Некорректный тип прокси-сервера для данной операции
@@ -3190,7 +3148,7 @@ Do you want to delete it anyway?
-
+ Ошибка открытия %1
@@ -3198,27 +3156,27 @@ Do you want to delete it anyway?
-
+ Запрос на открытие файла вне файловой системы %1
-
+ Ошибка открытия %1: %2
-
+ Ошибка записи в %1: %2
-
+ Невозможно открыть %1: Указан путь к каталогу
-
+ Ошибка чтения из %1: %2
@@ -3226,27 +3184,27 @@ Do you want to delete it anyway?
-
+ Подходящий прокси-сервер не найден
-
+ Невозможно открыть %1: Указан путь к каталогу
-
+ Соединение с %1 не удалось: требуется авторизация
-
+ Ошибка в процессе загрузки %1: %2
-
+ Ошибка в процессе отгрузки %1: %2
@@ -3254,7 +3212,7 @@ Do you want to delete it anyway?
-
+ Подходящий прокси-сервер не найден
@@ -3262,123 +3220,128 @@ Do you want to delete it anyway?
-
+ Ошибка загрузки %1 - ответ сервера: %2
-
+ Неизвестный протокол "%1"
QNetworkReplyImpl
-
+
-
+ Операция отменена
QOCIDriver
-
+
-
+ Невозможно авторизоваться
QOCIDriver
-
+ Невозможно инициализировать
-
+ Невозможно начать транзакцию
-
+ Невозможно выполнить транзакцию
-
+ Невозможно откатить транзакцию
QOCIResult
-
+
-
+ Невозможно привязать столбец для пакетного выполнения
-
+ Невозможно выполнить пакетное выражение
-
+ Невозможно перейти к следующей строке
-
+ Невозможно создать выражение
-
+ Невозможно подготовить выражение
-
+
+
+ Невозможно определить тип выражения
+
+
+
-
+ Невозможно привязать результирующие значения
-
+ Невозможно выполнить выражение
QODBCDriver
-
+
-
+ Невозможно соединиться
-
+ Невозможно соединиться - Драйвер не поддерживает требуемый функционал
-
+ Невозможно отключить автовыполнение транзакции
-
+ Невозможно выполнить транзакцию
-
+ Невозможно откатить транзакцию
-
+ Невозможно установить автовыполнение транзакции
@@ -3387,50 +3350,50 @@ Do you want to delete it anyway?
-
+ QODBCResult::reset: Невозможно установить 'SQL_CURSOR_STATIC' атрибутом выражение. Проверьте настройки драйвера ODBC
-
+ Невозможно выполнить выражение
-
+ Невозможно получить следующую строку
-
+ Невозможно подготовить выражение
-
+ Невозможно привязать значение
-
+ Невозможно получить последнюю строку
-
+ Невозможно получить данные
-
+ Невозможно получить первую строку
-
+ Невозможно получить предыдущую строку
@@ -3438,61 +3401,61 @@ Do you want to delete it anyway?
- Home
+ Домой
-
+ Операция не поддерживается для %1
-
+ Некорректный URI: %1
-
+ Ошибка записи в %1: %2
-
+ Ошибка чтения из %1: %2
-
+ Ошика сокета для %1: %2
-
+ Удалённый узел неожиданно прервал соединение для %1
-
+ Ошибка протокола: получен пакет нулевого размера
-
+ Имя узла не задано
QPPDOptionsModel
-
+
- Имя
+ Имя
-
+ Значение
@@ -3500,45 +3463,45 @@ Do you want to delete it anyway?
-
+ Невозможно соединиться
-
+ Не удалось начать транзакцию
-
+ Не удалось выполнить транзакцию
-
+ Не удалось откатить транзакцию
-
+
-
+ Невозможно подписаться
-
+ Невозможно отписаться
QPSQLResult
-
+
-
+ Невозможно создать запрос
-
+ Невозможно подготовить выражение
@@ -3546,102 +3509,106 @@ Do you want to delete it anyway?
-
+ Сантиметры (cm)
-
+ Миллиметры (mm)
-
+ Дюймы (in)
-
+ Точки (pt)
-
+
-
+ Форма
-
+
-
+ Бумага
-
+
-
+ Размер страницы:
-
+
-
+ Ширина:
-
+
-
+ Высота:
-
+
-
+ Источник бумаги:
-
+
-
+ Ориентация
-
+
- Портрет
+ Книжная
-
+
- Альбом
+ Альбомная
-
+
-
+ Перевёрнутая альбомная
-
+
-
+ Перевёрнутая книжная
-
+
-
+ Поля
-
+
+
-
+ верхнее поле
-
+
+
-
+ левое поле
-
+
+
-
+ правое поле
-
+
+
-
+ нижнее поле
@@ -3649,12 +3616,12 @@ Do you want to delete it anyway?
- Неизвестная ошибка
+ Неизвестная ошибка
-
+ Модуль не был загружен.
@@ -3662,13 +3629,13 @@ Do you want to delete it anyway?
- локальный
+ соединено локально
- Алиасы: %1
+ Псевдонимы: %1
@@ -3677,54 +3644,7 @@ Do you want to delete it anyway?
неизвестно
-
-
- OK
-
-
-
- Отмена
-
-
-
- Цветная печать
-
-
-
- Принтер
-
-
-
-
- Печатать все
-
-
-
-
- Печатать диапазон
-
-
-
- Начать с последней страницы
-
-
-
- Число копий:
-
-
-
- Формат бумаги
-
-
-
- Портрет
-
-
-
- Альбом
-
-
-
+
A0 (841 x 1189 мм)
@@ -3744,7 +3664,12 @@ Do you want to delete it anyway?
A3 (297 x 420 мм)
-
+
+
+ A4 (210 x 297 мм, 8.26 x 11.7 дюймов)
+
+
+
A5 (148 x 210 мм)
@@ -3794,7 +3719,12 @@ Do you want to delete it anyway?
B4 (250 x 353 мм)
-
+
+
+ B5 (176 x 250 мм, 6.93 x 9.84 дюймов)
+
+
+
B6 (125 x 176 мм)
@@ -3829,7 +3759,12 @@ Do you want to delete it anyway?
DLE (110 x 220 мм)
-
+
+
+ Executive (191 x 254 мм, 7.5 x 10 дюймов)
+
+
+
Folio (210 x 330 мм)
@@ -3839,88 +3774,87 @@ Do you want to delete it anyway?
Ledger (432 x 279 мм)
-
-
- Tabloid (279 x 432 мм)
-
-
-
- Конверт US #10 (105x241 мм)
-
-
-
-
-
+
+ Legal (216 x 356 мм, 8.5 x 14 дюймов)
-
-
-
+
+
+ Letter (216 x 279 мм, 8.5 x 11 дюймов)
-
-
-
+
+
+ Tabloid (279 x 432 мм)
-
-
-
+
+
+ Конверт US #10 (105x241 мм)
-
-
-
+
+
+ Закрыть
- Print
-
-
-
- Файл
+ Печать
-
+ Печать в файл ...
+
+
+
+
+ Печатать диапазон
+
+
+
+
+ Печатать все
-
+
-
+ %1 недоступен для записи.
+Выберите другое имя файла.
-
+ %1 уже существует.
+Хотите заменить его?
-
+
-
+ Файл существует
-
+ <qt>Хотите заменить?</qt>
-
+ Выделенный фрагмент
-
+ %1 - это каталог.
+Выберите другое имя файла.
@@ -4075,48 +4009,48 @@ Please choose a different file name.
-
+ Произвольный
-
+
-
+ &Параметры >>
-
+ &Печать
-
+ &Параметры <<
-
+ Печать в файл (PDF)
-
+ Печать в файл (Postscript)
-
+
-
+ Локальный файл
-
+ Запись %1 файла
-
+ Значение 'от' не может быть больше значения 'до'.
@@ -4125,302 +4059,291 @@ Please choose a different file name.
-
+ Параметры страницы
-
+ %1%
-
+ Просмотр печати
-
+ Следующая страница
-
+ Предыдущая страница
-
+ Первая страница
-
+ Последняя страница
-
+ По ширине
-
+ На всю страницу
-
+ Увеличить
-
+ Уменьшить
- Портрет
+ Книжная
- Альбом
+ Альбомная
-
+ Показать одну страницу
-
+ Показать титульные страницы
-
+ Показать обзор всех страниц
- Print
+ Печать
-
+ Параметры страницы
- Закрыть
+ Закрыть
-
+ Экспорт в PDF
-
-
-
-
- QPrintPropertiesDialog
-
-
- Сохранить
-
-
-
- OK
+ Экспорт в Postscript
QPrintPropertiesWidget
-
+
-
+ Форма
-
+
-
+ Страница
-
+
-
+ Дополнительно
QPrintSettingsOutput
-
+
-
+ Форма
-
+
-
+ Копии
-
+
- Печатать диапазон
+ Диапазон печати
-
+
- Печатать все
+ Все
-
+
-
+ Страницы от
-
+
-
+ до
-
+
-
+ Выделенный фрагмент
-
+
-
+ Настройки вывода
-
+
-
+ Количество копий:
-
+
-
+ Разобрать про копиям
-
+
-
+ Обратный порядок
-
+
- Параметры
+ Параметры
-
+
-
+ Режим цвета
-
+
-
+ Цвет
-
+
-
+ Оттенки серого
-
+
-
+ Двусторонняя печать
-
+
-
+ Нет
-
+
-
+ По длинной стороне
-
+
-
+ По короткой стороне
QPrintWidget
-
+
-
+ Форма
-
+
- Принтер
+ Принтер
-
+
-
+ &Название:
-
+
-
+ С&войства
-
+
-
+ Расположение:
-
+
-
+ Просмотр
-
+
-
+ Тип:
-
+
-
+ Выходной &файл:
-
+
-
+ ...
QProcess
-
+
-
+ Не удалось открыть перенаправление ввода для чтения
-
+ Не удалось открыть перенаправление вывода для записи
-
+ Ошибка выделения ресурсов (сбой fork): %1
@@ -4433,7 +4356,7 @@ Please choose a different file name.
-
+ Время на операцию с процессом истекло
@@ -4441,29 +4364,29 @@ Please choose a different file name.
-
+ Ошибка получения данных от процесса
-
+ Ошибка отправки данных процессу
-
+ Процесс завершился с ошибкой
-
+ Программа не указана
-
+ Не удалось запустить процесс
@@ -4479,7 +4402,7 @@ Please choose a different file name.
- Открыть
+ Открыть
@@ -4487,7 +4410,7 @@ Please choose a different file name.
-
+ Отметить
@@ -4500,22 +4423,22 @@ Please choose a different file name.
- использовались отключенные возможности
+ использование отключённых возможностей
- bad char class syntax
+ неправильный синтаксис класса символов
- bad lookahead syntax
+ неправильный предварительный синтаксис
- bad repetition syntax
+ неправильный синтаксис повторения
@@ -4541,37 +4464,37 @@ Please choose a different file name.
QSQLite2Driver
-
+
-
+ Ошибка открытия базы данных
-
+ Невозможно начать транзакцию
-
+ Невозможно выполнить транзакцию
-
+ Невозможно откатить транзакцию
QSQLite2Result
-
+
-
+ Невозможно получить результаты
-
+
-
+ Невозможно выполнить выражение
@@ -4579,27 +4502,27 @@ Please choose a different file name.
-
+ Ошибка открытия базы данных
-
+ Ошибка закрытия базы данных
-
+ Невозможно начать транзакцию
-
+ Невозможно выполнить транзакцию
-
+ Невозможно откатить транзакцию
@@ -4609,32 +4532,32 @@ Please choose a different file name.
-
+ Невозможно получить строку
-
+ Невозможно выполнить выражение
-
+ Невозможно сбросить выражение
-
+ Невозможно привязать параметр
-
+ Количество параметров не совпадает
-
+ Отсутствует запрос
@@ -4642,184 +4565,184 @@ Please choose a different file name.
-
+ Прокрутить сюда
-
+ К левой границе
-
+ Вверх
-
+ К правой границе
-
+ Вниз
-
+ На страницу влево
-
+ На страницу вверх
-
+ На страницу вправо
-
+ На страницу вниз
-
+ Прокрутить влево
-
+ Прокрутить вверх
-
+ Прокрутить вправо
-
+ Прокрутить вниз
- Выровнять
+ На строку вверх
-
+ Положение
-
+ На строку вниз
QSharedMemory
-
+
-
+ %1: невозможно установить ключ на блокировку
-
+ %1: размер меньше нуля
-
+ %1: невозможно заблокировать
-
+ %1: невозможно разблокировать
-
+ %1: доступ запрещён
-
+ %1: уже существует
-
+ %1: не существует
-
+ %1: недостаточно ресурсов
-
+ %1: неизвестная ошибка %2
-
+ %1: пустой ключ
-
+ %1: специфический ключ unix не существует
-
+ %1: ошибка ftok
-
+ %1: невозможно создать ключ
-
+ %1: системой наложены ограничения на размер
-
+ %1: не приложенный
-
+ %1: некорректный размер
-
+ %1: некорректный ключ
-
+ %1: не удалось запросить размер
@@ -4827,117 +4750,117 @@ Please choose a different file name.
- Space
+
- Esc
+
- Tab
+
- Backtab
+
- Backspace
+
- Return
+
- Enter
+
- Ins
+
- Del
+
- Pause
+ Пауза
- Print
+ Печать
- SysReq
+
- Home
+ Домой
- End
+
- Left
+ Влево
- Up
+ Вверх
- Right
+ Вправо
- Down
+ Вниз
- PgUp
+
- PgDown
+
- CapsLock
+
- NumLock
+
- ScrollLock
+
@@ -4957,12 +4880,12 @@ Please choose a different file name.
- Вперед
+ Вперёд
- Стоп
+ Остановить
@@ -4972,72 +4895,72 @@ Please choose a different file name.
- Тише
+
- Выключить звук
+
- Громче
+
- Bass Boost
+
- Bass Up
+
- Bass Down
+
- Treble Up
+
- Treble Down
+
- Воспроизведение
+
- Остановить воспроизведение
+
- Воспроизвести предыдущее
+
- Воспроизвести следующее
+
- Запись
+
- Избранное
+
@@ -5047,102 +4970,102 @@ Please choose a different file name.
- Дежурный режим
+
- Открыть URL
+
- Почта
+
- Проигрыватель
+
- Запустить (0)
+
- Запустить (1)
+
- Запустить (2)
+
- Запустить (3)
+
- Запустить (4)
+
- Запустить (5)
+
- Запустить (6)
+
- Запустить (7)
+
- Запустить (8)
+
- Запустить (9)
+
- Запустить (A)
+
- Запустить (B)
+
- Запустить (C)
+
- Запустить (D)
+
- Запустить (E)
+
- Запустить (F)
+
@@ -5250,41 +5173,41 @@ Please choose a different file name.
-
+
- Ctrl
+
- Shift
+
- Alt
+
- Meta
+
- +
+
- F%1
+
-
+
@@ -5294,27 +5217,27 @@ Please choose a different file name.
-
+ Страница влево
-
+ Страница вверх
-
+ Положение
-
+ Страница вправо
-
+ Страница вниз
@@ -5322,72 +5245,72 @@ Please choose a different file name.
-
+ В соединении прокси-сервером отказано
-
+ Соединение с прокси-сервером неожиданно закрыто
-
+ Прокси-сервер не найден
-
+ Время на соединение с прокси-сервером истекло
-
+ Не удалось авторизоваться на прокси-сервере
-
+ Не удалось авторизоваться на прокси-сервере: %1
-
+ Ошибка протокола SOCKSv5
-
+ Ошибка сервере SOCKSv5
-
+ Соединение не разрешено сервером SOCKSv5
-
+ TTL истекло
-
+ Команда SOCKSv5 не поддерживается
-
+ Тип адреса не поддерживается
-
+ Неизвестная ошибка SOCKSv5 прокси (код 0x%1)
-
+ Время на сетевую операцию истекло
@@ -5395,12 +5318,12 @@ Please choose a different file name.
-
+ Больше
-
+ Меньше
@@ -5413,7 +5336,7 @@ Please choose a different file name.
- Удалить эту запись?
+ Удалить данную запись?
@@ -5452,7 +5375,7 @@ Please choose a different file name.
- Подтвердить
+ Подтверждение
@@ -5463,59 +5386,59 @@ Please choose a different file name.
QSslSocket
-
+
-
+ Невозможно записать данные: %1
-
+ Ошибка чтения: %1
-
+ Ошибка квитирования SSL: %1
-
+
-
+ Ошибка создания контекста SSL: (%1)
-
+ Неправильный или пустой список шифров (%1)
-
+ Ошибка создания сессии SSL, %1
-
+ Ошибка создания сессии SSL: %1
-
+ Невозможно предоставить сертификат без ключа, %1
-
+ Ошибка загрузки локального сертификата, %1
-
+ Ошибка загрузки закрытого ключа, %1
-
+ Закрытый ключ не соответствует открытому ключу, %1
@@ -5524,42 +5447,42 @@ Please choose a different file name.
-
+ %1: недостаточно ресурсов
-
+ %1: доступ запрещён
-
+ %1: уже существует
-
+ %1: не существует
-
+ %1: неизвестная ошибка %2
QTDSDriver
-
+
-
+ Невозможно открыть соединение
-
+ Невозможно использовать базу данных
@@ -5567,12 +5490,12 @@ Please choose a different file name.
-
+ Прокрутить влево
-
+ Прокрутить вправо
@@ -5580,7 +5503,7 @@ Please choose a different file name.
-
+ Операция с сокетом не поддерживается
@@ -5588,42 +5511,42 @@ Please choose a different file name.
- &Отменить
+ &Отменить действие
- &Повторить
+ &Повторить действие
- &Вырезать
+ &Вырезать
- &Копировать
+ &Копировать
-
+ Скопировать &адрес ссылки
- &Вставить
+ В&ставить
- Удалить
+ Удалить
- Выделить все
+ Выделить всё
@@ -5632,13 +5555,13 @@ Please choose a different file name.
-
+ Нажать
- Открыть
+ Открыть
@@ -5646,7 +5569,7 @@ Please choose a different file name.
-
+ Данная платформа не поддерживает IPv6
@@ -5654,12 +5577,12 @@ Please choose a different file name.
- Отменить
+ Отменить действие
- Повторить
+ Повторить действие
@@ -5667,7 +5590,7 @@ Please choose a different file name.
-
+ <пусто>
@@ -5675,12 +5598,12 @@ Please choose a different file name.
- Отменить
+ Отменить действие
- Повторить
+ Повторить действие
@@ -5688,12 +5611,12 @@ Please choose a different file name.
-
+ LRM Признак письма слева направо
-
+ RLM Признак письма справа налево
@@ -5738,7 +5661,7 @@ Please choose a different file name.
-
+ Вставить управляющий символ Unicode
@@ -5746,160 +5669,160 @@ Please choose a different file name.
-
+ Запрос отменён
-
+ Запрос блокирован
-
+ Невозможно отобразить URL
-
+ Загрузка фрейма прервана изменением политики
-
+ Невозможно отобразить тип MIME
-
+ Файл не существует
QWebPage
-
+
-
+ Некорректный HTTP-запрос
default label for Submit buttons in forms on web pages
-
+ Отправить
Submit (input element) alt text for <input> elements with no alt, title, or value
-
+ Отправить
default label for Reset buttons in forms on web pages
-
+ Сбросить
text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index'
-
+ Индекс поиска. Введите ключевые слова для поиска:
title for file button used in HTML forms
-
+ Обзор...
text to display in file button used in HTML forms when no file is selected
-
+ Файл не указан
Open in New Window context menu item
-
+ Открыть в новом окне
Download Linked File context menu item
-
+ Сохранить по ссылке как...
Copy Link context menu item
-
+ Копировать адрес ссылки
Open Image in New Window context menu item
-
+ Открыть изображение
Download Image context menu item
-
+ Сохранить изображение
Copy Link context menu item
-
+ Копировать изображение в буффер обмена
Open Frame in New Window context menu item
-
+ Открыть фрейм
Copy context menu item
-
+ Копировать
Back context menu item
-
+ Назад
Forward context menu item
-
+ Вперёд
Stop context menu item
- Стоп
+ Остановить
Reload context menu item
-
+ Обновить
Cut context menu item
-
+ Вырезать
Paste context menu item
-
+ Вставить
@@ -5911,43 +5834,43 @@ Please choose a different file name.
Ignore Spelling context menu item
-
+ Пропустить
Learn Spelling context menu item
-
+ Добавить в словарь
Search The Web context menu item
-
+ Найти в Интернет
Look Up in Dictionary context menu item
-
+ Поиск в словаре
Open Link context menu item
-
+ Открыть ссылку
Ignore Grammar context menu item
-
+ Пропустить
Spelling and Grammar context sub-menu item
-
+ Орфография
@@ -5965,13 +5888,13 @@ Please choose a different file name.
Check spelling context menu item
-
+ Проверка орфографии
Check spelling while typing context menu item
-
+ Проверять орфографию при наборе
@@ -5983,97 +5906,97 @@ Please choose a different file name.
Font context sub-menu item
-
+ Шрифты
Bold context menu item
-
+ Жирный
Italic context menu item
-
+ Курсив
Underline context menu item
-
+ Подчёркнутый
Outline context menu item
-
+ Перечёркнутый
Writing direction context sub-menu item
-
+ Направление
Text direction context sub-menu item
-
+ Направление текста
Default writing direction context menu item
-
+ По умолчанию
Left to Right context menu item
-
+ Слева направо
Right to Left context menu item
-
+ Справа налево
Inspect Element context menu item
-
+ Проверить
Label for only item in menu that appears when clicking on the search field image, when no searches have been performed
-
+ История поиска пуста
label for first item in the menu that appears when clicking on the search field image, used as embedded menu title
-
+ История поиска
menu item in Recent Searches menu that empties menu's contents
-
+ Очистить историю поиска
Unknown filesize FTP directory listing item
-
+ Неизвестно
Title string for images
-
+ %1 (%2x%3 px)
@@ -6083,74 +6006,76 @@ Please choose a different file name.
-
+ Прокрутить сюда
-
+ К левой границе
-
+ Вверх
-
+ К правой границе
-
+ Вниз
-
+ На страницу влево
-
+ На страницу вверх
-
+ На страницу вправо
-
+ На страницу вниз
-
+ Прокрутить влево
-
+ Прокрутить вверх
-
+ Прокрутить вправо
-
+ Прокрутить вниз
number of chosen file
-
-
+
+ %n файл(а)
+ %n файла
+ %n файлов
@@ -6169,149 +6094,149 @@ Please choose a different file name.
-
+
-
+ Переместить указатель к следующему символу
-
+ Переместить указатель к предыдущему символу
-
+ Переместить указатель к следующему слову
-
+ Переместить указатель к предыдущему слову
-
+ Переместить указатель на следующую строку
-
+ Переместить указатель на предыдущую строку
-
+ Переместить указатель в начало строки
-
+ Переместить указатель в конец строки
-
+ Переместить указатель в начало блока
-
+ Переместить указатель в конец блока
-
+ Переместить указатель в начало документа
-
+ Переместить указатель в конец документа
-
+ Выделить всё
-
+ Выделить до следующего символа
-
+ Выделить до предыдущего символа
-
+ Выделить до следующего слова
-
+ Выделить до предыдущего слова
-
+ Выделить до следующей строки
-
+ Выделить до предыдущей строки
-
+ Выделить до начала строки
-
+ Выделить до конца строки
-
+ Выделить до начала блока
-
+ Выделить до конца блока
-
+ Выделить до начала документа
-
+ Выделить до конца документа
-
+ Удалить до начала слова
-
+ Удалить до конца слова
-
+ Вставить новый параграф
-
+ Вставить новую строку
@@ -6319,77 +6244,73 @@ Please choose a different file name.
- Что это?
+ Что это?
QWidget
-
+
-
+ *
QWizard
-
- < &Назад
-
-
-
-
- &Финиш
-
-
-
-
- &Справка
-
-
-
-
+ Назад
-
+ Продолжить
-
+ Передать
-
-
-
-
- Выход
+ Готово
- Справка
+ Справка
+
+
+
+
+ < &Назад
+
+
+
+
+ &Завершить
+
+
+
+
+ Отмена
-
-
- Отмена
+
+
+ &Справка
-
+
-
+ &Далее
- &Вперед >
+ &Далее >
@@ -6397,43 +6318,43 @@ Please choose a different file name.
- &Восстановить
+ &Восстановить
- &Переместить
+ &Переместить
- &Размер
+ &Размер
- &Свернуть
+ &Свернуть
- Р&азвернуть
+ Р&аспахнуть
- &Закрыть
+ &Закрыть
- Всегда &наверху
+ Оставаться &сверху
- Свернуть в за&головок
+ Св&ернуть в заголовок
@@ -6444,22 +6365,22 @@ Please choose a different file name.
- Свернуть
+ Свернуть
- Восстановить
+ Восстановить
- Закрыть
+ Закрыть
- Восстановить из за&головка
+ В&осстановить из заголовка
@@ -6472,7 +6393,7 @@ Please choose a different file name.
- ошибка инициирована пользователем
+ ошибка вызвана пользователем
@@ -6482,22 +6403,22 @@ Please choose a different file name.
- определен более, чем один тип документов
+ указано более одного типа документа
- в процессе грамматического разбора элемента произошла ошибка
+ ошибка разбора элемента
- отсутствует тег
+ тэг не совпадает
- в процессе грамматического разбора произошла ошибка
+ ошибка разбора документа
@@ -6507,12 +6428,12 @@ Please choose a different file name.
- некорректное имя директивы
+ некорректное имя директивы разбора
- при чтении XML-тега ожидался параметр version
+ в объявлении XML ожидается параметр version
@@ -6522,52 +6443,52 @@ Please choose a different file name.
- при чтении XML-тега ожидался параметр encoding или параметр standalone
+ в объявлении XML ожидаются параметры encoding или standalone
- при чтении XML-тега ожидался параметр standalone
+ в объявлении XML ожидается параметр standalone
- в процессе грамматического разбора типа документа произошла ошибка
+ ошибка разбора объявления типа документа
- ожидался символ
+ ожидалась буква
- в процессе грамматического разбора комментария произошла ошибка
+ ошибка разбора комментария
- в процессе грамматического разбора ссылки произошла ошибка
+ ошибка разбора ссылки
- internal general entity reference not allowed in DTD
+ внутренняя ссылка на общий объект недопустима в DTD
- external parsed general entity reference not allowed in attribute value
+ внешняя ссылка на общий объект недопустима в значении атрибута
- external parsed general entity reference not allowed in DTD
+ внешняя ссылка на общий объект недопустима в DTD
- unparsed entity reference in wrong context
+ неразобранная ссылка на объект в неверном контексте
@@ -6577,7 +6498,7 @@ Please choose a different file name.
- error in the text declaration of an external entity
+ ошибка в объявлении внешнего объекта
@@ -6586,127 +6507,128 @@ Please choose a different file name.
-
+ Лишние данные в конце документа.
-
+ Некорректное значение объекта.
-
+ Некорректный символ XML.
-
+ Последовательность ']]>' недопустима в содержимом.
-
+ Префикс пространства имён '%1' не объявлен
-
+ Атрибут переопределен.
-
+ Неожиданный символ '%1' в литерале открытого идентификатора.
-
+ Неверная строка версии XML.
-
+ Неподдерживаемая версия XML.
-
+ %1 - неверное название кодировки.
-
+ Кодировка %1 не поддерживается
-
+ Псевдоатрибут 'standalone' может принимать только значения 'yes' или 'no'.
-
+ Некорректный атрибут в объявлении XML.
-
+ Неожиданный конец документа.
-
+ Некорректный документ.
-
+ Ожидалось
-
+ , получили '
-
+ Неожиданное '
-
+ Ожидаются символьные данные.
-
+ Обнаружен рекурсивный объект.
-
+ Ожидается открывающий тэг.
-
+ Объявление XML находится не в начале документа.
-
+ Не уверен в правильности перевода
+ NDATA в объявлении объекта-параметра.
-
+ %1 неверное название обрабатываемой инструкции.
-
+ Неверное название обрабатываемой инструкции.
@@ -6714,55 +6636,55 @@ Please choose a different file name.
-
+ Неверное объявление пространства имён.
-
+ Некорректное имя XML.
-
+ Открывающий тэг не совпадает с закрывающим.
-
+ Ссылка на необработанный объект '%1'.
-
+ Объект '%1' не объявлен.
-
+ Ссылка на внешний объект '%1' в значении атрибута.
-
+ Неверная символьная ссылка.
-
+ Обнаружено неверно закодированное содержимое.
-
+ Псевдоатрибут 'standalone' должен находиться после указания кодировки.
-
+ %1 - неверный идентификатор PUBLIC.
@@ -6770,1038 +6692,1042 @@ Please choose a different file name.
-
+ Атрибут '%1' со значением '%2' уже определен.
-
+ Атрибут '%1' должен иметь значение типа '%2', но '%3' им не является.
-
+ Время ожидания сети истекло.
-
-
-
-
-
-
+ Элемент %1 не может быть сериализован, так как присутствует вне документа.
-
+ Год %1 неверен, так как начинается с %2.
-
+ День %1 вне диапазона %2..%3.
-
+ Месяц %1 вне диапазона %2..%3.
-
+ Переполнение: Не удается представить дату %1.
-
+ День %1 неверен для месяца %2.
-
+ Время 24:%1:%2.%3 неверно. 24 часа, но минуты, секунды и/или миллисекунды отличны от 0;
-
+ Время %1:%2:%3.%4 неверно.
-
+ Переполнение: невозможно представить дату.
-
+ Должна присутствовать как минимум одна компонента.
-
+ Как минимум одна компонента времени должна следовать за разделителем '%1'.
-
+ Нет параметра в целочисленном делении %1, может быть %2.
-
+ Первый параметр целочисленного деления (%1) не может быть бесконечностью (%2).
-
+ Второй параметр целочисленного деления (%1) не может быть нулем (%2).
-
+ %1 не является правильным значением типа %2.
-
+ При преобразовании %2 в %1 исходное значение не может быть %3.
-
+ Целочисленное деление (%1) на нуль (%2) не определено.
-
+ Деление (%1) на нуль (%2) не определено.
-
+ Деление по модулю (%1) на нуль (%2) не определено.
-
+ Деление числа типа %1 на %2 (not-a-number) недопустимо.
-
+ Деление числа типа %1 на %2 или %3 (плюс-минус нуль) недопустимо.
-
+ Умножение числа типа %1 на %2 или %3 (плюс-минус бесконечность) недопустимо.
-
+ Значение типа %1 не может быть булевым значением.
-
+ Булево значение не может быть вычислено для последовательностей, которые содержат два и более атомарных значения.
-
+ Значение %1 типа %2 больше максимума (%3).
-
+ Значение %1 типа %2 меньше минимума (%3).
-
+ Значение типа %1 должно содержать четное количество цифр. Значение %2 этому требованию не удовлетворяет.
-
+ Значение %1 некорректно для типа %2.
-
+ Оператор %1 не может использоваться для типа %2.
-
+ Оператор %1 не может использоваться для атомарных значений типов %2 и %3.
-
+ URI пространства имён в названии рассчитываемого атрибута не может быть %1.
-
+ Название расчитываемого атрибута не может иметь URI пространства имён %1 с локальным именем %2.
-
+ Ошибка типов в преобразовании, ожидалось %1, получено %2.
-
+ При преобразовании в %1 или производные от него типы исходное значение должно быть того же типа или строковым литералом. Тип %2 недопустим.
-
+ Преобразование к типу %1 невозможно.
-
+ Невозможно преобразовать %1 в %2.
-
+ Преобразование к %1 невозможно, так как это абстрактный тип и, следовательно, для него невозможно создать объект.
-
+ Невозможно преобразовать значение %1 типа %2 в %3
-
+ Не удалось преобразовать %1 в %2: %3
-
+ Комментарий не может содержать %1
-
+ Комментарий не может оканчиваться на %1.
-
+ Невозможно выполнить сравнение с типом %1.
-
+ Оператор %1 недоступен между атомарными значениями типа %2 и %3.
-
+ Узел-атрибут не может быть потомком узла-документа. Атрибут %1 неуместен.
-
+ Модуль библиотеки не может использоваться напрямую. Он должен быть импортирован из основного модуля.
-
+ Шаблон с именем %1 отсутствует.
-
+ Значение типа %1 не может быть условием. Условием могут являться числовой и булевый типы.
-
+ Позиционный предикат должен вычисляться как числовое выражение.
-
+ Целевое имя в обрабатываемой инструкции не может быть %1 в любой комбинации нижнего и верхнего регистров. Имя %2 некорректно.
-
+ %1 некорректное целевое имя в обрабатываемой инструкции. Имя должно быть значением типа %2, например: %3.
-
+ Последняя часть пути должна содержать узлы или атомарные значения, но не может содержать и то, и другое одновременно.
-
+ Данные обрабатываемой инструкции не могут содержать строку '%1'
-
+ Отсутствует привязка к пространству имён для префикса %1
-
+ Отсутствует привязка к пространству имён для префикса %1 в %2
-
+ %1 некоррекно для %2
-
-
+
+ %1 принимает не более %n аргумента. Следовательно, %2 неверно.
+ %1 принимает не более %n аргументов. Следовательно, %2 неверно.
+ %1 принимает не более %n аргументов. Следовательно, %2 неверно.
-
-
+
+ %1 принимает не менее %n аргумента. Следовательно, %2 неверно.
+ %1 принимает не менее %n аргументов. Следовательно, %2 неверно.
+ %1 принимает не менее %n аргументов. Следовательно, %2 неверно.
-
+ Первый аргумент %1 не может быть типа %2. Он должен быть числового типа, типа xs:yearMonthDuration или типа xs:dayTimeDuration.
-
+ Первый аргумент %1 не может быть типа %2. Он должен быть типа %3, %4 или %5.
-
+ Второй аргумент %1 не может быть типа %2. Он должен быть типа %3, %4 или %5.
-
+ Символ %1 недопустим для XML 1.0.
-
+ Первый аргумент %1 не может быть типа %2.
-
+ Если оба значения имеют региональные смещения, смещения должны быть одинаковы. %1 и %2 не одинаковы.
-
+ %1 было вызвано.
-
+ '%1' должно сопровождаться '%2' или '%3', но не в конце замещаемой строки.
-
+ В замещаемой строке '%1' должно сопровождаться как минимум одной цифрой, если неэкранировано.
-
+ В замещаемой строке символ '%1' может использоваться только для экранирования самого себя или '%2', но не '%3'
-
+ %1 соответствует символам конца строки
-
+ %1 и %2 соответствуют началу и концу строки.
-
+ Соответствия регистронезависимы
-
+ Символы пробелов удалены, за исключением тех, что были в классах символов
-
+ %1 - неверный шаблон регулярного выражения: %2
-
+ %1 - неверный флаг для регулярного выражения. Допустимые флаги:
-
+ Префикс не должен быть указан, если первый параметр - пустая последовательность или пустая строка (вне пространства имён). Был указан префикс %1.
-
+
-
+ Будет невозможно восстановить %1.
-
+ Корневой узел второго аргумента функции %1 должен быть документом. %2 не является документом.
-
+ Набор по умолчанию не определен
-
+ %1 не может быть восстановлен
-
+ Форма нормализации %1 не поддерживается. Поддерживаются только %2, %3, %4, %5 и пустая, т.е. пустая строка (без нормализации).
-
+ Региональное смещение должно быть в переделах от %1 до %2 включительно. %3 выходит за допустимые пределы.
-
+ %1 не является полным количеством минут.
-
+ Необходимое число элементов - %1, получено %2.
-
+ Элемент %1 не соответствует необходимому типу %2.
-
+ %1 является схемой неизвестного типа.
-
+ Только одно объявление %1 может присутствовать в прологе запроса.
-
+ Инициализация переменной %1 зависит от себя самой
-
+ Переменная с именем %1 отсутствует
-
+ Переменная %1 не используется
-
+ Версия %1 не поддерживается. Поддерживается XQuery версии 1.0.
-
+ Кодировка %1 неверна. Имя кодировки должно содержать только символы латиницы без пробелов и должно удовлетворять регулярному выражению %2.
-
+ Функция с сигнатурой %1 отсутствует
-
+ Объявление пространство имён по умолчанию должно быть до объявления функций, переменных и опций.
-
+ Объявление пространства имён должно быть до объявления функций, переменных и опций.
-
+ Импорт модулей должен быть до объявлений функций, переменных и опций.
-
+ Невозможно переопределить префикс %1.
-
+ Префикс %1 уже объявлен в прологе.
-
+ Название опции должно содержать префикс. Нет пространства имён по умолчанию для опций.
-
+ Возможность импорта схем не поддерживается. Следовательно, объявлений %1 быть не должно.
-
+ Целевое пространство имён %1 не может быть пустым.
-
+ Возможность импорта модулей не поддерживается
-
+ Отсутствует значение для внешней переменной с именем %1.
-
+ Указана конструкция, допустимая только в XQuery.
-
+ Шаблон с именем %1 уже был объявлен.
-
+ Ключевое слово %1 не может встречаться с любым другим названием режима.
-
+ Значение атрибута %1 должно быть типа %2, но %3 ему не соответствует.
-
+ Не удается связать префикс %1. По умолчанию префикс связан с пространством имён %2.
-
+ Переменная с именем %1 уже объявлена.
-
+ Функция стилей должна иметь имя с префиксом.
-
+ Пространство имён для пользовательских функций не может быть пустым (попробуйте предопределенный префикс %1, который существует для подобных ситуаций)
-
+ Пространтсво имён %1 зарезервировано, поэтому пользовательские функции не могут его использовать. Попробуйте предопределенный префикс %2, который существует для подобных ситуаций.
-
+ Пространство имён пользовательской функции в модуле библиотеки должен соответствовать пространству имён модуля. Другими словами, он должен быть %1 вместо %2
-
+ Функция с сигнатурой %1 уже существует.
-
+ Внешние функции не поддерживаются. Все поддерживаемые функции могут использоваться напрямую без первоначального объявления их внешними
-
+ Аргумент с именем %1 уже объявлен. Имя каждого аргумента должно быть уникальным.
-
+ Если функция %1 используется для сравнения внутри шаблона, аргумент должен быть ссылкой на переменную или строковым литералом.
-
+ В шаблоне XSL-T первый аргумент функции %1 должен быть строковым литералом, если функция используется для сравнения.
-
+ В шаблоне XSL-T первый аргумент функции %1 должен быть литералом или ссылкой на переменную, если функция используется для сравнения.
-
+ В шаблоне XSL-T у функции %1 не должно быть третьего аргумента.
-
+ В шаблоне XSL-T только функции %1 и %2 могут использоваться для сравнения, но не %3.
-
+ В шаблоне XSL-T не может быть использована ось %1 - только оси %2 или %3.
-
+ %1 является неверным шаблоном имени режима.
-
+ Имя переменной, связанной с выражением for, должно отличаться от позиционной переменной. Две переменные с именем %1 конфликтуют.
-
+ Возможность проверки по схеме не поддерживается. Выражения %1 не могут использоваться.
-
+ Ни одно из выражений pragma не поддерживается. Должно существовать запасное выражение
-
+ Имя каждого параметра шаблона должно быть уникальным, но %1 повторяется.
-
+ Ось %1 не поддерживается в XQuery
-
+ %1 является неверным названием для инструкции обработки.
-
+ %1 является неверным числовым литералом.
-
+ Функция с именем %1 отсутствует.
-
+ URI пространства имён не может быть пустой строкой при связывании с префиксом %1.
-
+ %1 - неверный URI пространства имён.
-
+ Невозможно связать с префиксом %1
-
+ Пространство имён %1 может быть связано только с %2 (в данном случае уже предопределено).
-
+ Префикс %1 может быть связан только с %2 (в данном случае уже предопределено).
-
+ Два атрибута объявления пространств имён имеют одинаковое имя: %1.
-
+ URI пространства имён должно быть константой и не может содержать выражений.
-
+ Атрибут с именем %1 уже есть в этом элементе.
-
+ Прямой конструктор элемента составлен некорректно. %1 заканчивается %2.
-
+ Название %1 не соответствует ни одному типу схемы.
-
+ %1 - сложный тип. Преобразование к сложным типам невозможно. Однако, преобразование к атомарным типам как %2 работает.
-
+ %1 - не атомарный тип. Преобразование возможно только к атомарным типам.
-
+ %1 является объявлением атрибута вне положенного места. Имейте в виду, возможность импорта схем не поддерживается.
-
+ Название выражения расширения должно быть в пространстве имён.
-
+ пусто
-
+ нуль или один
-
+ ровно один
-
+ один или более
-
+ нуль или более
-
+ Требуется тип %1, но обнаружен %2.
-
+ Преобразование %1 к %2 может снизить точность.
-
+ Фокус не определен.
-
+ Невозможно добавлять атрибуты после любого другого вида узла.
-
+ Атрибут с именем %1 уже существует.
-
+ Только Unicode Codepoint Collation поддерживается (%1). %2 не поддерживается.
+
+
+
+
+ Атрибут %1 не может быть сериализован, так как присутствует на верхнем уровне.
-
+ Кодировка %1 не поддерживается.
-
+ %1 содержит октеты, которые недопустимы в требуемой кодировке %2.
-
+ Символ с кодом %1, присутствующий в %2 при использовании кодировки %3, не является допустимым символом XML.
-
+ Неоднозначное соответствие правилу.
-
+ В конструкторе пространства имён значение пространства имён не может быть пустой строкой.
-
+ Префикс должен быть корректным %1, но %2 им не является.
-
+ Префикс%1 не может быть связан.
-
+ Только префикс %1 может быть связан с %2 и наоборот.
-
+ Обнаружена зацикленность
-
+ Необходим параметр %1 , но соответствующего %2 не передано.
-
+ Передан параметр %1 , но соответствующего %2 не существует.
-
+ URI не может содержать фрагмент
-
+ Элемент %1 недопустим в этом месте.
-
+ Текстовые узлы недопустимы в этом месте.
-
+ Ошибка разбора: %1
-
+ Значение атрибута версии XSL-T должно быть типа %1, но %2 им не является.
-
+ Выполняется таблица стилей XSL-T 1.0 с обработчиком версии 2.0.
-
+ Неизвествный атрибут XSL-T %1.
-
+ Атрибуты %1 и %2 взаимоисключающие.
-
+ В модуле упрощённой таблицы стилей атрибут %1 обязан присутствовать.
-
+ Если элемент %1 не имеет атрибут %2, у него не может быть атрибутов %3 и %4.
-
+ Элемент %1 должен иметь как минимум один из атрибутов %2 или %3.
-
+ Как минимум один режим должен быть указан в атрибуте %1 элемента %2.
-
+ Атрибут %1 недопустим в элементе %2. Допустимы только стандартные атрибуты.
-
+ Атрибут %1 недопустим в элементе %2. Допустимы только %3 и стандартные атрибуты.
-
+ Атрибут %1 недопустим в элементе %2. Допустимы только %3, %4 и стандартные атрибуты.
-
+ Атрибут %1 недопустим в элементе %2. Допустимы только %3 и стандартные атрибуты.
-
+ Атрибуты XSL-T элементов XSL-T должны быть вне пространства имён, а не в простанстве имеё XSL-T, которым является %1.
-
+ Элемента %2 должен иметь атрибут %1.
-
+ Элемент с локальным именем %1 отсутствует в XSL-T.
-
+ Элемент %1 должен идти последним.
-
+ Как минимум один элемент %1 должен быть перед %2.
-
+ Должен быть только один элемент %1.
-
+ Как минимум один элемент %1 должен быть внутри %2.
-
+ Если %2 содержит атрибут %1, конструктор последовательности не может быть использован.
-
+ Элемент %1 должен иметь атрибут %2 или конструктор последовательности.
-
+ Если параметр необходим, значение по умолчание не может быть передано через атрибут %1 или конструктор последовательности.
-
+ У элемента %1 не может быть потомков.
-
+ У элемента %1 не может быть конструктора последовательности.
-
+ У %2 не может быть атрибута %1, когда он является потомком %3.
-
+ Параметр в функции не может быть объявлен туннелем.
-
+ Данный обработчик не работает со схемами, следовательно, %1 не может использоваться.
-
+ Элементы верхнего уровня таблицы стилей должны быть в пространстве имен, которым %1 не является.
-
+ Значение атрибута %1 элемента %2 должно быть или %3, или %4, но не %5.
-
+ Атрибут %1 не может принимать значение %2.
-
+ Атрибут %1 может быть только у первого элемента %2.
-
+ Как минимум один элемент %1 должен быть в %2.
@@ -7809,13 +7735,13 @@ Please choose a different file name.
-
+ Без звука
-
+ Громкость: %1%
--
cgit v0.12
From d12ec7f58ac16dea055d02b0b64db7cfe2e16aa8 Mon Sep 17 00:00:00 2001
From: Ritt Konstantin
Date: Wed, 17 Jun 2009 14:52:02 +0200
Subject: Update Russian phrase book.
Several uncorrect phrases was re-translated.
Added new common used phrases.
Merge-request: 689
Reviewed-by: Oswald Buddenhagen
---
tools/linguist/phrasebooks/russian.qph | 127 +++++++++++++++++++++++++++------
1 file changed, 104 insertions(+), 23 deletions(-)
diff --git a/tools/linguist/phrasebooks/russian.qph b/tools/linguist/phrasebooks/russian.qph
index 0b06cea..629c60b 100644
--- a/tools/linguist/phrasebooks/russian.qph
+++ b/tools/linguist/phrasebooks/russian.qph
@@ -1,4 +1,5 @@
-
+
+
О программе
@@ -68,10 +69,6 @@
авто-прокрутка
-
- Назад
-
-
окно редактирования
@@ -117,11 +114,11 @@
- кнопка закрытия
+ Кнопка закрытия
- крах
+ свернуть
@@ -257,7 +254,7 @@
- расширять
+ развернуть
@@ -285,15 +282,15 @@
- Продолжить поиск
+ Найти далее
- Поиск
+ Искать
- каталог
+ папка
@@ -385,7 +382,7 @@
- альбом
+ альбомная
@@ -513,7 +510,7 @@
- OK
+ Готово
@@ -525,7 +522,7 @@
- внедренный OLE-объект
+ внедрённый OLE-объект
@@ -533,7 +530,7 @@
- предопределенный OLE-механизм
+ предопределённый OLE-механизм
@@ -557,7 +554,7 @@
- шаг установки
+ Параметры страницы
@@ -625,11 +622,11 @@
- портрет
+ книжная
- нажимать
+ нажать
@@ -757,7 +754,7 @@
- подчиненное окно
+ подчинённое окно
@@ -765,7 +762,7 @@
- Выделить все
+ Выделить всё
@@ -861,11 +858,11 @@
- статусная строка
+ строка состояния
- Стоп
+ Остановить
@@ -897,7 +894,7 @@
- кнопка-выключатель
+ кнопка-переключатель
@@ -979,4 +976,88 @@
Да
+
+
+ Нет
+
+
+
+ Параметры
+
+
+
+ каталог
+
+
+
+ Завершить
+
+
+
+ Продолжить
+
+
+
+ расширенный
+
+
+
+ компоновка
+
+
+
+ компоновщик
+
+
+
+ модуль
+
+
+
+ сценарий
+
+
+
+ разделитель
+
+
+
+ панель вкладок
+
+
+
+ символ пробела
+
+
+
+ Вперёд
+
+
+
+ Назад
+
+
+
+ Поиск с начала
+
+
+
+ Выбрать
+
+
+
+ Закрыть
+
+
+
+ С учётом регистра
+
+
+
+ Регистрозависимо
+
+
+
+ Слова полностью
+
--
cgit v0.12
From 65f0a022ab50e6f50f297f8be577b6f334692357 Mon Sep 17 00:00:00 2001
From: Ritt Konstantin
Date: Wed, 17 Jun 2009 14:52:03 +0200
Subject: Add Russian translation for Qt Linguist.
Merge-request: 689
Reviewed-by: Oswald Buddenhagen
---
tools/linguist/linguist/linguist.pro | 1 +
translations/linguist_ru.ts | 2002 ++++++++++++++++++++++++++++++++++
2 files changed, 2003 insertions(+)
create mode 100644 translations/linguist_ru.ts
diff --git a/tools/linguist/linguist/linguist.pro b/tools/linguist/linguist/linguist.pro
index 968293a..9f16ced 100644
--- a/tools/linguist/linguist/linguist.pro
+++ b/tools/linguist/linguist/linguist.pro
@@ -99,6 +99,7 @@ RESOURCES += linguist.qrc
TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/linguist_ja.ts \
$$[QT_INSTALL_TRANSLATIONS]/linguist_pl.ts \
+ $$[QT_INSTALL_TRANSLATIONS]/linguist_ru.ts \
$$[QT_INSTALL_TRANSLATIONS]/linguist_untranslated.ts \
$$[QT_INSTALL_TRANSLATIONS]/linguist_zh_CN.ts \
$$[QT_INSTALL_TRANSLATIONS]/linguist_zh_TW.ts \
diff --git a/translations/linguist_ru.ts b/translations/linguist_ru.ts
new file mode 100644
index 0000000..058d86a
--- /dev/null
+++ b/translations/linguist_ru.ts
@@ -0,0 +1,2002 @@
+
+
+
+
+
+
+
+
+ (Новая запись)
+
+
+
+ AboutDialog
+
+
+
+ Qt Linguist
+
+
+
+ BatchTranslationDialog
+
+
+
+ Qt Linguist - Пакетный перевод
+
+
+
+
+ Параметры
+
+
+
+
+ Помечать переведенные записи как завершённые
+
+
+
+
+ Переводить записи, уже имеющие перевод
+
+
+
+
+ Имейте в виду, что изменённые записи будут отмечены как незавершённые, если не включен параметр "Помечать переведенные записи как завершённые".
+
+
+
+
+ Также переводить записи с завершёнными переводами
+
+
+
+
+ Предпочитаемые разговорники
+
+
+
+
+ Поднять
+
+
+
+
+ Опустить
+
+
+
+
+ Пакетный переводчик будет искать в выбранных разговорниках в указанном выше порядке.
+
+
+
+
+ &Выполнить
+
+
+
+
+ Отмена
+
+
+
+
+ Пакетный перевод '%1' - Qt Linguist
+
+
+
+
+ Идёт поиск, ждите...
+
+
+
+
+ &Отмена
+
+
+
+
+ Пакетный переводчик Qt Linguist
+
+
+
+
+
+ Автоматически переведена %n запись
+ Автоматически переведены %n записи
+ Автоматически переведено %n записей
+
+
+
+
+ DataModel
+
+
+
+ <qt>В '%1' обнаружены повторяющиеся сообщения:
+
+
+
+
+ <p>[остальные повторы не указаны]
+
+
+
+
+ <p>* Контекст: %1<br>* Источник: %2
+
+
+
+
+ <br>* Комментарий: %3
+
+
+
+
+ Qt Linguist не знает правила множественных форм для '%1'.
+Будет использована универсальная единичная форма.
+
+
+
+
+ Не удалось создать '%2': %1
+
+
+
+
+ Универсальная форма
+
+
+
+ ErrorsView
+
+
+
+ Возможно, лишний акселератор в переводе.
+
+
+
+
+ Возможно, пропущен акселератор в переводе.
+
+
+
+
+ Перевод не заканчивается тем же знаком препинания, что и исходный текст.
+
+
+
+
+ Предложение разговорника для '%1' пропущено.
+
+
+
+
+ Перевод не содержит тех же маркеров форматирования, что и исходный текст.
+
+
+
+
+ Перевод не содержит необходимого маркера форматирования %n.
+
+
+
+
+ Неизвестная ошибка
+
+
+
+ FindDialog
+
+
+
+ Choose Edit|Find from the menu bar or press Ctrl+F to pop up the Find dialog
+
+
+
+
+
+ Поиск
+
+
+
+
+ Данное окно позволяет искать текст в файле перевода.
+
+
+
+
+ &Искать:
+
+
+
+
+ Введите искомый текст.
+
+
+
+
+ Параметры
+
+
+
+
+ Если отмечено, поиск будет вестись в исходных текстах.
+
+
+
+
+ &Исходные тексты
+
+
+
+
+ Если отмечено, поиск будет вестись в переведённых текстах.
+
+
+
+
+ &Переводы
+
+
+
+
+ Если отмечено, строки "ПрИмЕр" и "пример" будет считаться разными.
+
+
+
+
+ С учётом &регистра
+
+
+
+
+ Если отмечено, поиск будет вестись по контекстам и комментариям.
+
+
+
+
+ &Комментарии
+
+
+
+
+ Пропускать &акселераторы
+
+
+
+
+ Найти следующее совпадение для введённого текста.
+
+
+
+
+ Найти далее
+
+
+
+
+ Закрыть окно.
+
+
+
+
+ Отмена
+
+
+
+ LRelease
+
+
+
+
+ Создан %n перевод (%1 завершённых и %2 незавершённых)
+
+ Создано %n перевода (%1 завершённых и %2 незавершённых)
+
+ Создано %n переводов (%1 завершённых и %2 незавершённых)
+
+
+
+
+
+
+
+ Пропущен %n непереведённый исходный текст
+
+ Пропущено %n непереведённых исходных текста
+
+ Пропущено %n непереведённых исходных текстов
+
+
+
+
+
+ MainWindow
+
+
+
+ This is the application's main window.
+ Основное окно программы.
+
+
+
+
+
+ Исходный текст
+
+
+
+
+
+ Индекс
+
+
+
+
+
+ Контекст
+
+
+
+
+ Записи
+
+
+
+
+ В данной панели перечислены исходные контексты.
+
+
+
+
+ Строки
+
+
+
+
+ Фразы и похожие переводы
+
+
+
+
+ Исходники и формы
+
+
+
+
+ Предупреждения
+
+
+
+
+ status bar: file(s) modified
+ ИЗМ
+
+
+
+
+ Загрузка...
+
+
+
+
+
+ Загрузка файла - Qt Linguist
+
+
+
+
+ Файл '%1', похоже, не связан с открытым файлом(ами) '%2'.
+
+Закрыть открытые файлы?
+
+
+
+
+ Файл '%1', похоже, не связан с загруженным файлом '%2'.
+
+Пропустить загрузку файла?
+
+
+
+
+
+ Загружена %n запись.
+ Загружено %n записи.
+ Загружено %n записей.
+
+
+
+
+
+ Связанные файлы (%1);;
+
+
+
+
+ Открыть файлы перевода
+
+
+
+
+
+ Файл сохранён.
+
+
+
+
+
+
+ Компиляция
+
+
+
+
+ Скомпилированные файлы перевода для приложений Qt (*.qm)
+Все файлы (*)
+
+
+
+
+
+ Файл создан.
+
+
+
+
+
+ Печать...
+
+
+
+
+ Контекст: %1
+
+
+
+
+ завершён
+
+
+
+
+ неразрешённый
+
+
+
+
+ устаревший
+
+
+
+
+
+ Печать... (страница %1)
+
+
+
+
+
+ Печать завершена
+
+
+
+
+
+ Печать прервана
+
+
+
+
+ Поиск с начала.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Qt Linguist
+
+
+
+
+
+ Не удалось найти строку '%1'.
+
+
+
+
+ Поиск и перевод '%1' - Qt Linguist
+
+
+
+
+
+
+ Перевод - Qt Linguist
+
+
+
+
+
+ Переведена %n запись
+ Переведено %n записи
+ Переведено %n записей
+
+
+
+
+
+ Нет больше совпадений с '%1'. Начать заново?
+
+
+
+
+ Создать разговорник
+
+
+
+
+ Разговорники Qt (*.qph)
+Все файлы (*)
+
+
+
+
+ Разговорник создан.
+
+
+
+
+ Открыть разговорник
+
+
+
+
+ Разговорники Qt (*.qph);;Все файлы (*)
+
+
+
+
+
+ Загружена %n фраза.
+ Загружено %n фразы.
+ Загружено %n фраз.
+
+
+
+
+
+
+
+ Добавить в разговорник
+
+
+
+
+ Подходящий разговорник не найден.
+
+
+
+
+ Добавление записи в разговорник %1
+
+
+
+
+ Выберите разговорник, в который желаете добавить фразу
+
+
+
+
+ Не удалось запустить Qt Assistant (%1)
+
+
+
+
+ Версия %1
+
+
+
+
+ <center><img src=":/images/splash.png"/></img><p>%1</p></center><p>Qt Linguist - инструмент для добавления переводов в приложения на основе Qt.</p><p>%2</p><p>Copyright (C) 2009 Корпорация Nokia и/или её дочерние подразделения.</p><p>Программа предоставляется "как есть" без гарантий любого рода, включая гарантии дизайна, коммерческой ценности и пригодности для определённой цели.</p>
+
+
+
+
+ Желаете сохранить изменённые файлы?
+
+
+
+
+ Желаете сохранить '%1'?
+
+
+
+
+ Qt Linguist[*]
+
+
+
+
+ %1[*] - Qt Linguist
+
+
+
+
+
+ Непереведённых записей не осталось.
+
+
+
+
+ &Окно
+
+
+
+
+ Свернуть
+
+
+
+
+
+
+
+
+
+ Показать руководство для %1.
+
+
+
+
+ Показать информацию о %1.
+
+
+
+
+ &Сохранить'%1'
+
+
+
+
+ Сохранить'%1' &как...
+
+
+
+
+ Скомпилировать '%1'
+
+
+
+
+ Скомпилировать '%1' как...
+
+
+
+
+ &Закрыть '%1'
+
+
+
+
+
+ &Сохранить
+
+
+
+
+
+
+ Сохранить &как...
+
+
+
+
+
+
+
+ Скомпилировать как...
+
+
+
+
+
+ &Закрыть
+
+
+
+
+ Сохранить все
+
+
+
+
+
+ С&компилировать все
+
+
+
+
+ Закрыть все
+
+
+
+
+ С&компилировать
+
+
+
+
+ &Параметры файла перевода для '%1'...
+
+
+
+
+ Пак&етный перевод '%1'...
+
+
+
+
+ &Найти и перевести в '%1'...
+
+
+
+
+
+ &Параметры файла перевода...
+
+
+
+
+
+ Пак&етный перевод...
+
+
+
+
+ &Найти и перевести...
+
+
+
+
+
+ Файл
+
+
+
+
+
+ Правка
+
+
+
+
+
+ Перевод
+
+
+
+
+
+ Проверка
+
+
+
+
+
+ Справка
+
+
+
+
+ Не удалось прочитать из разговорника '%1'.
+
+
+
+
+ Закрыть разговорник.
+
+
+
+
+ Позволяет добавлять, изменять и удалять записи в разговорнике.
+
+
+
+
+ Печать записей фраз разговорника.
+
+
+
+
+ Не удалось создать разговорник '%1'.
+
+
+
+
+ Желаете сохранить разговорник '%1'?
+
+
+
+
+ Все
+
+
+
+
+ Главное окно
+
+
+
+
+ Фра&зы
+
+
+
+
+ &Закрыть разговорник
+
+
+
+
+ &Редактироваь разговорник
+
+
+
+
+ &Печатать разговорник
+
+
+
+
+ П&роверка
+
+
+
+
+ &Вид
+
+
+
+
+ Вид&ы
+
+
+
+
+ Пан&ели инструментов
+
+
+
+
+ &Справка
+
+
+
+
+ П&еревод
+
+
+
+
+ &Файл
+
+
+
+
+ Недавно открытые &файлы
+
+
+
+
+ &Правка
+
+
+
+
+ &Открыть...
+
+
+
+
+ Открыть исходный файл переводов Qt (файл TS) для изменения
+
+
+
+
+
+
+
+
+
+ В&ыход
+
+
+
+
+ Закрыть окно и выйти.
+
+
+
+
+
+
+
+
+
+ Сохранить
+
+
+
+
+ Сохранить изменения в данном исходном файле перевода Qt
+
+
+
+
+ Сохранить как...
+
+
+
+
+ Сохранить изменения в данном исходном файле перевода Qt в новый файл.
+
+
+
+
+ Скомпилировать файл перевода Qt из текущего файла.
+
+
+
+
+ &Печать...
+
+
+
+
+ Печать списка всех записей перевода из текущего файла.
+
+
+
+
+
+
+
+
+
+ &Отменить
+
+
+
+
+ Отменить последнее изменение текущего перевода.
+
+
+
+
+
+
+
+
+
+ &Повторить
+
+
+
+
+ Повторить отменённую правку перевода.
+
+
+
+
+
+
+
+
+
+ Выр&езать
+
+
+
+
+ Скопировать отмеченный текст в буфер обмена и удалить его из оригинала.
+
+
+
+
+
+
+
+
+
+ &Копировать
+
+
+
+
+ Скопировать отмеченный текст в буфер обмена.
+
+
+
+
+
+
+
+
+
+ &Вставить
+
+
+
+
+ Вставить текст из буфера обмена в перевод.
+
+
+
+
+
+
+
+
+
+ В&ыделить всё
+
+
+
+
+ Выделить весь текст перевода.
+
+
+
+
+
+
+
+
+
+ &Найти...
+
+
+
+
+ Найти текст в исходном файле перевода.
+
+
+
+
+
+
+
+
+
+ Найти д&алее
+
+
+
+
+ Продолжить поиск с места, где он был остановлен.
+
+
+
+
+
+
+
+
+
+ &Пред. незавершённый
+
+
+
+
+ Предыдущий незавершённый перевод.
+
+
+
+
+ Перейти к предыдущему незавершённому переводу.
+
+
+
+
+
+
+
+
+
+ &След. незавершённый
+
+
+
+
+ Следующий незавершённый перевод.
+
+
+
+
+ Перейти к следующему незавершённому переводу.
+
+
+
+
+
+
+
+
+
+ Пр&едыдущий
+
+
+
+
+ Предыдущий перевод.
+
+
+
+
+ Перейти к предыдущему переводу.
+
+
+
+
+
+
+
+
+
+ С&ледующий
+
+
+
+
+ Следующий перевод.
+
+
+
+
+ Перейти к следующему переводу.
+
+
+
+
+
+
+
+
+
+ &Готово и далее
+
+
+
+
+ Пометить перевод как завершённый и перейти к следующему незавершённому.
+
+
+
+
+ Пометить перевод как завершённый и перейти к следующему незавершённому.
+
+
+
+
+
+ Скопировать из исходного текста
+
+
+
+
+
+ Скопировать исходный текст в поле перевода.
+
+
+
+
+
+
+
+
+
+ &Акселераторы
+
+
+
+
+ Переключение проверки акселераторов.
+
+
+
+
+ Переключение проверки акселераторов, т.е. совпадает ли количество амперсандов в исходном и переведённом текстах. Если выявлено несовпадение, будет показано сообщение в окне предупреждений.
+
+
+
+
+ &Знаки препинания
+
+
+
+
+ Переключение проверки знаков препинания в конце текста.
+
+
+
+
+ Переключение проверки знаков препинания в конце текста. Если выявлено несовпадение, будет показано сообщение в окне предупреждений.
+
+
+
+
+ Совпадение &фраз
+
+
+
+
+ Переключение проверки использования предложений для фраз. Если выявлено несовпадение, будет показано сообщение в окне предупреждений.
+
+
+
+
+ Переключение проверки использования предложений для фраз. Если выявлено несовпадение, будет показано сообщение в окне предупреждений.
+
+
+
+
+ Совпадение &маркеров
+
+
+
+
+ Переключение проверки маркеров форматирования.
+
+
+
+
+ Переключение проверки маркеров форматирования, т.е. все ли маркеры (%1, %2, ...) исходного текста присутствуют в переведённом. Если выявлено несовпадение, будет показано сообщение в окне предупреждений.
+
+
+
+
+ &Новый разговорник...
+
+
+
+
+ Создать разговорник.
+
+
+
+
+
+
+
+
+
+ &Открыть разговорник...
+
+
+
+
+ Открыть разговорник для помощи в переводе.
+
+
+
+
+
+
+
+
+
+ &Сброс сортировки
+
+
+
+
+ Упорядочить элементы в той последовательности, в которой они находятся в файле.
+
+
+
+
+ &Предлагать похожие
+
+
+
+
+ Определяет необходимо или нет отображать похожие переводы.
+
+
+
+
+ &Статистика
+
+
+
+
+ Показать статистику перевода.
+
+
+
+
+ &Руководство
+
+
+
+
+
+
+
+
+
+ О Qt Linguist
+
+
+
+
+ О Qt
+
+
+
+
+ Показать информацию об инструментарии Qt от Nokia.
+
+
+
+
+ &Что это?
+
+
+
+
+
+ Что это?
+
+
+
+
+ Переход в режим "Что это?".
+
+
+
+
+
+
+
+
+
+ &Найти и перевести...
+
+
+
+
+ Заменить перевод всех записей, которые совпадают с искомым исходным текстом.
+
+
+
+
+ Перевести все записи в пакетном режиме, используя информацию из разговорника.
+
+
+
+
+ Создание готового файла перевода Qt из текущего файла. Имя файла будет автоматически определено из имени .ts файла.
+
+
+
+
+ Открыть/обновить предпрос&мотр формы
+
+
+
+
+
+ Инструмент предпросмотра форм
+
+
+
+
+
+
+
+
+
+ &Добавить в разговорник
+
+
+
+
+
+
+
+
+
+ Открыть только для &чтения...
+
+
+
+
+ &Сохранить все
+
+
+
+
+
+
+
+
+
+ Закрыть
+
+
+
+
+ &Закрыть все
+
+
+
+
+
+
+
+
+ MessageEditor
+
+
+
+ This is the right panel of the main window.
+ Правая панель основного окна
+
+
+
+
+
+ Немецкий
+
+
+
+
+ Японский
+
+
+
+
+ Французский
+
+
+
+
+ Польский
+
+
+
+
+ Китайский
+
+
+
+
+ Данная панель позволяет просматривать и редактировать перевод исходного текста.
+
+
+
+
+ Исходный текст
+
+
+
+
+ В данной области отображается исходный текст.
+
+
+
+
+ Исходный текст (множественная форма)
+
+
+
+
+ В данной области отображается исходный текст во множественной форме.
+
+
+
+
+ Комментарии разработчика
+
+
+
+
+ В данной области отображается комментарий, который поможет определить в каком контексте встречается переводимый текст.
+
+
+
+
+ Здесь вы можете оставить комментарий для собственного использования. Комментарии не влияют на перевод приложений.
+
+
+
+
+ %1 перевод (%2)
+
+
+
+
+ Здесь вы можете ввести или изменить перевод текста, представленного выше.
+
+
+
+
+ %1 перевод
+
+
+
+
+ Комментарий переводчика на %1
+
+
+
+
+ '%1'
+Строка: %2
+
+
+
+ MessageModel
+
+
+
+ Состояние завершённости для %1
+
+
+
+
+ <заголовок файла>
+
+
+
+
+ <контекстный комментарий>
+
+
+
+
+ <безымянный контекст>
+
+
+
+ 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
+
+
+
+
+ Не удалось сохранить разговорник '%1'.
+
+
+
+
+ Правка разговорника
+
+
+
+
+ Данное окно позволяет добавлять, изменять и удалять записи в разговорнике.
+
+
+
+
+ &Перевод:
+
+
+
+
+ Перевод, соответствующий исходной фразе.
+
+
+
+
+ &Исходная фраза:
+
+
+
+
+ Определение исходной фразы.
+
+
+
+
+ Фраза на исходном языке.
+
+
+
+
+ &Определение:
+
+
+
+
+ Добавить фразу в разговорник.
+
+
+
+
+ Новая &запись
+
+
+
+
+ Удалить фразу из разговорника.
+
+
+
+
+ &Удалить
+
+
+
+
+ &Настройки...
+
+
+
+
+ Сохранить изменения.
+
+
+
+
+ &Сохранить
+
+
+
+
+ Закрыть окно.
+
+
+
+
+ Закрыть
+
+
+
+ PhraseModel
+
+
+
+ Исходная фраза
+
+
+
+
+ Перевод
+
+
+
+
+ Определение
+
+
+
+ PhraseView
+
+
+
+ Вставить
+
+
+
+
+ Правка
+
+
+
+
+ Похожая (%1)
+
+
+
+
+ Похожая
+
+
+
+ QObject
+
+
+
+ Файлы перевода (%1);;
+
+
+
+
+ Все файлы (*)
+
+
+
+
+
+
+
+
+
+
+ Qt Linguist
+
+
+
+
+ Файлы локализации GNU Gettext
+
+
+
+
+ Скомпилированные переводы Qt
+
+
+
+
+ 'Разговорник' Qt Linguist
+
+
+
+
+ Исходные файлы перевода Qt (формат 1.1)
+
+
+
+
+ Исходные файлы перевода Qt (формат 2.0)
+
+
+
+
+ Исходные файлы перевода Qt (последний формат)
+
+
+
+
+ Файлы локализации XLIFF
+
+
+
+
+ Исходные коды C++
+
+
+
+
+ Исходные коды Java
+
+
+
+
+ Исходные коды Qt Script
+
+
+
+
+ Формы Qt Designer
+
+
+
+
+ Формы Qt Jambi
+
+
+
+ SourceCodeView
+
+
+
+ <i>Исходный код недоступен</i>
+
+
+
+
+ <i>Файл %1 недоступен</i>
+
+
+
+
+ <i>Невозможно прочитать файл %1</i>
+
+
+
+ Statistics
+
+
+
+ Статистика
+
+
+
+
+ Закрыть
+
+
+
+
+ Перевод
+
+
+
+
+ Источник
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ Слов:
+
+
+
+
+ Символов:
+
+
+
+
+ Символов (с пробелами):
+
+
+
+ TranslateDialog
+
+
+
+ Данное окно позволяет искать текст в файле перевода.
+
+
+
+
+
+ Введите искомый текст.
+
+
+
+
+ &Найти текст:
+
+
+
+
+ &Перевести как:
+
+
+
+
+ Параметры поиска
+
+
+
+
+ Если отмечено, строки "ПрИмЕр" и "пример" будет считаться разными.
+
+
+
+
+ С учётом &регистра
+
+
+
+
+ Помечать перевод как завер&шённый
+
+
+
+
+ Найти следующее совпадение для введённого текста.
+
+
+
+
+ Найти далее
+
+
+
+
+ Перевести
+
+
+
+
+ Перевести все
+
+
+
+
+ Закрыть окно.
+
+
+
+
+ Отмена
+
+
+
+ TranslationSettingsDialog
+
+
+
+ Исходный язык
+
+
+
+
+
+ Язык
+
+
+
+
+
+ Страна/Регион
+
+
+
+
+ Язык перевода
+
+
+
+
+ Любая страна
+
+
+
+
+
+ Настройки для '%1' - Qt Linguist
+
+
+
--
cgit v0.12
From bae2a5c42d97e783b0624355505d3109ba91753d Mon Sep 17 00:00:00 2001
From: Ritt Konstantin
Date: Wed, 17 Jun 2009 14:52:04 +0200
Subject: Add Russian translation for QtHelp.
Merge-request: 689
Reviewed-by: Oswald Buddenhagen
---
tools/assistant/translations/qt_help.pro | 1 +
translations/qt_help_ru.ts | 361 +++++++++++++++++++++++++++++++
2 files changed, 362 insertions(+)
create mode 100644 translations/qt_help_ru.ts
diff --git a/tools/assistant/translations/qt_help.pro b/tools/assistant/translations/qt_help.pro
index e6208a6..9f4d7d8 100644
--- a/tools/assistant/translations/qt_help.pro
+++ b/tools/assistant/translations/qt_help.pro
@@ -42,6 +42,7 @@ HEADERS += ../lib/qhelpcollectionhandler_p.h \
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_ru.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_untranslated.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_CN.ts \
$$[QT_INSTALL_TRANSLATIONS]/qt_help_zh_TW.ts \
diff --git a/translations/qt_help_ru.ts b/translations/qt_help_ru.ts
new file mode 100644
index 0000000..16748fb
--- /dev/null
+++ b/translations/qt_help_ru.ts
@@ -0,0 +1,361 @@
+
+
+
+
+ QCLuceneResultWidget
+
+
+
+ Результаты поиска
+
+
+
+
+ Замечание:
+
+
+
+
+ Могли быть показаны не все результаты, так как документация ещё индексируется!
+
+
+
+
+ По вашему запросу не найдено ни одного документа.
+
+
+
+
+ (Причиной этого может быть то, что документация ещё индексируется.)
+
+
+
+ QHelpCollectionHandler
+
+
+
+ Файл набора ещё не установлен!
+
+
+
+
+ Не удалось загрузить драйвер базы данных sqlite!
+
+
+
+
+
+ Не удалось открыть файл набора: %1
+
+
+
+
+ Не удалось создать таблицы в файле %1!
+
+
+
+
+ Указанный файла набора уже существует!
+
+
+
+
+ Не удалось создать каталог: %1
+
+
+
+
+ Не удалось скопировать файл набора: %1
+
+
+
+
+ Неизвестный фильтр!
+
+
+
+
+ Не удалось зарегистрировать фильтр %1!
+
+
+
+
+ Не удалось открыть файл документации %1!
+
+
+
+
+ Некорректный файл документации!
+
+
+
+
+ Пространство имён %1 не зарегистрировано!
+
+
+
+
+ Пространство имён %1 уже существует!
+
+
+
+
+ Не удалось зарегистрировать пространство имён!
+
+
+
+
+ Не удалось открыть базу данных для оптимизации!
+
+
+
+ QHelpDBReader
+
+
+
+ The placeholders are: %1 - The name of the database which cannot be opened %2 - The unique id for the connection %3 - The actual error string
+ Не удалось открыть базу данных '%1' '%2': %3
+
+
+
+ QHelpEngineCore
+
+
+
+ Указанное пространство имён не существует!
+
+
+
+ QHelpEngineCorePrivate
+
+
+
+ Не удалось открыть файл документации %1: %2!
+
+
+
+ QHelpGenerator
+
+
+
+ Некорректные данные справки!
+
+
+
+
+ Не указано имя результирующего файла!
+
+
+
+
+ Создание структуры файла...
+
+
+
+
+ Невозможно перезаписать файл %1!
+
+
+
+
+ Не удалось открыть файл базы данных %1!
+
+
+
+
+ Не удалось зарегистрировать пространство имён %1!
+
+
+
+
+ Вставка индивидуальных фильтров...
+
+
+
+
+ Вставка данных справки для секции фильтра (%1 из %2)...
+
+
+
+
+ Документация успешно создана.
+
+
+
+
+ Некоторые таблицы уже существуют!
+
+
+
+
+ Не удалось создать таблицы!
+
+
+
+
+ Не удалось зарегистрировать виртуальный каталог!
+
+
+
+
+ Вставка файлов...
+
+
+
+
+ Файл %1 должен быть в каталоге '%2' или в его подкаталоге. Пропускаем.
+
+
+
+
+ Файл %1 не существует! Пропускаем.
+
+
+
+
+ Не удалось открыть файл %1! Пропускаем.
+
+
+
+
+ Фильтр %1 уже зарегистрирован!
+
+
+
+
+ Не удалось зарегистрировать фильтр %1!
+
+
+
+
+ Вставка указателей...
+
+
+
+
+ Вставка оглавления...
+
+
+
+
+ Не удаётся вставить оглавление!
+
+
+
+
+ Не удаётся зарегистрировать оглавление!
+
+
+
+ QHelpSearchQueryWidget
+
+
+
+ Искать:
+
+
+
+
+ Поиск
+
+
+
+
+ Расширенный поиск
+
+
+
+
+ <B>похожие</B> слова:
+
+
+
+
+ <B>не содержит</B> слова:
+
+
+
+
+ содержит <B>фразу полностью</B>:
+
+
+
+
+ содержит <B>все</B> слова:
+
+
+
+
+ содержит <B> минимум одно</B> из слов:
+
+
+
+ QHelpSearchResultWidget
+
+
+
+ 0 - 0 из 0 соответствий
+
+
+
+ QHelpSearchResultWidgetPrivate
+
+
+
+ %1 - %2 из %3 соответствий
+
+
+
+ QObject
+
+
+
+ Безымянный
+
+
+
+
+ Неизвестный токен.
+
+
+
+
+ Неизвестный токен. Ожидается "QtHelpProject"!
+
+
+
+
+ Ошибка в строке %1: %2
+
+
+
+
+ Виртуальный каталог не должен содержать символ '/'!
+
+
+
+
+ Пространство имён не должно содержать символ '/'!
+
+
+
+
+ Отсутствует пространство имён в QtHelpProject.
+
+
+
+
+ Отсутствует виртуальный каталог в QtHelpProject
+
+
+
+
+ Отсутствует атрибут у ключевого слова в строке %1.
+
+
+
+
+ Невозможно открыть исходный файл %1!
+
+
+
--
cgit v0.12
From 688454f4fa508e5262786070a149f604156d5197 Mon Sep 17 00:00:00 2001
From: Ritt Konstantin
Date: Wed, 17 Jun 2009 14:52:04 +0200
Subject: Add Russian translation for Qt Assistant.
Merge-request: 689
Reviewed-by: Oswald Buddenhagen
---
tools/assistant/translations/translations.pro | 1 +
tools/assistant/translations/translations_adp.pro | 1 +
translations/assistant_adp_ru.ts | 780 +++++++++++++++
translations/assistant_ru.ts | 1063 +++++++++++++++++++++
4 files changed, 1845 insertions(+)
create mode 100644 translations/assistant_adp_ru.ts
create mode 100644 translations/assistant_ru.ts
diff --git a/tools/assistant/translations/translations.pro b/tools/assistant/translations/translations.pro
index 8572123..4b836e6 100644
--- a/tools/assistant/translations/translations.pro
+++ b/tools/assistant/translations/translations.pro
@@ -43,6 +43,7 @@ HEADERS += ../tools/assistant/aboutdialog.h \
TRANSLATIONS=$$[QT_INSTALL_TRANSLATIONS]/assistant_de.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_ja.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_pl.ts \
+ $$[QT_INSTALL_TRANSLATIONS]/assistant_ru.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_untranslated.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 e3edca4..c6f3e81 100644
--- a/tools/assistant/translations/translations_adp.pro
+++ b/tools/assistant/translations/translations_adp.pro
@@ -34,6 +34,7 @@ HEADERS += ../compat/helpwindow.h \
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_ru.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_untranslated.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_zh_CN.ts \
$$[QT_INSTALL_TRANSLATIONS]/assistant_adp_zh_TW.ts
diff --git a/translations/assistant_adp_ru.ts b/translations/assistant_adp_ru.ts
new file mode 100644
index 0000000..a587a91
--- /dev/null
+++ b/translations/assistant_adp_ru.ts
@@ -0,0 +1,780 @@
+
+
+
+
+ AssistantServer
+
+
+ Не удалось открыть порт %1
+
+
+
+ Qt Assistant
+
+
+
+ FontPanel
+
+
+ Се&мейство
+
+
+
+ &Стиль
+
+
+
+ Шрифт
+
+
+
+ Система &письма
+
+
+
+ &Размер в пикселях
+
+
+
+ FontSettingsDialog
+
+
+ Приложение
+
+
+
+ Обозреватель
+
+
+
+ Настройки шрифта для:
+
+
+
+ Использование индивидуальных настроек
+
+
+
+ Настройки шрифта
+
+
+
+ HelpDialog
+
+
+ &Указатель
+
+
+
+ &Искать:
+
+
+
+ &Создать
+
+
+
+ &Поиск
+
+
+
+ <b>Ввод слова.</b><p>В список попадет то, что лучше соответствует введенной строке.</p>
+
+
+
+ <b>Ввод одного или более слов для поиска.</b><p>Сюда следует ввести одно или несколько слов, которые требуется найти. Слова могут содержкать символы-заменители (*). Если требуется найти словосочетание, то его нужно заключить в кавычки.</p>
+
+
+
+ <b>Найденные документы</b><p>В этом списке представлены все найденные при последнем поиске документы. Документы упорядочены по релевантности, т.е. чем выше, тем чаще в нём встречаются указанные слова.</p>
+
+
+
+ <b>Статьи справки распределённые по разделам.</b><p>Дважды кликните по одному из пунктов, чтобы увидеть какие статьи содержатся в данном разделе. Для открытия статьи просто дважды щелкните на ней.</p>
+
+
+
+ <b>Справка</b><p>Выберите необходимую статью справки из списка разделов или воспользуйтесь поиском по предметному указателю.</p>
+
+
+
+ <b>Список доступных статей справки.</b><p>Дважды щёлкните на пункте для открытия страницы помощи. Если найдено более одной, то потребуется выбрать желаемую страницу.</p>
+
+
+
+ Добавить новую закладку
+
+
+
+ Добавление текущей открытой страницы в закладки.
+
+
+
+ Не удаётся открыть файл индекса %1
+
+
+
+ Содер&жание
+
+
+
+ Удалить закладку
+
+
+
+ Удаление выбранной закладки.
+
+
+
+ Открытие справки по полнотекстовому поиску.
+
+
+
+ Открыть страницу справки.
+
+
+
+ Здесь отображается список тем, распределенных по разделам, указатель или закладки. Последняя вкладка содержит полнотекстовый поиск.
+
+
+
+ Отображает список закладок.
+
+
+
+ Файл документации %1 не существует!
+Пропущен.
+
+
+
+ Файл документации %1 не совместим!
+Пропущен.
+
+
+
+ Готово
+
+
+
+ Введите ключевое слово
+
+
+
+ Введите одно или более слов для поиска.
+
+
+
+ Не удалось загрузить файл индекса ключевых слов
+Assistant не будет работать!
+
+
+
+ Не удалось сохранить индекс полнотекстового поиска
+Assistant не будет работать!
+
+
+
+ Найденные &документы:
+
+
+
+ Полнотекстовый поиск
+
+
+
+ &Справка
+
+
+
+ Справка
+
+
+
+ Индексирование файлов...
+
+
+
+ Открыть ссылку в новой вкладке
+
+
+
+ Открыть ссылку в новом окне
+
+
+
+ Ошибка обработки
+
+
+
+ Подготовка...
+
+
+
+ Подготовка...
+
+
+
+ Нажатие на эту кнопку запустит процесс поиска.
+
+
+
+ Qt Assistant
+
+
+
+ Чтение каталога...
+
+
+
+ &Искать:
+
+
+
+ Начать поиск.
+
+
+
+ Пропущена закрывающая кавычка.
+
+
+
+ Использование символов-заменителей внутри фраз не допустимо.
+
+
+
+ Предупреждение
+
+
+
+ столбец 1
+
+
+
+ Открыть ссылку в текущей вкладке
+
+
+
+
+ Найден %n документ.
+ Найдено %n документа.
+ Найдено %n документов.
+
+
+
+
+ &Закладки
+
+
+
+ &Удалить
+
+
+
+ HelpWindow
+
+
+ <div align="center"><h1>Страница не найдена</h1><br><h3>'%1'</h3></div>
+
+
+
+ Копировать &адрес ссылки
+
+
+
+ Ошибка...
+
+
+
+ Не удалось открыть ссылку: '%1'
+
+
+
+ Справка
+
+
+
+ Закрыть
+
+
+
+ Открыть ссылку в новой вкладке
+
+
+
+ Открыть ссылку в новом окне Shift+LMB
+
+
+
+ Невозможно запустить вэб-браузер.
+
+
+
+
+ Index
+
+
+ Неозаглавлено
+
+
+
+ MainWindow
+
+
+ "Что это?" - контекстная справка.
+
+
+
+ &Добавление закладки
+
+
+
+ &Закрыть
+
+
+
+ &Копировать
+
+
+
+ &Правка
+
+
+
+ &Файл
+
+
+
+ П&оиск по тексту...
+
+
+
+ &Перейти
+
+
+
+ &Справка
+
+
+
+ &Домой
+
+
+
+ &Вперёд
+
+
+
+ &Назад
+
+
+
+ &Печать...
+
+
+
+ &Вид
+
+
+
+ &Окно
+
+
+
+ ...
+
+
+
+ О Qt
+
+
+
+ О Qt Assistant
+
+
+
+ Добавить вкладку
+
+
+
+ Добавление текущей открытой страницы в закладки.
+
+
+
+ &Закладки
+
+
+
+ Не удается открыть файл для записи!
+
+
+
+ Закрыть вкладку
+
+
+
+ Закрыть текущее окно.
+
+
+
+ Показать дополнительную информацию о Qt Assistant.
+
+
+
+ Открывает главную страницу выбранного набора документации.
+
+
+
+ Вы&ход
+
+
+
+ Не удалось получить информацию о приложении из файла: '%1'
+
+
+
+ Продолжить п&оиск
+
+
+
+ Найти &предыдущее
+
+
+
+ Настройки шрифта...
+
+
+
+ Перейти
+
+
+
+ Перейти на домашнюю страницу. Домашная страница Qt Assistant - Справочная документация по Qt.
+
+
+
+ Переход на следующую страницу.
+
+
+
+ Инициализация Qt Assistant...
+
+
+
+ Свернуть
+
+
+
+ Новое окно
+
+
+
+ Следующая вкладка
+
+
+
+ Открыть новое окно.
+
+
+
+ Открыть окно поиска. Qt Assistant произведёт поиск введённого текста на текущей открытой странице.
+
+
+
+ Предыдущая вкладка
+
+
+
+ Печать текущей открытой страницы.
+
+
+
+ Qt Assistant
+
+
+
+ Руководство по Qt Assistant
+
+
+
+ Qt Assistant от Nokia
+
+
+
+ Выйти из Qt Assistant.
+
+
+
+ Сохранить страницу
+
+
+
+ Сохранить страницу как...
+
+
+
+ Выбор страницы в оглавлении.
+
+
+
+ Боковая панель
+
+
+
+ Синхронизировать с оглавлением
+
+
+
+ Панель инструментов
+
+
+
+ Виды
+
+
+
+ Что это?
+
+
+
+ У&величить
+
+
+
+ У&меньшить
+
+
+
+ Увеличение масштаба документа, т.е. увеличение размера шрифта.
+
+
+
+ Уменьшение масштаба документа, т.е. уменьшение размера шрифта.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Скопировать выделенный текст в буфер обмена.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Переход на предыдущую страницу.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ QObject
+
+
+ Qt Assistant от Nokia
+
+
+
+ TabbedBrowser
+
+
+ ...
+
+
+
+ <img src=":/trolltech/assistant/images/wrap.png"> Поиск с начала
+
+
+
+ Добавить страницу
+
+
+
+ Регистрозависимо
+
+
+
+ Закрыть остальные вкладки
+
+
+
+ Закрыть вкладку
+
+
+
+ Закрыть страницу
+
+
+
+ Новая вкладка
+
+
+
+ Следующий
+
+
+
+ Предыдущий
+
+
+
+ Безымянный
+
+
+
+ Слова полностью
+
+
+
+
+
+
+
+ TopicChooser
+
+
+ &Закрыть
+
+
+
+ &Показать
+
+
+
+ &Статьи
+
+
+
+ Выбор статьи
+
+
+
+ Выберите статью для <b>%1</b>
+
+
+
+ Закрытие окна.
+
+
+
+ Показывает список доступных статей справки, соответствующих ключевому слову.
+
+
+
+ Открытие выбранной в списке темы.
+
+
+
+ Выберите статью из списка и нажмите на кнопку <b>Показать</b> для открытия онлайн справки.
+
+
+
diff --git a/translations/assistant_ru.ts b/translations/assistant_ru.ts
new file mode 100644
index 0000000..32aa739
--- /dev/null
+++ b/translations/assistant_ru.ts
@@ -0,0 +1,1063 @@
+
+
+
+
+ AboutDialog
+
+
+
+ &Закрыть
+
+
+
+ AboutLabel
+
+
+
+ Предупреждение
+
+
+
+
+ Невозможно запустить внешнее приложение.
+
+
+
+
+
+ Закрыть
+
+
+
+ BookmarkDialog
+
+
+
+ Добавление закладки
+
+
+
+
+ Закладка:
+
+
+
+
+ Добавить в папку:
+
+
+
+
+ +
+
+
+
+
+ Новая папка
+
+
+
+
+
+
+
+
+ Закладки
+
+
+
+
+ Удалить папку
+
+
+
+
+ Переименовать папку
+
+
+
+ BookmarkManager
+
+
+
+ Закладки
+
+
+
+
+ Удалить
+
+
+
+
+ Удаление папки приведёт к удалению её содержимого.<br>Желаете продолжить?
+
+
+
+
+
+ Новая папка
+
+
+
+ BookmarkWidget
+
+
+
+ Удалить папку
+
+
+
+
+ Переименовать папку
+
+
+
+
+ Открыть закладку
+
+
+
+
+ Открыть закладку в новой вкладке
+
+
+
+
+ Удалить закладку
+
+
+
+
+ Переименовать закладку
+
+
+
+
+ Фильтр:
+
+
+
+
+ Добавить
+
+
+
+
+ Удалить
+
+
+
+ CentralWidget
+
+
+
+ Открыть новую страницу
+
+
+
+
+ Закрыть текущую страницу
+
+
+
+
+ Печать документа
+
+
+
+
+
+ безымянная вкладка
+
+
+
+
+ Открыть новую страницу
+
+
+
+
+ Закрыть данную страницу
+
+
+
+
+ Закрыть остальные страницы
+
+
+
+
+ Добавить закладку для этой страницы...
+
+
+
+
+ Поиск
+
+
+
+ ContentWindow
+
+
+
+ Открыть ссылку
+
+
+
+
+ Открыть ссылку в новой вкладке
+
+
+
+ FilterNameDialogClass
+
+
+
+ Добавление фильтра
+
+
+
+
+ Название фильтра:
+
+
+
+ FindWidget
+
+
+
+ Предыдущее совпадение
+
+
+
+
+ Следующее совпадение
+
+
+
+
+ Регистрозависимо
+
+
+
+
+ Слова полностью
+
+
+
+
+ <img src=":/trolltech/assistant/images/wrap.png"> Поиск с начала
+
+
+
+ FontPanel
+
+
+
+ Шрифт
+
+
+
+
+ Система &письма
+
+
+
+
+ Се&мейство
+
+
+
+
+ &Стиль
+
+
+
+
+ &Размер в точках
+
+
+
+ HelpViewer
+
+
+
+ Открыть ссылку в новой вкладке
+
+
+
+
+ <title>Ошибка 404...</title><div align="center"><br><br><h1>Страница не найдена</h1><br><h3>'%1'</h3></div>
+
+
+
+
+ Справка
+
+
+
+
+ Невозможно запустить внешнее приложение.
+
+
+
+
+
+ Закрыть
+
+
+
+
+ Копировать &адрес ссылки
+
+
+
+
+ Открыть ссылку в новой вкладке Ctrl+LMB
+
+
+
+ IndexWindow
+
+
+
+ &Искать:
+
+
+
+
+ Открыть ссылку
+
+
+
+
+ Открыть ссылку в новой вкладке
+
+
+
+ InstallDialog
+
+
+
+
+ Установка документации
+
+
+
+
+ Загрузка информации о документации...
+
+
+
+
+ Загрузка отменена.
+
+
+
+
+
+
+ Готово.
+
+
+
+
+ Файл %1 уже существует. Желаете перезаписать его?
+
+
+
+
+ Невозможно сохранить файл %1: %2.
+
+
+
+
+ Загрузка %1...
+
+
+
+
+
+
+ Загрузка не удалась: %1.
+
+
+
+
+ Файл информации о документации повреждён!
+
+
+
+
+ Загрузка не удалась: загруженный файл повреждён.
+
+
+
+
+ Установка документации %1...
+
+
+
+
+ При установке документации возникла ошибка:
+%1
+
+
+
+
+ Доступная документация:
+
+
+
+
+ Установить
+
+
+
+
+ Отмена
+
+
+
+
+ Закрыть
+
+
+
+
+ Путь установки:
+
+
+
+
+ ...
+
+
+
+ MainWindow
+
+
+
+
+ Индекс
+
+
+
+
+
+ Содержание
+
+
+
+
+
+ Закладки
+
+
+
+
+
+
+ Qt Assistant
+
+
+
+
+
+ Без фильтрации
+
+
+
+
+ Поиск по документации Qt...
+
+
+
+
+ &Файл
+
+
+
+
+ Параметры &страницы...
+
+
+
+
+ Предпросмотр печати...
+
+
+
+
+ &Печать...
+
+
+
+
+ Новая &вкладка
+
+
+
+
+ &Закрыть вкладку
+
+
+
+
+ В&ыход
+
+
+
+
+
+
+
+
+
+ &Правка
+
+
+
+
+ &Копировать выделенный текст
+
+
+
+
+ П&оиск в тексте...
+
+
+
+
+ Найти &следующее
+
+
+
+
+ Найти &предыдущее
+
+
+
+
+ Настройки...
+
+
+
+
+ &Вид
+
+
+
+
+ У&величить
+
+
+
+
+ У&меньшить
+
+
+
+
+ Нормальный р&азмер
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Поиск
+
+
+
+
+
+
+
+
+
+ &Перейти
+
+
+
+
+ &Домой
+
+
+
+
+
+
+
+
+
+ &Назад
+
+
+
+
+ &Вперёд
+
+
+
+
+ Синхронизировать с содержанием
+
+
+
+
+ Следующая страница
+
+
+
+
+
+
+
+
+
+ Предыдущая страница
+
+
+
+
+
+
+
+
+
+ &Закладки
+
+
+
+
+ Добавить закладку...
+
+
+
+
+
+
+
+
+
+ &Справка
+
+
+
+
+ О программе...
+
+
+
+
+ Панель навигации
+
+
+
+
+ &Окно
+
+
+
+
+ Масштаб
+
+
+
+
+ Свернуть
+
+
+
+
+
+
+
+
+
+ Панели инструментов
+
+
+
+
+ Панель фильтров
+
+
+
+
+ Отфильтровано по:
+
+
+
+
+ Панель адреса
+
+
+
+
+ Адрес:
+
+
+
+
+ Не удалось найти элемент, связанный с содержанием.
+
+
+
+
+ О %1
+
+
+
+
+ Обновление поискового индекса
+
+
+
+ PreferencesDialog
+
+
+
+
+ Добавить документацию
+
+
+
+
+ Сжатые файлы справки Qt (*.qch)
+
+
+
+
+ Пространство имён %1 уже зарегистрировано!
+
+
+
+
+ Указанный файл не является корректным файлом справки Qt!
+
+
+
+
+ Удалить документацию
+
+
+
+
+ Некоторые открытые в Qt Assistant документы ссылаются на документацию, которую вы пытаетесь удалить. Удаление данной документации приведёт к закрытию таких документов.
+
+
+
+
+ Отмена
+
+
+
+
+ Удалить
+
+
+
+
+ Использовать индивидуальные настройки
+
+
+
+ PreferencesDialogClass
+
+
+
+ Настройки
+
+
+
+
+ Шрифты
+
+
+
+
+ Настройки шрифта:
+
+
+
+
+ Обозреватель
+
+
+
+
+ Приложение
+
+
+
+
+ Фильтры
+
+
+
+
+ Фильтр:
+
+
+
+
+ Атрибуты:
+
+
+
+
+
+
+
+
+
+ Добавить
+
+
+
+
+
+ Удалить
+
+
+
+
+ Документация
+
+
+
+
+ Зарегистрированная документация:
+
+
+
+
+ Добавить...
+
+
+
+
+ Параметры
+
+
+
+
+ Домашная страница
+
+
+
+
+ Текущая страница
+
+
+
+
+ Восстановить по умолчанию
+
+
+
+ QObject
+
+
+
+
+ Закладка
+
+
+
+
+ Указанный файл набора отсутствует!
+
+
+
+
+ Отсутствует файл набора!
+
+
+
+
+ Некорректный URL!
+
+
+
+
+ Отсутствует URL!
+
+
+
+
+
+
+ Неизвестный виджет: %1
+
+
+
+
+
+
+ Отсутствует виджет!
+
+
+
+
+
+ Указанный файл справки Qt отсутствует!
+
+
+
+
+
+ Отсутствует файл справки!
+
+
+
+
+ Отсутствует параметр фильтра!
+
+
+
+
+ Неизвестный параметр: %1
+
+
+
+
+
+ Qt Assistant
+
+
+
+
+ Не удалось зарегистрировать файл документации
+%1
+
+Причина:
+%2
+
+
+
+
+ Документация успешно зарегистрирована.
+
+
+
+
+ Документация успешно дерегистрирована.
+
+
+
+
+ Не удалось дерегистрировать файл документации
+%1
+
+Причина:
+%2
+
+
+
+
+ Не удалось загрузить драйвер базы данных sqlite!
+
+
+
+
+ Не удалось прочитать указанный файл набора!
+
+
+
+ RemoteControl
+
+
+
+ Отладочное удалённое управление
+
+
+
+
+ Получена команда: %1 %2
+
+
+
+ SearchWidget
+
+
+
+ &Копировать
+
+
+
+
+ Копировать &адрес ссылки
+
+
+
+
+ Открыть ссылку в новой вкладке
+
+
+
+
+ Выделить всё
+
+
+
+ TopicChooser
+
+
+
+ Выберите статью для <b>%1</b>:
+
+
+
+
+ Выбор статьи
+
+
+
+
+ &Статьи
+
+
+
+
+ &Показать
+
+
+
+
+ &Закрыть
+
+
+
--
cgit v0.12
From 75e8aaae5e8a0cbaa62fd4cd2a8235544f974a73 Mon Sep 17 00:00:00 2001
From: Stian Sandvik Thomassen
Date: Thu, 18 Jun 2009 14:53:03 +1000
Subject: Made QInputDialog::getText() return null QString when rejected
This reverts a behavior change introduced with Qt 4.5.0 where
QInputDialog::getText() returned the line edit's text when the dialog
was rejected.
However, the behavior since Qt 4.0 has been to return a null QString
when the dialog is rejected.
Task-number: 256299
Reviewed-by: Andy Shaw
---
src/gui/dialogs/qinputdialog.cpp | 6 +++---
tests/auto/qinputdialog/tst_qinputdialog.cpp | 25 +++++++++++++++++++++++--
2 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp
index 7f21d3d..d94d8fe 100644
--- a/src/gui/dialogs/qinputdialog.cpp
+++ b/src/gui/dialogs/qinputdialog.cpp
@@ -1129,8 +1129,8 @@ void QInputDialog::done(int result)
is \a parent. The dialog will be modal and uses the specified widget
\a flags.
- This function returns the text which has been entered in the line
- edit. It will not return an empty string.
+ If the dialog is accepted, this function returns the text in the dialog's
+ line edit. If the dialog is rejected, a null QString is returned.
Use this static function like this:
@@ -1159,7 +1159,7 @@ QString QInputDialog::getText(QWidget *parent, const QString &title, const QStri
if (ret) {
return dialog.textValue();
} else {
- return text;
+ return QString();
}
}
diff --git a/tests/auto/qinputdialog/tst_qinputdialog.cpp b/tests/auto/qinputdialog/tst_qinputdialog.cpp
index a658aeb..7e4b828 100644
--- a/tests/auto/qinputdialog/tst_qinputdialog.cpp
+++ b/tests/auto/qinputdialog/tst_qinputdialog.cpp
@@ -56,6 +56,7 @@ class tst_QInputDialog : public QObject
{
Q_OBJECT
QWidget *parent;
+ QDialog::DialogCode doneCode;
void (*testFunc)(QInputDialog *);
static void testFuncGetInteger(QInputDialog *dialog);
static void testFuncGetDouble(QInputDialog *dialog);
@@ -72,6 +73,7 @@ private slots:
void getText();
void getItem_data();
void getItem();
+ void task256299_getTextReturnNullStringOnRejected();
};
QString stripFraction(const QString &s)
@@ -245,8 +247,9 @@ void tst_QInputDialog::timerEvent(QTimerEvent *event)
killTimer(event->timerId());
QInputDialog *dialog = qFindChild(parent);
Q_ASSERT(dialog);
- testFunc(dialog);
- dialog->done(QDialog::Accepted); // cause static function call to return
+ if (testFunc)
+ testFunc(dialog);
+ dialog->done(doneCode); // cause static function call to return
}
void tst_QInputDialog::getInteger_data()
@@ -266,6 +269,7 @@ void tst_QInputDialog::getInteger()
QFETCH(int, max);
Q_ASSERT(min < max);
parent = new QWidget;
+ doneCode = QDialog::Accepted;
testFunc = &tst_QInputDialog::testFuncGetInteger;
startTimer(0);
bool ok = false;
@@ -305,6 +309,7 @@ void tst_QInputDialog::getDouble()
QFETCH(int, decimals);
Q_ASSERT(min < max && decimals >= 0 && decimals <= 13);
parent = new QWidget;
+ doneCode = QDialog::Accepted;
testFunc = &tst_QInputDialog::testFuncGetDouble;
startTimer(0);
bool ok = false;
@@ -322,6 +327,7 @@ void tst_QInputDialog::getDouble()
void tst_QInputDialog::task255502getDouble()
{
parent = new QWidget;
+ doneCode = QDialog::Accepted;
testFunc = &tst_QInputDialog::testFuncGetDouble;
startTimer(0);
bool ok = false;
@@ -347,6 +353,7 @@ void tst_QInputDialog::getText()
{
QFETCH(QString, text);
parent = new QWidget;
+ doneCode = QDialog::Accepted;
testFunc = &tst_QInputDialog::testFuncGetText;
startTimer(0);
bool ok = false;
@@ -356,6 +363,19 @@ void tst_QInputDialog::getText()
delete parent;
}
+void tst_QInputDialog::task256299_getTextReturnNullStringOnRejected()
+{
+ parent = new QWidget;
+ doneCode = QDialog::Rejected;
+ testFunc = 0;
+ startTimer(0);
+ bool ok = true;
+ const QString result = QInputDialog::getText(parent, "", "", QLineEdit::Normal, "foobar", &ok);
+ QVERIFY(!ok);
+ QVERIFY(result.isNull());
+ delete parent;
+}
+
void tst_QInputDialog::getItem_data()
{
QTest::addColumn("items");
@@ -373,6 +393,7 @@ void tst_QInputDialog::getItem()
QFETCH(QStringList, items);
QFETCH(bool, editable);
parent = new QWidget;
+ doneCode = QDialog::Accepted;
testFunc = &tst_QInputDialog::testFuncGetItem;
startTimer(0);
bool ok = false;
--
cgit v0.12
From de3093495ed17c3d6353dc413accc77ba54e51d4 Mon Sep 17 00:00:00 2001
From: Geir Vattekar
Date: Thu, 18 Jun 2009 11:30:23 +0200
Subject: Doc: Removed mention of QItemAnimation from animation docs and set
QPropertyAnimation as a main class.
Reviewed-by: Trust Me
---
doc/src/animation.qdoc | 6 ------
src/corelib/animation/qpropertyanimation.cpp | 1 +
2 files changed, 1 insertion(+), 6 deletions(-)
diff --git a/doc/src/animation.qdoc b/doc/src/animation.qdoc
index 843e0aa..da9b401 100644
--- a/doc/src/animation.qdoc
+++ b/doc/src/animation.qdoc
@@ -208,12 +208,6 @@
Note that QObject must be the first class inherited as the
meta-object system demands this.
- \warning The QItemAnimation class, which was initially intended
- for animating \l{QGraphicsItem}s may be deprecated or removed from
- the animation framework.
-
- \omit (need something about the list of animations). \endomit
-
\section1 Easing Curves
As mentioned, QPropertyAnimation performs an interpolation between
diff --git a/src/corelib/animation/qpropertyanimation.cpp b/src/corelib/animation/qpropertyanimation.cpp
index a68301c..7526a81 100644
--- a/src/corelib/animation/qpropertyanimation.cpp
+++ b/src/corelib/animation/qpropertyanimation.cpp
@@ -43,6 +43,7 @@
\class QPropertyAnimation
\brief The QPropertyAnimation class animates Qt properties
\since 4.6
+ \mainclass
\ingroup animation
QPropertyAnimation interpolates over \l{Qt's Property System}{Qt
--
cgit v0.12
From 472ab7c60a6ede66565166fa21d6642a918f7403 Mon Sep 17 00:00:00 2001
From: kh
Date: Thu, 18 Jun 2009 12:56:54 +0200
Subject: Cleanup.
Reviewed-by: kh
---
.../assistant/tools/assistant/bookmarkmanager.cpp | 200 ++++++++++-----------
tools/assistant/tools/assistant/bookmarkmanager.h | 16 +-
2 files changed, 99 insertions(+), 117 deletions(-)
diff --git a/tools/assistant/tools/assistant/bookmarkmanager.cpp b/tools/assistant/tools/assistant/bookmarkmanager.cpp
index fbd9923..336c856 100644
--- a/tools/assistant/tools/assistant/bookmarkmanager.cpp
+++ b/tools/assistant/tools/assistant/bookmarkmanager.cpp
@@ -63,7 +63,7 @@
QT_BEGIN_NAMESPACE
BookmarkDialog::BookmarkDialog(BookmarkManager *manager, const QString &title,
- const QString &url, QWidget *parent)
+ const QString &url, QWidget *parent)
: QDialog(parent)
, m_url(url)
, m_title(title)
@@ -95,21 +95,21 @@ BookmarkDialog::BookmarkDialog(BookmarkManager *manager, const QString &title,
connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(addAccepted()));
connect(ui.newFolderButton, SIGNAL(clicked()), this, SLOT(addNewFolder()));
connect(ui.toolButton, SIGNAL(clicked()), this, SLOT(toolButtonClicked()));
- connect(ui.bookmarkEdit, SIGNAL(textChanged(const QString&)), this,
- SLOT(textChanged(const QString&)));
+ connect(ui.bookmarkEdit, SIGNAL(textChanged(QString)), this,
+ SLOT(textChanged(QString)));
- connect(bookmarkManager->treeBookmarkModel(), SIGNAL(itemChanged(QStandardItem*)),
+ connect(bookmarkManager->treeBookmarkModel(),
+ SIGNAL(itemChanged(QStandardItem*)),
this, SLOT(itemChanged(QStandardItem*)));
- connect(ui.bookmarkFolders, SIGNAL(currentIndexChanged(const QString&)), this,
- SLOT(selectBookmarkFolder(const QString&)));
+ connect(ui.bookmarkFolders, SIGNAL(currentIndexChanged(QString)), this,
+ SLOT(selectBookmarkFolder(QString)));
- connect(ui.treeView, SIGNAL(customContextMenuRequested(const QPoint&)), this,
- SLOT(customContextMenuRequested(const QPoint&)));
+ connect(ui.treeView, SIGNAL(customContextMenuRequested(QPoint)), this,
+ SLOT(customContextMenuRequested(QPoint)));
- connect(ui.treeView->selectionModel(),
- SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)),
- this, SLOT(currentChanged(const QModelIndex&, const QModelIndex&)));
+ connect(ui.treeView->selectionModel(), SIGNAL(currentChanged(QModelIndex,
+ QModelIndex)), this, SLOT(currentChanged(QModelIndex)));
}
BookmarkDialog::~BookmarkDialog()
@@ -118,8 +118,8 @@ BookmarkDialog::~BookmarkDialog()
void BookmarkDialog::addAccepted()
{
- const QItemSelection selection = ui.treeView->selectionModel()->selection();
- const QModelIndexList list = selection.indexes();
+ QItemSelectionModel *model = ui.treeView->selectionModel();
+ const QModelIndexList &list = model->selection().indexes();
QModelIndex index;
if (!list.isEmpty())
@@ -131,8 +131,8 @@ void BookmarkDialog::addAccepted()
void BookmarkDialog::addNewFolder()
{
- const QItemSelection selection = ui.treeView->selectionModel()->selection();
- const QModelIndexList list = selection.indexes();
+ QItemSelectionModel *model = ui.treeView->selectionModel();
+ const QModelIndexList &list = model->selection().indexes();
QModelIndex index;
if (!list.isEmpty())
@@ -143,13 +143,12 @@ void BookmarkDialog::addNewFolder()
if (newFolder.isValid()) {
ui.treeView->expand(index);
const QModelIndex &index = proxyModel->mapFromSource(newFolder);
- ui.treeView->selectionModel()->setCurrentIndex(index,
- QItemSelectionModel::ClearAndSelect);
+ model->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect);
ui.bookmarkFolders->clear();
ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders());
- const QString name = index.data().toString();
+ const QString &name = index.data().toString();
ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name));
}
ui.treeView->setFocus();
@@ -183,14 +182,14 @@ void BookmarkDialog::itemChanged(QStandardItem *item)
ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders());
QString name = tr("Bookmarks");
- const QModelIndex& index = ui.treeView->currentIndex();
+ const QModelIndex &index = ui.treeView->currentIndex();
if (index.isValid())
name = index.data().toString();
ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name));
}
}
-void BookmarkDialog::textChanged(const QString& string)
+void BookmarkDialog::textChanged(const QString &string)
{
ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!string.isEmpty());
}
@@ -209,9 +208,12 @@ void BookmarkDialog::selectBookmarkFolder(const QString &folderName)
QList list = model->findItems(folderName,
Qt::MatchCaseSensitive | Qt::MatchRecursive, 0);
if (!list.isEmpty()) {
- QModelIndex index = model->indexFromItem(list.at(0));
- ui.treeView->selectionModel()->setCurrentIndex(
- proxyModel->mapFromSource(index), QItemSelectionModel::ClearAndSelect);
+ const QModelIndex &index = model->indexFromItem(list.at(0));
+ QItemSelectionModel *model = ui.treeView->selectionModel();
+ if (model) {
+ model->setCurrentIndex(proxyModel->mapFromSource(index),
+ QItemSelectionModel::ClearAndSelect);
+ }
}
}
@@ -226,13 +228,13 @@ void BookmarkDialog::customContextMenuRequested(const QPoint &point)
QAction *removeItem = menu.addAction(tr("Delete Folder"));
QAction *renameItem = menu.addAction(tr("Rename Folder"));
- QAction *picked_action = menu.exec(ui.treeView->mapToGlobal(point));
- if (!picked_action)
+ QAction *picked = menu.exec(ui.treeView->mapToGlobal(point));
+ if (!picked)
return;
- if (picked_action == removeItem) {
- bookmarkManager->removeBookmarkItem(ui.treeView,
- proxyModel->mapToSource(index));
+ const QModelIndex &proxyIndex = proxyModel->mapToSource(index);
+ if (picked == removeItem) {
+ bookmarkManager->removeBookmarkItem(ui.treeView, proxyIndex);
ui.bookmarkFolders->clear();
ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders());
@@ -242,10 +244,9 @@ void BookmarkDialog::customContextMenuRequested(const QPoint &point)
name = index.data().toString();
ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name));
}
- else if (picked_action == renameItem) {
- QStandardItem *item = bookmarkManager->treeBookmarkModel()->
- itemFromIndex(proxyModel->mapToSource(index));
- if (item) {
+ else if (picked == renameItem) {
+ BookmarkModel *model = bookmarkManager->treeBookmarkModel();
+ if (QStandardItem *item = model->itemFromIndex(proxyIndex)) {
item->setEditable(true);
ui.treeView->edit(index);
item->setEditable(false);
@@ -253,19 +254,12 @@ void BookmarkDialog::customContextMenuRequested(const QPoint &point)
}
}
-void BookmarkDialog::currentChanged(const QModelIndex& current,
- const QModelIndex& previous)
+void BookmarkDialog::currentChanged(const QModelIndex ¤t)
{
- Q_UNUSED(previous)
-
- if (!current.isValid()) {
- ui.bookmarkFolders->setCurrentIndex(
- ui.bookmarkFolders->findText(tr("Bookmarks")));
- return;
- }
-
- ui.bookmarkFolders->setCurrentIndex(
- ui.bookmarkFolders->findText(current.data().toString()));
+ QString text = tr("Bookmarks");
+ if (current.isValid())
+ text = current.data().toString();
+ ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(text));
}
bool BookmarkDialog::eventFilter(QObject *object, QEvent *e)
@@ -276,7 +270,7 @@ bool BookmarkDialog::eventFilter(QObject *object, QEvent *e)
QModelIndex index = ui.treeView->currentIndex();
switch (ke->key()) {
case Qt::Key_F2: {
- const QModelIndex& source = proxyModel->mapToSource(index);
+ const QModelIndex &source = proxyModel->mapToSource(index);
QStandardItem *item =
bookmarkManager->treeBookmarkModel()->itemFromIndex(source);
if (item) {
@@ -307,10 +301,11 @@ bool BookmarkDialog::eventFilter(QObject *object, QEvent *e)
}
+// #pragma mark -- BookmarkWidget
BookmarkWidget::BookmarkWidget(BookmarkManager *manager, QWidget *parent,
- bool showButtons)
+ bool showButtons)
: QWidget(parent)
, addButton(0)
, removeButton(0)
@@ -326,7 +321,7 @@ BookmarkWidget::~BookmarkWidget()
void BookmarkWidget::removeClicked()
{
- const QModelIndex& index = treeView->currentIndex();
+ const QModelIndex &index = treeView->currentIndex();
if (searchField->text().isEmpty()) {
bookmarkManager->removeBookmarkItem(treeView,
filterBookmarkModel->mapToSource(index));
@@ -360,10 +355,11 @@ void BookmarkWidget::filterChanged()
expandItems();
}
-void BookmarkWidget::expand(const QModelIndex& index)
+void BookmarkWidget::expand(const QModelIndex &index)
{
- const QModelIndex& source = filterBookmarkModel->mapToSource(index);
- QStandardItem *item = bookmarkManager->treeBookmarkModel()->itemFromIndex(source);
+ const QModelIndex &source = filterBookmarkModel->mapToSource(index);
+ QStandardItem *item =
+ bookmarkManager->treeBookmarkModel()->itemFromIndex(source);
if (item)
item->setData(treeView->isExpanded(index), Qt::UserRole + 11);
}
@@ -404,22 +400,22 @@ void BookmarkWidget::customContextMenuRequested(const QPoint &point)
}
}
- QAction *picked_action = menu.exec(treeView->mapToGlobal(point));
- if (!picked_action)
+ QAction *pickedAction = menu.exec(treeView->mapToGlobal(point));
+ if (!pickedAction)
return;
- if (picked_action == showItem) {
+ if (pickedAction == showItem) {
emit requestShowLink(data);
}
- else if (picked_action == showItemNewTab) {
+ else if (pickedAction == showItemNewTab) {
CentralWidget::instance()->setSourceInNewTab(data);
}
- else if (picked_action == removeItem) {
+ else if (pickedAction == removeItem) {
bookmarkManager->removeBookmarkItem(treeView,
filterBookmarkModel->mapToSource(index));
}
- else if (picked_action == renameItem) {
- const QModelIndex& source = filterBookmarkModel->mapToSource(index);
+ else if (pickedAction == renameItem) {
+ const QModelIndex &source = filterBookmarkModel->mapToSource(index);
QStandardItem *item =
bookmarkManager->treeBookmarkModel()->itemFromIndex(source);
if (item) {
@@ -443,7 +439,7 @@ void BookmarkWidget::setup(bool showButtons)
searchField = new QLineEdit(this);
vlayout->addWidget(searchField);
- connect(searchField, SIGNAL(textChanged(const QString &)), this,
+ connect(searchField, SIGNAL(textChanged(QString)), this,
SLOT(filterChanged()));
treeView = new TreeView(this);
@@ -490,17 +486,14 @@ void BookmarkWidget::setup(bool showButtons)
treeView->viewport()->installEventFilter(this);
treeView->setContextMenuPolicy(Qt::CustomContextMenu);
- connect(treeView, SIGNAL(expanded(const QModelIndex&)), this,
- SLOT(expand(const QModelIndex&)));
-
- connect(treeView, SIGNAL(collapsed(const QModelIndex&)), this,
- SLOT(expand(const QModelIndex&)));
-
- connect(treeView, SIGNAL(activated(const QModelIndex&)), this,
- SLOT(activated(const QModelIndex&)));
-
- connect(treeView, SIGNAL(customContextMenuRequested(const QPoint&)),
- this, SLOT(customContextMenuRequested(const QPoint&)));
+ connect(treeView, SIGNAL(expanded(QModelIndex)), this,
+ SLOT(expand(QModelIndex)));
+ connect(treeView, SIGNAL(collapsed(QModelIndex)), this,
+ SLOT(expand(QModelIndex)));
+ connect(treeView, SIGNAL(activated(QModelIndex)), this,
+ SLOT(activated(QModelIndex)));
+ connect(treeView, SIGNAL(customContextMenuRequested(QPoint)),
+ this, SLOT(customContextMenuRequested(QPoint)));
filterBookmarkModel->setFilterKeyColumn(0);
filterBookmarkModel->setDynamicSortFilter(true);
@@ -514,8 +507,8 @@ void BookmarkWidget::expandItems()
QStandardItemModel *model = bookmarkManager->treeBookmarkModel();
QListlist = model->findItems(QLatin1String("*"),
Qt::MatchWildcard | Qt::MatchRecursive, 0);
- foreach (const QStandardItem* item, list) {
- const QModelIndex& index = model->indexFromItem(item);
+ foreach (const QStandardItem *item, list) {
+ const QModelIndex &index = model->indexFromItem(item);
treeView->setExpanded(filterBookmarkModel->mapFromSource(index),
item->data(Qt::UserRole + 11).toBool());
}
@@ -541,17 +534,17 @@ bool BookmarkWidget::eventFilter(QObject *object, QEvent *e)
if (e->type() == QEvent::KeyPress) {
QKeyEvent *ke = static_cast(e);
if (index.isValid() && searchField->text().isEmpty()) {
+ const QModelIndex &src = filterBookmarkModel->mapToSource(index);
if (ke->key() == Qt::Key_F2) {
- QStandardItem *item = bookmarkManager->treeBookmarkModel()
- ->itemFromIndex(filterBookmarkModel->mapToSource(index));
+ QStandardItem *item =
+ bookmarkManager->treeBookmarkModel()->itemFromIndex(src);
if (item) {
item->setEditable(true);
treeView->edit(index);
item->setEditable(false);
}
} else if (ke->key() == Qt::Key_Delete) {
- bookmarkManager->removeBookmarkItem(treeView,
- filterBookmarkModel->mapToSource(index));
+ bookmarkManager->removeBookmarkItem(treeView, src);
}
}
@@ -559,7 +552,7 @@ bool BookmarkWidget::eventFilter(QObject *object, QEvent *e)
default: break;
case Qt::Key_Up: {
case Qt::Key_Down:
- treeView->subclassKeyPressEvent(ke);
+ treeView->subclassKeyPressEvent(ke);
} break;
case Qt::Key_Enter: {
@@ -593,9 +586,10 @@ bool BookmarkWidget::eventFilter(QObject *object, QEvent *e)
}
+// #pragma mark -- BookmarkModel
-BookmarkModel::BookmarkModel(int rows, int columns, QObject * parent)
+BookmarkModel::BookmarkModel(int rows, int columns, QObject *parent)
: QStandardItemModel(rows, columns, parent)
{
}
@@ -619,16 +613,15 @@ Qt::ItemFlags BookmarkModel::flags(const QModelIndex &index) const
}
+// #pragma mark -- BookmarkManager
-BookmarkManager::BookmarkManager(QHelpEngineCore* _helpEngine)
+BookmarkManager::BookmarkManager(QHelpEngineCore *_helpEngine)
: treeModel(new BookmarkModel(0, 1, this))
, listModel(new BookmarkModel(0, 1, this))
, helpEngine(_helpEngine)
{
folderIcon = QApplication::style()->standardIcon(QStyle::SP_DirClosedIcon);
- treeModel->setHeaderData(0, Qt::Horizontal, QObject::tr("Bookmark"));
- listModel->setHeaderData(0, Qt::Horizontal, QObject::tr("Bookmark"));
connect(treeModel, SIGNAL(itemChanged(QStandardItem*)), this,
SLOT(itemChanged(QStandardItem*)));
@@ -652,22 +645,10 @@ BookmarkModel* BookmarkManager::listBookmarkModel()
void BookmarkManager::saveBookmarks()
{
- qint32 depth = 0;
QByteArray bookmarks;
QDataStream stream(&bookmarks, QIODevice::WriteOnly);
- QStandardItem *root = treeModel->invisibleRootItem();
-
- for (int i = 0; i < root->rowCount(); ++i) {
- const QStandardItem *item = root->child(i);
- stream << depth; // root
- stream << item->data(Qt::DisplayRole).toString();
- stream << item->data(Qt::UserRole + 10).toString();
- stream << item->data(Qt::UserRole + 11).toBool();
- if (item->rowCount() > 0) {
- readBookmarksRecursive(item, stream, (depth +1));
- }
- }
+ readBookmarksRecursive(treeModel->invisibleRootItem(), stream, 0);
helpEngine->setCustomValue(QLatin1String("Bookmarks"), bookmarks);
}
@@ -687,7 +668,7 @@ QStringList BookmarkManager::bookmarkFolders() const
return folders;
}
-QModelIndex BookmarkManager::addNewFolder(const QModelIndex& index)
+QModelIndex BookmarkManager::addNewFolder(const QModelIndex &index)
{
QStandardItem *item = new QStandardItem(uniqueFolderName());
item->setEditable(false);
@@ -703,16 +684,17 @@ QModelIndex BookmarkManager::addNewFolder(const QModelIndex& index)
return treeModel->indexFromItem(item);
}
-void BookmarkManager::removeBookmarkItem(QTreeView *treeView, const QModelIndex& index)
+void BookmarkManager::removeBookmarkItem(QTreeView *treeView,
+ const QModelIndex &index)
{
QStandardItem *item = treeModel->itemFromIndex(index);
if (item) {
QString data = index.data(Qt::UserRole + 10).toString();
if (data == QLatin1String("Folder") && item->rowCount() > 0) {
int value = QMessageBox::question(treeView, tr("Remove"),
- tr("You are going to delete a Folder, this will also
"
- "remove it's content. Are you sure to continue?"),
- QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel);
+ tr("You are going to delete a Folder, this will also
"
+ "remove it's content. Are you sure to continue?"),
+ QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel);
if (value == QMessageBox::Cancel)
return;
@@ -733,28 +715,26 @@ void BookmarkManager::removeBookmarkItem(QTreeView *treeView, const QModelIndex&
}
}
-void BookmarkManager::showBookmarkDialog(QWidget* parent, const QString &name,
- const QString &url)
+void BookmarkManager::showBookmarkDialog(QWidget *parent, const QString &name,
+ const QString &url)
{
BookmarkDialog dialog(this, name, url, parent);
dialog.exec();
}
-void BookmarkManager::addNewBookmark(const QModelIndex& index,
- const QString &name, const QString &url)
+void BookmarkManager::addNewBookmark(const QModelIndex &index,
+ const QString &name, const QString &url)
{
QStandardItem *item = new QStandardItem(name);
item->setEditable(false);
item->setData(false, Qt::UserRole + 11);
item->setData(url, Qt::UserRole + 10);
- if (index.isValid()) {
+ if (index.isValid())
treeModel->itemFromIndex(index)->appendRow(item);
- listModel->appendRow(item->clone());
- } else {
+ else
treeModel->appendRow(item);
- listModel->appendRow(item->clone());
- }
+ listModel->appendRow(item->clone());
}
void BookmarkManager::itemChanged(QStandardItem *item)
@@ -785,7 +765,8 @@ void BookmarkManager::setupBookmarkModels()
QList lastDepths;
QList parents;
- QByteArray ba = helpEngine->customValue(QLatin1String("Bookmarks")).toByteArray();
+ QByteArray ba =
+ helpEngine->customValue(QLatin1String("Bookmarks")).toByteArray();
QDataStream stream(ba);
while (!stream.atEnd()) {
stream >> depth >> name >> type >> expanded;
@@ -855,8 +836,7 @@ void BookmarkManager::removeBookmarkFolderItems(QStandardItem *item)
}
void BookmarkManager::readBookmarksRecursive(const QStandardItem *item,
- QDataStream &stream,
- const qint32 depth) const
+ QDataStream &stream, const qint32 depth) const
{
for (int j = 0; j < item->rowCount(); ++j) {
const QStandardItem *child = item->child(j);
diff --git a/tools/assistant/tools/assistant/bookmarkmanager.h b/tools/assistant/tools/assistant/bookmarkmanager.h
index 29da5f3..bf7af41 100644
--- a/tools/assistant/tools/assistant/bookmarkmanager.h
+++ b/tools/assistant/tools/assistant/bookmarkmanager.h
@@ -74,7 +74,7 @@ class BookmarkDialog : public QDialog
Q_OBJECT
public:
- BookmarkDialog(BookmarkManager *manager, const QString &title,
+ BookmarkDialog(BookmarkManager *manager, const QString &title,
const QString &url, QWidget *parent = 0);
~BookmarkDialog();
@@ -86,8 +86,8 @@ private slots:
void textChanged(const QString& string);
void selectBookmarkFolder(const QString &folderName);
void customContextMenuRequested(const QPoint &point);
- void currentChanged(const QModelIndex& current, const QModelIndex& previous);
-
+ void currentChanged(const QModelIndex& current);
+
private:
bool eventFilter(QObject *object, QEvent *e);
@@ -177,14 +177,16 @@ public:
QStringList bookmarkFolders() const;
QModelIndex addNewFolder(const QModelIndex& index);
void removeBookmarkItem(QTreeView *treeView, const QModelIndex& index);
- void showBookmarkDialog(QWidget* parent, const QString &name, const QString &url);
- void addNewBookmark(const QModelIndex& index, const QString &name, const QString &url);
+ void showBookmarkDialog(QWidget* parent, const QString &name,
+ const QString &url);
+ void addNewBookmark(const QModelIndex& index, const QString &name,
+ const QString &url);
void setupBookmarkModels();
private slots:
void itemChanged(QStandardItem *item);
-private:
+private:
QString uniqueFolderName() const;
void removeBookmarkFolderItems(QStandardItem *item);
void readBookmarksRecursive(const QStandardItem *item, QDataStream &stream,
@@ -193,7 +195,7 @@ private:
private:
QString oldText;
QIcon folderIcon;
-
+
BookmarkModel *treeModel;
BookmarkModel *listModel;
QStandardItem *renameItem;
--
cgit v0.12
From 88130cb56b0b1b7332430d6045946635ca1c8c75 Mon Sep 17 00:00:00 2001
From: kh
Date: Thu, 18 Jun 2009 13:15:41 +0200
Subject: Make it possible to drag bookmarks to the root item.
Reviewed-by: kh
---
tools/assistant/tools/assistant/bookmarkmanager.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/assistant/tools/assistant/bookmarkmanager.cpp b/tools/assistant/tools/assistant/bookmarkmanager.cpp
index 336c856..3bca573 100644
--- a/tools/assistant/tools/assistant/bookmarkmanager.cpp
+++ b/tools/assistant/tools/assistant/bookmarkmanager.cpp
@@ -606,7 +606,8 @@ Qt::DropActions BookmarkModel::supportedDropActions() const
Qt::ItemFlags BookmarkModel::flags(const QModelIndex &index) const
{
Qt::ItemFlags defaultFlags = QStandardItemModel::flags(index);
- if (index.data(Qt::UserRole + 10).toString() == QLatin1String("Folder"))
+ if ((!index.isValid()) // can only happen for the invisible root item
+ || index.data(Qt::UserRole + 10).toString() == QLatin1String("Folder"))
return (Qt::ItemIsDropEnabled | defaultFlags) &~ Qt::ItemIsDragEnabled;
return (Qt::ItemIsDragEnabled | defaultFlags) &~ Qt::ItemIsDropEnabled;
--
cgit v0.12
From 747c7a9a060267dee9622c96bf0e2a54147dacfa Mon Sep 17 00:00:00 2001
From: Thierry Bastian
Date: Thu, 18 Jun 2009 13:38:10 +0200
Subject: QItemEditorFactory: made sure the ownership is taken on the
QItemEditorCreator
The creators were not deleted i nthe destructor of QItemEditorFactory
and they could not be safely used for more than one type.
Task-number: 228255
Reviewed-by: jasplin
---
src/gui/itemviews/qitemeditorfactory.cpp | 16 +++++++--
.../qitemeditorfactory/tst_qitemeditorfactory.cpp | 38 ++++++++++++++++++----
2 files changed, 45 insertions(+), 9 deletions(-)
diff --git a/src/gui/itemviews/qitemeditorfactory.cpp b/src/gui/itemviews/qitemeditorfactory.cpp
index c576e40..480a472 100644
--- a/src/gui/itemviews/qitemeditorfactory.cpp
+++ b/src/gui/itemviews/qitemeditorfactory.cpp
@@ -158,6 +158,10 @@ QByteArray QItemEditorFactory::valuePropertyName(QVariant::Type type) const
*/
QItemEditorFactory::~QItemEditorFactory()
{
+ //we make sure we delete all the QItemEditorCreatorBase
+ //this has to be done only once, hence the QSet
+ QSet set = creatorMap.values().toSet();
+ qDeleteAll(set);
}
/*!
@@ -170,8 +174,16 @@ QItemEditorFactory::~QItemEditorFactory()
*/
void QItemEditorFactory::registerEditor(QVariant::Type type, QItemEditorCreatorBase *creator)
{
- delete creatorMap.value(type, 0);
- creatorMap[type] = creator;
+ QHash::iterator it = creatorMap.find(type);
+ if (it != creatorMap.end()) {
+ QItemEditorCreatorBase *oldCreator = it.value();
+ Q_ASSERT(oldCreator);
+ creatorMap.erase(it);
+ if (!creatorMap.values().contains(oldCreator))
+ delete oldCreator; // if it is no more in use we can delete it
+ }
+
+ creatorMap[type] = creator;
}
class QDefaultItemEditorFactory : public QItemEditorFactory
diff --git a/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp b/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp
index 5540b38..d9a7d56 100644
--- a/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp
+++ b/tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp
@@ -61,16 +61,40 @@ void tst_QItemEditorFactory::createEditor()
void tst_QItemEditorFactory::createCustomEditor()
{
- QItemEditorFactory editorFactory;
+ //we make it inherit from QObject so that we can use QPointer
+ class MyEditor : public QObject, public QStandardItemEditorCreator
+ {
+ };
- QItemEditorCreatorBase *creator = new QStandardItemEditorCreator();
- editorFactory.registerEditor(QVariant::Rect, creator);
+ QPointer creator = new MyEditor;
+ QPointer creator2 = new MyEditor;
- QWidget parent;
+ {
+ QItemEditorFactory editorFactory;
+
+ editorFactory.registerEditor(QVariant::Rect, creator);
+ editorFactory.registerEditor(QVariant::RectF, creator);
+
+ //creator should not be deleted as a result of calling the next line
+ editorFactory.registerEditor(QVariant::Rect, creator2);
+ QVERIFY(creator);
+
+ //this should erase creator2
+ editorFactory.registerEditor(QVariant::Rect, creator);
+ QVERIFY(creator2.isNull());
+
+
+ QWidget parent;
+
+ QWidget *w = editorFactory.createEditor(QVariant::Rect, &parent);
+ QCOMPARE(w->metaObject()->className(), "QDoubleSpinBox");
+ QCOMPARE(w->metaObject()->userProperty().type(), QVariant::Double);
+ }
- QWidget *w = editorFactory.createEditor(QVariant::Rect, &parent);
- QCOMPARE(w->metaObject()->className(), "QDoubleSpinBox");
- QCOMPARE(w->metaObject()->userProperty().type(), QVariant::Double);
+ //editorFactory has been deleted, so should be creator
+ //because editorFActory has the ownership
+ QVERIFY(creator.isNull());
+ QVERIFY(creator2.isNull());
delete creator;
}
--
cgit v0.12
From 2114754f8f86e0b653b6057d9b46a30f97d51aef Mon Sep 17 00:00:00 2001
From: Geir Vattekar
Date: Thu, 18 Jun 2009 14:04:19 +0200
Subject: Doc: Added snippet files for state machine overview.
Reviewed-by: Trust Me
---
doc/src/snippets/statemachine/main.cpp | 48 +++++++++++++++
doc/src/snippets/statemachine/main2.cpp | 51 ++++++++++++++++
doc/src/snippets/statemachine/main3.cpp | 21 +++++++
doc/src/snippets/statemachine/main4.cpp | 71 ++++++++++++++++++++++
doc/src/snippets/statemachine/main5.cpp | 103 ++++++++++++++++++++++++++++++++
5 files changed, 294 insertions(+)
create mode 100644 doc/src/snippets/statemachine/main.cpp
create mode 100644 doc/src/snippets/statemachine/main2.cpp
create mode 100644 doc/src/snippets/statemachine/main3.cpp
create mode 100644 doc/src/snippets/statemachine/main4.cpp
create mode 100644 doc/src/snippets/statemachine/main5.cpp
diff --git a/doc/src/snippets/statemachine/main.cpp b/doc/src/snippets/statemachine/main.cpp
new file mode 100644
index 0000000..f20d245
--- /dev/null
+++ b/doc/src/snippets/statemachine/main.cpp
@@ -0,0 +1,48 @@
+
+#include
+
+int main(int argv, char **args)
+{
+ QApplication app(argv, args);
+
+ QLabel *label = new QLabel;
+
+//![0]
+ QStateMachine machine;
+ QState *s1 = new QState();
+ QState *s2 = new QState();
+ QState *s3 = new QState();
+//![0]
+
+//![4]
+ s1->assignProperty(label, "text", "In state s1");
+ s2->assignProperty(label, "text", "In state s2");
+ s3->assignProperty(label, "text", "In state s3");
+//![4]
+
+//![5]
+ QObject::connect(s3, SIGNAL(entered()), button, SLOT(showMaximized()));
+ QObject::connect(s3, SIGNAL(exited()), button, SLOT(showMinimized()));
+//![5]
+
+//![1]
+ s1->addTransition(button, SIGNAL(clicked()), s2);
+ s2->addTransition(button, SIGNAL(clicked()), s3);
+ s3->addTransition(button, SIGNAL(clicked()), s1);
+//![1]
+
+//![2]
+ machine.addState(s1);
+ machine.addState(s2);
+ machine.addState(s3);
+ machine.setInitialState(s1);
+//![2]
+
+//![3]
+ machine.start();
+//![3]
+
+ label->show();
+
+ return app.exec();
+}
diff --git a/doc/src/snippets/statemachine/main2.cpp b/doc/src/snippets/statemachine/main2.cpp
new file mode 100644
index 0000000..60a61e7
--- /dev/null
+++ b/doc/src/snippets/statemachine/main2.cpp
@@ -0,0 +1,51 @@
+
+#include
+
+int main(int argv, char **args)
+{
+ QApplication app(argv, args);
+
+ QStateMachine machine;
+
+//![0]
+ QState *s1 = new QState();
+ QState *s11 = new QState(s1);
+ QState *s12 = new QState(s1);
+ QState *s13 = new QState(s1);
+ s1->setInitialState(s11);
+ machine.addState(s1);
+//![0]
+
+//![2]
+ s12>addTransition(quitButton, SIGNAL(clicked()), s12);
+//![2]
+
+//![1]
+ QFinalState *s2 = new QFinalState();
+ s1->addTransition(quitButton, SIGNAL(clicked()), s2);
+ machine.addState(s2);
+
+ QObject::connect(&machine, SIGNAL(finished()), QApplication::instance(), SLOT(quit()));
+//![1]
+
+ QButton *interruptButton = new QPushButton("Interrupt Button");
+
+//![3]
+ QHistoryState *s1h = s1->addHistoryState();
+
+ QState *s3 = new QState();
+ s3->assignProperty(label, "text", "In s3");
+ QMessageBox mbox;
+ mbox.addButton(QMessageBox::Ok);
+ mbox.setText("Interrupted!");
+ mbox.setIcon(QMessageBox::Information);
+ QObject::connect(s3, SIGNAL(entered()), &mbox, SLOT(exec()));
+ s3->addTransition(s1h);
+ machine.addState(s3);
+
+ s1->addTransition(interruptButton, SIGNAL(clicked()), s3);
+//![3]
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/statemachine/main3.cpp b/doc/src/snippets/statemachine/main3.cpp
new file mode 100644
index 0000000..b04b850
--- /dev/null
+++ b/doc/src/snippets/statemachine/main3.cpp
@@ -0,0 +1,21 @@
+
+#include
+
+int main(int argv, char **args)
+{
+ QApplication app(argv, args);
+
+//![0]
+ QState *s1 = new QState(QState::ParallelStates);
+ // s11 and s12 will be entered in parallel
+ QState *s11 = new QState(s1);
+ QState *s12 = new QState(s1);
+//![0]
+
+//![1]
+ s1->addTransition(s1, SIGNAL(finished()), s2);
+//![1]
+
+ return app.exec();
+}
+
diff --git a/doc/src/snippets/statemachine/main4.cpp b/doc/src/snippets/statemachine/main4.cpp
new file mode 100644
index 0000000..5681bbd
--- /dev/null
+++ b/doc/src/snippets/statemachine/main4.cpp
@@ -0,0 +1,71 @@
+
+#include
+
+
+//![0]
+struct StringEvent : public QEvent
+{
+ StringEvent(const QString &val)
+ : QEvent(QEvent::Type(QEvent::User+1)),
+ value(val) {}
+
+ QString value;
+};
+//![0]
+
+//![1]
+class StringTransition : public QAbstractTransition
+{
+public:
+ StringTransition(const QString &value)
+ : m_value(value) {}
+
+protected:
+ virtual bool eventTest(QEvent *e) const
+ {
+ if (e->type() != QEvent::Type(QEvent::User+1)) // StringEvent
+ return false;
+ StringEvent *se = static_cast(e);
+ return (m_value == se->value);
+ }
+
+ virtual void onTransition(QEvent *) {}
+
+private:
+ QString m_value;
+};
+//![1]
+
+int main(int argv, char **args)
+{
+ QApplication app(argv, args);
+
+//![2]
+ QStateMachine machine;
+ QState *s1 = new QState();
+ QState *s2 = new QState();
+ QFinalState *done = new QFinalState();
+
+ StringTransition *t1 = new StringTransition("Hello");
+ t1->setTargetState(s2);
+ s1->addTransition(t1);
+ StringTransition *t2 = new StringTransition("world");
+ t2->setTargetState(done);
+ s2->addTransition(t2);
+
+ machine.addState(s1);
+ machine.addState(s2);
+ machine.addState(done);
+ machine.setInitialState(s1);
+//![2]
+
+//![3]
+ machine.postEvent(new StringEvent("Hello"));
+ machine.postEvent(new StringEvent("world"));
+//![3]
+
+ return app.exec();
+}
+
+#include "main4.moc"
+
diff --git a/doc/src/snippets/statemachine/main5.cpp b/doc/src/snippets/statemachine/main5.cpp
new file mode 100644
index 0000000..90ad8c7
--- /dev/null
+++ b/doc/src/snippets/statemachine/main5.cpp
@@ -0,0 +1,103 @@
+
+#include
+
+int main(int argv, char **args)
+{
+ QApplication app(argv, args);
+
+ {
+//![0]
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+//![0]
+
+//![1]
+ QState *s1 = new QState();
+ s1->assignProperty(object, "fooBar", 1.0);
+ machine.addState(s1);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState();
+ machine.addState(s2);
+//![1]
+ }
+
+ {
+
+//![2]
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+
+ QState *s1 = new QState();
+ s1->assignProperty(object, "fooBar", 1.0);
+ machine.addState(s1);
+ machine.setInitialState(s1);
+
+ QState *s2 = new QState(s1);
+ s2->assignProperty(object, "fooBar", 2.0);
+ s1->setInitialState(s2);
+
+ QState *s3 = new QState(s1);
+//![2]
+
+ }
+
+ {
+//![3]
+ QState *s1 = new QState();
+ QState *s2 = new QState();
+
+ s1->assignProperty(button, "geometry", QRectF(0, 0, 50, 50));
+ s2->assignProperty(button, "geometry", QRectF(0, 0, 100, 100));
+
+ s1->addTransition(button, SIGNAL(clicked()), s2);
+//![3]
+
+ }
+
+ {
+//![4]
+ QState *s1 = new QState();
+ QState *s2 = new QState();
+
+ s1->assignProperty(button, "geometry", QRectF(0, 0, 50, 50));
+ s2->assignProperty(button, "geometry", QRectF(0, 0, 100, 100));
+
+ QSignalTransition *transition = s1->addTransition(button, SIGNAL(clicked()), s2);
+ transition->addAnimation(new QPropertyAnimation(button, "geometry"));
+//![4]
+
+ }
+
+ {
+
+//![5]
+ QState *s1 = new QState();
+ s1->assignProperty(button, "geometry", QRectF(0, 0, 50, 50));
+
+ QState *s2 = new QState();
+
+ s1->addTransition(s1, SIGNAL(polished()), s2);
+//![5]
+
+ }
+
+ {
+
+//![6]
+ QState *s1 = new QState();
+ QState *s2 = new QState();
+
+ s2->assignProperty(object, "fooBar", 2.0);
+ s1->addTransition(s2);
+
+ QStateMachine machine;
+ machine.setInitialState(s1);
+ machine.addDefaultAnimation(new QPropertyAnimation(object, "fooBar"));
+//![6]
+
+ }
+
+ return app.exec();
+}
+
--
cgit v0.12
From 2b32e8a7504a98950b486df6ee6f2f126c162e6c Mon Sep 17 00:00:00 2001
From: Thierry Bastian
Date: Thu, 18 Jun 2009 14:11:26 +0200
Subject: Demo: fixed colors in the calendar when May 1st is a Friday
Task-number: 255114
---
examples/widgets/calendarwidget/window.cpp | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/examples/widgets/calendarwidget/window.cpp b/examples/widgets/calendarwidget/window.cpp
index 7672a05..c31ea0c 100644
--- a/examples/widgets/calendarwidget/window.cpp
+++ b/examples/widgets/calendarwidget/window.cpp
@@ -167,22 +167,22 @@ void Window::reformatHeaders()
//! [8]
void Window::reformatCalendarPage()
{
- QTextCharFormat mayFirstFormat;
- if (mayFirstCheckBox->isChecked())
- mayFirstFormat.setForeground(Qt::red);
-
- QTextCharFormat firstFridayFormat;
- if (firstFridayCheckBox->isChecked())
+ if (firstFridayCheckBox->isChecked()) {
+ QDate firstFriday(calendar->yearShown(), calendar->monthShown(), 1);
+ while (firstFriday.dayOfWeek() != Qt::Friday)
+ firstFriday = firstFriday.addDays(1);
+ QTextCharFormat firstFridayFormat;
firstFridayFormat.setForeground(Qt::blue);
+ calendar->setDateTextFormat(firstFriday, firstFridayFormat);
+ }
- QDate date(calendar->yearShown(), calendar->monthShown(), 1);
-
- calendar->setDateTextFormat(QDate(date.year(), 5, 1), mayFirstFormat);
-
- date.setDate(date.year(), date.month(), 1);
- while (date.dayOfWeek() != Qt::Friday)
- date = date.addDays(1);
- calendar->setDateTextFormat(date, firstFridayFormat);
+ //May First in Red takes precedence
+ if (mayFirstCheckBox->isChecked()) {
+ const QDate mayFirst(calendar->yearShown(), 5, 1);
+ QTextCharFormat mayFirstFormat;
+ mayFirstFormat.setForeground(Qt::red);
+ calendar->setDateTextFormat(mayFirst, mayFirstFormat);
+ }
}
//! [8]
--
cgit v0.12
From b7280820144b3cf1bbd49a26f5e532bb9b7f388d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Morten=20S=C3=B8rvig?=
Date: Thu, 18 Jun 2009 14:24:22 +0200
Subject: On Mac OS X 10.4, dsable a couple of accessibility tests that hang.
Ideally these should be investigated at some point. For now disable them
so that the test can be completed.
---
.../auto/qaccessibility_mac/tst_qaccessibility_mac.cpp | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/tests/auto/qaccessibility_mac/tst_qaccessibility_mac.cpp b/tests/auto/qaccessibility_mac/tst_qaccessibility_mac.cpp
index b81fa12..deb6c8d 100644
--- a/tests/auto/qaccessibility_mac/tst_qaccessibility_mac.cpp
+++ b/tests/auto/qaccessibility_mac/tst_qaccessibility_mac.cpp
@@ -833,9 +833,14 @@ void tst_accessibility_mac::testTabWidget()
// Window is not reported properly on 10.5
if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_5) {
QVERIFY(equal(window(tabGroup), form));
- QVERIFY(equal(window(tabButton1), form));
+
+ // ### hangs on 10.4
+#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
+ QVERIFY(equal(window(tabButton1), form));
+#endif
}
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
+// ### hangs on 10.4
+#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
QVERIFY(equal(topLevelUIElement(tabGroup), form));
QVERIFY(equal(topLevelUIElement(tabButton1), form));
#endif
@@ -1423,7 +1428,6 @@ void tst_accessibility_mac::testListView()
const AXUIElementRef listElement = childByRole(scrollAreaElement, "AXList");
QVERIFY(listElement);
QVERIFY(equal(::parent(listElement), scrollAreaElement));
-
// Window is not reported properly on 10.5
if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_5)
QVERIFY(equal(::window(listElement), windowElement));
@@ -1438,9 +1442,11 @@ void tst_accessibility_mac::testListView()
QVERIFY(value(A) == "A");
QVERIFY(equal(::parent(A), listElement));
QVERIFY(enabled(A));
- // Window is not reported properly on 10.5
- if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_5)
- QVERIFY(equal(::window(A), windowElement));
+
+ // Window is not reported properly on 10.5, this test
+ // hangs on 10.4. Disable it for now.
+ // if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_5)
+ // QVERIFY(equal(::window(A), windowElement));
QVERIFY(above(A, B));
QVERIFY(!above(B, A));
--
cgit v0.12
From cc4935dc0641336813925b3892ffd6695d709d19 Mon Sep 17 00:00:00 2001
From: Martin Smith
Date: Thu, 18 Jun 2009 14:28:25 +0200
Subject: qdoc: Fixed crash when a compact list section was empty.
---
tools/qdoc3/htmlgenerator.cpp | 51 +++++++++++++++++++++++--------------------
1 file changed, 27 insertions(+), 24 deletions(-)
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index c14b46d..8ef4f0b 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -1850,8 +1850,10 @@ HtmlGenerator::generateAnnotatedList(const Node *relative,
out() << "
\n";
}
-void HtmlGenerator::generateCompactList(const Node *relative, CodeMarker *marker,
- const QMap &classMap)
+void
+HtmlGenerator::generateCompactList(const Node *relative,
+ CodeMarker *marker,
+ const QMap &classMap)
{
const int NumParagraphs = 37; // '0' to '9', 'A' to 'Z', '_'
const int NumColumns = 4; // number of columns in the result
@@ -1994,28 +1996,29 @@ void HtmlGenerator::generateCompactList(const Node *relative, CodeMarker *marker
<< " ";
}
out() << "\n";
-
- // bad loop
- QMap::Iterator it;
- it = paragraph[currentParagraphNo[i]].begin();
- for (j = 0; j < currentOffsetInParagraph[i]; j++)
- ++it;
-
- out() << "";
- // Previously, we used generateFullName() for this, but we
- // require some special formatting.
- out() << "";
- QStringList pieces = fullName(it.value(), relative, marker).split("::");
- out() << protect(pieces.last());
- out() << "";
- if (pieces.size() > 1) {
- out() << " (";
- generateFullName(it.value()->parent(), relative, marker);
- out() << ")";
- }
- out() << " | \n";
+
+ if (!paragraphName[currentParagraphNo[i]].isEmpty()) {
+ QMap::Iterator it;
+ it = paragraph[currentParagraphNo[i]].begin();
+ for (j = 0; j < currentOffsetInParagraph[i]; j++)
+ ++it;
+
+ out() << "";
+ // Previously, we used generateFullName() for this, but we
+ // require some special formatting.
+ out() << "";
+ QStringList pieces = fullName(it.value(), relative, marker).split("::");
+ out() << protect(pieces.last());
+ out() << "";
+ if (pieces.size() > 1) {
+ out() << " (";
+ generateFullName(it.value()->parent(), relative, marker);
+ out() << ")";
+ }
+ out() << " | \n";
+ }
currentOffset[i]++;
currentOffsetInParagraph[i]++;
--
cgit v0.12
From 450a9c97aba21db04df4af281312e4262529691a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Nilsen?=
Date: Thu, 18 Jun 2009 13:28:01 +0200
Subject: Make construction of unitialized QTransform/QMatrix a no-op.
These constructors are useful when you have to create a temporary
uninitialized QTransform/QMatrix and later initialize it to something
else.
Done with Lars.
Reviewed-by: samuel
---
doc/src/qnamespace.qdoc | 6 ++++++
src/corelib/global/qnamespace.h | 4 ++++
src/gui/painting/qmatrix.cpp | 4 ++++
src/gui/painting/qmatrix.h | 1 +
src/gui/painting/qtransform.cpp | 5 +++++
src/gui/painting/qtransform.h | 1 +
6 files changed, 21 insertions(+)
diff --git a/doc/src/qnamespace.qdoc b/doc/src/qnamespace.qdoc
index d46236f..8a24764 100644
--- a/doc/src/qnamespace.qdoc
+++ b/doc/src/qnamespace.qdoc
@@ -2685,3 +2685,9 @@
\value Round Like Repeat, but scales the images down to ensure that
the last image is not cropped.
*/
+
+/*!
+ \enum Uninitialized
+ \internal
+*/
+
diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
index 46ac40b..398cd48 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -1542,6 +1542,10 @@ public:
BottomLeftSection,
TitleBarArea // For move
};
+
+ enum Uninitialized {
+ Uninitialized
+ };
}
#ifdef Q_MOC_RUN
;
diff --git a/src/gui/painting/qmatrix.cpp b/src/gui/painting/qmatrix.cpp
index 7c50b80..62addd3 100644
--- a/src/gui/painting/qmatrix.cpp
+++ b/src/gui/painting/qmatrix.cpp
@@ -197,6 +197,10 @@ QT_BEGIN_NAMESPACE
/*****************************************************************************
QMatrix member functions
*****************************************************************************/
+/*!
+ \fn QMatrix::QMatrix(Qt::Uninitialized)
+ \internal
+*/
/*!
Constructs an identity matrix.
diff --git a/src/gui/painting/qmatrix.h b/src/gui/painting/qmatrix.h
index e28c950..b2e5d70 100644
--- a/src/gui/painting/qmatrix.h
+++ b/src/gui/painting/qmatrix.h
@@ -61,6 +61,7 @@ class QVariant;
class Q_GUI_EXPORT QMatrix // 2D transform matrix
{
public:
+ inline explicit QMatrix(enum Qt::Uninitialized) {}
QMatrix();
QMatrix(qreal m11, qreal m12, qreal m21, qreal m22,
qreal dx, qreal dy);
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index 5b1ae07..85adb27 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -232,6 +232,11 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \fn QTransform::QTransform(Qt::Uninitialized)
+ \internal
+*/
+
+/*!
Constructs an identity matrix.
All elements are set to zero except \c m11 and \c m22 (specifying
diff --git a/src/gui/painting/qtransform.h b/src/gui/painting/qtransform.h
index bb04f7b..f99b0e7 100644
--- a/src/gui/painting/qtransform.h
+++ b/src/gui/painting/qtransform.h
@@ -71,6 +71,7 @@ public:
TxProject = 0x10
};
+ inline explicit QTransform(enum Qt::Uninitialized) : affine(Qt::Uninitialized) {}
QTransform();
QTransform(qreal h11, qreal h12, qreal h13,
qreal h21, qreal h22, qreal h23,
--
cgit v0.12
From 45c1b4f3d48dd8f7c33b259b6f73cf628798a23d Mon Sep 17 00:00:00 2001
From: Thierry Bastian
Date: Thu, 18 Jun 2009 15:16:17 +0200
Subject: QFontDialog: fixed the current font not being updated
This could happen when the list of styles depending on the font is
different from the font you selected before. It then is not updated
and the style of the font returned by the QFontDialog is wrong.
Task-number: 256466
---
src/gui/dialogs/qfontdialog.cpp | 11 -----------
tests/auto/qfontdialog/tst_qfontdialog.cpp | 26 ++++++++++++++++++++++++++
2 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp
index 582ba9b..e258cb5 100644
--- a/src/gui/dialogs/qfontdialog.cpp
+++ b/src/gui/dialogs/qfontdialog.cpp
@@ -501,8 +501,6 @@ void QFontDialogPrivate::updateFamilies()
{
Q_Q(QFontDialog);
- familyList->blockSignals(true);
-
enum match_t { MATCH_NONE = 0, MATCH_LAST_RESORT = 1, MATCH_APP = 2, MATCH_FAMILY = 3 };
QStringList familyNames = fdb.families(writingSystem);
@@ -556,7 +554,6 @@ void QFontDialogPrivate::updateFamilies()
&& familyList->hasFocus())
familyEdit->selectAll();
- familyList->blockSignals(false);
updateStyles();
}
@@ -567,9 +564,6 @@ void QFontDialogPrivate::updateFamilies()
void QFontDialogPrivate::updateStyles()
{
Q_Q(QFontDialog);
-
- styleList->blockSignals(true);
-
QStringList styles = fdb.styles(familyList->currentText());
styleList->model()->setStringList(styles);
@@ -613,8 +607,6 @@ void QFontDialogPrivate::updateStyles()
smoothScalable = fdb.isSmoothlyScalable(familyList->currentText(), styleList->currentText());
}
- styleList->blockSignals(false);
-
updateSizes();
}
@@ -628,8 +620,6 @@ void QFontDialogPrivate::updateSizes()
{
Q_Q(QFontDialog);
- sizeList->blockSignals(true);
-
if (!familyList->currentText().isEmpty()) {
QList sizes = fdb.pointSizes(familyList->currentText(), styleList->currentText());
@@ -659,7 +649,6 @@ void QFontDialogPrivate::updateSizes()
sizeEdit->clear();
}
- sizeList->blockSignals(false);
_q_updateSample();
}
diff --git a/tests/auto/qfontdialog/tst_qfontdialog.cpp b/tests/auto/qfontdialog/tst_qfontdialog.cpp
index c12c229..1444ee0 100644
--- a/tests/auto/qfontdialog/tst_qfontdialog.cpp
+++ b/tests/auto/qfontdialog/tst_qfontdialog.cpp
@@ -47,7 +47,9 @@
#include
#include
#include
+#include
#include "qfontdialog.h"
+#include
//TESTED_CLASS=
//TESTED_FILES=
@@ -74,6 +76,7 @@ public slots:
private slots:
void defaultOkButton();
void setFont();
+ void task256466_wrongStyle();
};
tst_QFontDialog::tst_QFontDialog()
@@ -151,6 +154,29 @@ void tst_QFontDialog::setFont()
}
+class FriendlyFontDialog : public QFontDialog
+{
+ friend tst_QFontDialog;
+ Q_DECLARE_PRIVATE(QFontDialog);
+};
+
+void tst_QFontDialog::task256466_wrongStyle()
+{
+ QFontDatabase fdb;
+ FriendlyFontDialog dialog;
+ QListView *familyList = reinterpret_cast(dialog.d_func()->familyList);
+ QListView *styleList = reinterpret_cast(dialog.d_func()->styleList);
+ QListView *sizeList = reinterpret_cast(dialog.d_func()->sizeList);
+ for (int i = 0; i < familyList->model()->rowCount(); ++i) {
+ QModelIndex currentFamily = familyList->model()->index(i, 0);
+ familyList->setCurrentIndex(currentFamily);
+ QCOMPARE(dialog.currentFont(), fdb.font(currentFamily.data().toString(),
+ styleList->currentIndex().data().toString(), sizeList->currentIndex().data().toInt()));
+ }
+}
+
+
+
QTEST_MAIN(tst_QFontDialog)
#include "tst_qfontdialog.moc"
--
cgit v0.12
From 8675a8915d09d0ca2091c606345a2d99f642949b Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Thu, 18 Jun 2009 15:33:14 +0200
Subject: QNAM HTTP code: Do not close TCP connection in all cases
This makes sure the keep-alive connections stay open even
if someone deletes a QNetworkReply which will then go all the
way down to removeReply(QHttpNetworkReply).
Should fix
http://lists.trolltech.com/pipermail/qt-interest/2009-June/007777.html
Reviewed-by: Peter Hartmann
---
src/network/access/qhttpnetworkconnection.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index f698c71..4c08794 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -937,7 +937,8 @@ void QHttpNetworkConnectionPrivate::removeReply(QHttpNetworkReply *reply)
for (int i = 0; i < channelCount; ++i) {
if (channels[i].reply == reply) {
channels[i].reply = 0;
- closeChannel(i);
+ if (reply->d_func()->connectionCloseEnabled())
+ closeChannel(i);
QMetaObject::invokeMethod(q, "_q_startNextRequest", Qt::QueuedConnection);
return;
}
--
cgit v0.12
From d7005487b789e2bc5a1400148b4f317142a381ac Mon Sep 17 00:00:00 2001
From: hjk
Date: Thu, 18 Jun 2009 15:36:05 +0200
Subject: Use enum Qt::Uninitialized instead of struct QString::Uninitialized
There is no BC issue as the changed constructor was introduced
recently and there is no released version of Qt using it.
Reviewed-by: mariusSO
---
src/corelib/tools/qstring.cpp | 2 +-
src/corelib/tools/qstring.h | 3 +--
src/corelib/tools/qstringbuilder.h | 2 +-
3 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 3b70f44..083253f 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -1019,7 +1019,7 @@ QString::QString(int size, QChar ch)
\internal
*/
-QString::QString(int size, Uninitialized)
+QString::QString(int size, enum Qt::Uninitialized)
{
d = (Data*) qMalloc(sizeof(Data)+size*sizeof(QChar));
d->ref = 1;
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index 4b2ceb7..67716b8 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -579,8 +579,7 @@ public:
bool isSimpleText() const { if (!d->clean) updateProperties(); return d->simpletext; }
bool isRightToLeft() const { if (!d->clean) updateProperties(); return d->righttoleft; }
- struct Uninitialized {};
- QString(int size, Uninitialized);
+ QString(int size, enum Qt::Uninitialized);
private:
#if defined(QT_NO_CAST_FROM_ASCII) && !defined(Q_NO_DECLARED_NOT_DEFINED)
diff --git a/src/corelib/tools/qstringbuilder.h b/src/corelib/tools/qstringbuilder.h
index 19f14b4..852c072 100644
--- a/src/corelib/tools/qstringbuilder.h
+++ b/src/corelib/tools/qstringbuilder.h
@@ -80,7 +80,7 @@ public:
operator QString() const
{
QString s(QConcatenable< QStringBuilder >::size(*this),
- QString::Uninitialized());
+ Qt::Uninitialized);
QChar *d = s.data();
QConcatenable< QStringBuilder >::appendTo(*this, d);
--
cgit v0.12
From e356eed2fa3d8e62085d6bd72caba9d11c40bacf Mon Sep 17 00:00:00 2001
From: hjk
Date: Thu, 18 Jun 2009 16:02:00 +0200
Subject: Don't initialize data that will be overwritten immediately.
Reviewed-by: mariusSO
---
src/corelib/codecs/qsimplecodec.cpp | 3 +--
src/corelib/codecs/qutfcodec.cpp | 3 +--
src/corelib/tools/qlocale.cpp | 6 ++----
src/corelib/tools/qstring.cpp | 18 ++++++------------
4 files changed, 10 insertions(+), 20 deletions(-)
diff --git a/src/corelib/codecs/qsimplecodec.cpp b/src/corelib/codecs/qsimplecodec.cpp
index 7a62d4e..aa7521d 100644
--- a/src/corelib/codecs/qsimplecodec.cpp
+++ b/src/corelib/codecs/qsimplecodec.cpp
@@ -653,8 +653,7 @@ QString QSimpleTextCodec::convertToUnicode(const char* chars, int len, Converter
const unsigned char * c = (const unsigned char *)chars;
- QString r;
- r.resize(len);
+ QString r(len, Qt::Uninitialized);
QChar* uc = r.data();
for (int i = 0; i < len; i++) {
diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp
index 12575f9..fe826ad 100644
--- a/src/corelib/codecs/qutfcodec.cpp
+++ b/src/corelib/codecs/qutfcodec.cpp
@@ -351,8 +351,7 @@ QString QUtf16Codec::convertToUnicode(const char *chars, int len, ConverterState
if (headerdone && endian == Detect)
endian = (QSysInfo::ByteOrder == QSysInfo::BigEndian) ? BE : LE;
- QString result;
- result.resize(len); // worst case
+ QString result(len, Qt::Uninitialized); // worst case
QChar *qch = (QChar *)result.unicode();
while (len--) {
if (half) {
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index 52fb8a2..cbdd32c 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -185,8 +185,7 @@ static QString languageToCode(QLocale::Language language)
const unsigned char *c = language_code_list + 3*(uint(language));
- QString code;
- code.resize(c[2] == 0 ? 2 : 3);
+ QString code(c[2] == 0 ? 2 : 3, Qt::Uninitialized);
code[0] = ushort(c[0]);
code[1] = ushort(c[1]);
@@ -201,8 +200,7 @@ static QString countryToCode(QLocale::Country country)
if (country == QLocale::AnyCountry)
return QString();
- QString code;
- code.resize(2);
+ QString code(2, Qt::Uninitialized);
const unsigned char *c = country_code_list + 2*(uint(country));
code[0] = ushort(c[0]);
code[1] = ushort(c[1]);
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 083253f..dba3d2a 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -3849,8 +3849,7 @@ QString QString::fromUtf8(const char *str, int size)
if (size < 0)
size = qstrlen(str);
- QString result;
- result.resize(size); // worst case
+ QString result(size, Qt::Uninitialized); // worst case
ushort *qch = result.d->data;
uint uc = 0;
uint min_uc = 0;
@@ -3965,8 +3964,7 @@ QString QString::fromUcs4(const uint *unicode, int size)
++size;
}
- QString s;
- s.resize(size*2); // worst case
+ QString s(size * 2, Qt::Uninitialized); // worst case
ushort *uc = s.d->data;
for (int i = 0; i < size; ++i) {
uint u = unicode[i];
@@ -4029,8 +4027,7 @@ QString QString::simplified() const
{
if (d->size == 0)
return *this;
- QString result;
- result.resize(d->size);
+ QString result(d->size, Qt::Uninitialized);
const QChar *from = (const QChar*) d->data;
const QChar *fromend = (const QChar*) from+d->size;
int outc=0;
@@ -4882,8 +4879,7 @@ QString QString::toLower() const
c = QChar::surrogateToUcs4(*(p - 1), c);
const QUnicodeTables::Properties *prop = qGetProp(c);
if (prop->lowerCaseDiff || prop->lowerCaseSpecial) {
- QString s;
- s.resize(d->size);
+ QString s(d->size, Qt::Uninitialized);
memcpy(s.d->data, d->data, (p - d->data)*sizeof(ushort));
ushort *pp = s.d->data + (p - d->data);
while (p < e) {
@@ -4974,8 +4970,7 @@ QString QString::toUpper() const
c = QChar::surrogateToUcs4(*(p - 1), c);
const QUnicodeTables::Properties *prop = qGetProp(c);
if (prop->upperCaseDiff || prop->upperCaseSpecial) {
- QString s;
- s.resize(d->size);
+ QString s(d->size, Qt::Uninitialized);
memcpy(s.d->data, d->data, (p - d->data)*sizeof(ushort));
ushort *pp = s.d->data + (p - d->data);
while (p < e) {
@@ -6272,8 +6267,7 @@ static QString replaceArgEscapes(const QString &s, const ArgEscapeData &d, int f
+ d.locale_occurrences
*qMax(abs_field_width, larg.length());
- QString result;
- result.resize(result_len);
+ QString result(result_len, Qt::Uninitialized);
QChar *result_buff = (QChar*) result.unicode();
QChar *rc = result_buff;
--
cgit v0.12
From 31ed96ef2c34429d61a5d9d1c1b7fe4fc17c708b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?=
Date: Thu, 18 Jun 2009 16:32:06 +0200
Subject: Fixed a problem with QSvgRenderer::animationDuration().
May have returned random values for SVGs without animation tags.
Task-number: 256073
Reviewed-by: Kim
---
src/svg/qsvghandler.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
index 9aa243b..d796938 100644
--- a/src/svg/qsvghandler.cpp
+++ b/src/svg/qsvghandler.cpp
@@ -3375,6 +3375,7 @@ void QSvgHandler::init()
{
m_doc = 0;
m_style = 0;
+ m_animEnd = 0;
m_defaultCoords = LT_PX;
m_defaultPen = QPen(Qt::black, 1, Qt::NoPen, Qt::FlatCap, Qt::SvgMiterJoin);
m_defaultPen.setMiterLimit(4);
--
cgit v0.12
From f9f08de9d41fd55d9c7d01578191ef5d4099c9e6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Nilsen?=
Date: Thu, 18 Jun 2009 17:04:46 +0200
Subject: Use QTransform more efficiently.
Reviewed-by: Samuel
---
src/gui/graphicsview/qgraphicsitem.cpp | 14 ++++++--------
src/gui/graphicsview/qgraphicsscene.cpp | 2 +-
src/gui/graphicsview/qgraphicsview.cpp | 18 ++++++++----------
src/gui/image/qimage.cpp | 12 ++++--------
src/gui/image/qpixmap.cpp | 13 +++++--------
src/gui/painting/qpaintengine.cpp | 3 +--
src/gui/painting/qpaintengineex.cpp | 3 +--
src/gui/painting/qpdf.cpp | 3 +--
src/gui/painting/qprintengine_win.cpp | 6 ++----
src/gui/styles/qcleanlooksstyle.cpp | 3 +--
src/gui/styles/qcommonstyle.cpp | 3 +--
src/gui/styles/qgtkstyle.cpp | 3 +--
src/gui/styles/qplastiquestyle.cpp | 3 +--
src/gui/text/qfontengine.cpp | 9 +++------
src/gui/widgets/qplaintextedit.cpp | 3 +--
src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 3 +--
src/opengl/qpaintengine_opengl.cpp | 9 +++------
17 files changed, 41 insertions(+), 69 deletions(-)
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 555f7b0..b2c04ca 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -989,7 +989,8 @@ void QGraphicsItemPrivate::childrenBoundingRectHelper(QTransform *x, QRectF *rec
bool hasPos = !childd->pos.isNull();
if (hasPos || childd->transformData) {
// COMBINE
- QTransform matrix = childd->transformToParent() * *x;
+ QTransform matrix = childd->transformToParent();
+ matrix *= *x;
*rect |= matrix.mapRect(child->boundingRect());
if (!childd->children.isEmpty())
childd->childrenBoundingRectHelper(&matrix, rect);
@@ -3204,8 +3205,7 @@ QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) c
QPointF mappedPoint = (untransformedAncestor->sceneTransform() * viewportTransform).map(QPointF(0, 0));
// COMBINE
- QTransform matrix;
- matrix.translate(mappedPoint.x(), mappedPoint.y());
+ QTransform matrix = QTransform::fromTranslate(mappedPoint.x(), mappedPoint.y());
if (untransformedAncestor->d_ptr->transformData)
matrix = untransformedAncestor->d_ptr->transformData->computedFullTransform(&matrix);
@@ -3303,9 +3303,8 @@ QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok) co
bool cousins = other != commonAncestor && this != commonAncestor;
if (cousins) {
bool good = false;
- QTransform thisToScene;
- QTransform otherToScene;
- thisToScene = itemTransform(commonAncestor, &good);
+ QTransform thisToScene = itemTransform(commonAncestor, &good);
+ QTransform otherToScene(Qt::Uninitialized);
if (good)
otherToScene = other->itemTransform(commonAncestor, &good);
if (!good) {
@@ -4150,8 +4149,7 @@ QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) c
p.end();
// Transform QRegion back to device space
- QTransform unscale;
- unscale.scale(1 / granularity, 1 / granularity);
+ QTransform unscale = QTransform::fromScale(1 / granularity, 1 / granularity);
QRegion r;
QBitmap colorMask = QBitmap::fromImage(mask.createMaskFromColor(0));
foreach (const QRect &rect, QRegion( colorMask ).rects()) {
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index d9d31ef..4d4c3b4 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -5073,7 +5073,7 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter *
// Calculate the full transform for this item.
bool wasDirtyParentSceneTransform = false;
bool dontDrawItem = true;
- QTransform transform;
+ QTransform transform(Qt::Uninitialized);
if (item) {
if (item->d_ptr->itemIsUntransformable()) {
transform = item->deviceTransform(viewTransform);
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index fb1a822..553d71c 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -1940,8 +1940,7 @@ void QGraphicsView::render(QPainter *painter, const QRectF &target, const QRect
itemList.clear();
// Setup painter matrix.
- QTransform moveMatrix;
- moveMatrix.translate(-d->horizontalScroll(), -d->verticalScroll());
+ QTransform moveMatrix = QTransform::fromTranslate(-d->horizontalScroll(), -d->verticalScroll());
QTransform painterMatrix = d->matrix * moveMatrix;
painterMatrix *= QTransform()
.translate(targetRect.left(), targetRect.top())
@@ -2292,9 +2291,9 @@ QPolygonF QGraphicsView::mapToScene(const QPolygon &polygon) const
QPainterPath QGraphicsView::mapToScene(const QPainterPath &path) const
{
Q_D(const QGraphicsView);
- QTransform moveMatrix;
- moveMatrix.translate(d->horizontalScroll(), d->verticalScroll());
- return (moveMatrix * d->matrix.inverted()).map(path);
+ QTransform matrix = QTransform::fromTranslate(d->horizontalScroll(), d->verticalScroll());
+ matrix *= d->matrix.inverted();
+ return matrix.map(path);
}
/*!
@@ -2388,9 +2387,9 @@ QPolygon QGraphicsView::mapFromScene(const QPolygonF &polygon) const
QPainterPath QGraphicsView::mapFromScene(const QPainterPath &path) const
{
Q_D(const QGraphicsView);
- QTransform moveMatrix;
- moveMatrix.translate(-d->horizontalScroll(), -d->verticalScroll());
- return (d->matrix * moveMatrix).map(path);
+ QTransform matrix = d->matrix;
+ matrix *= QTransform::fromTranslate(-d->horizontalScroll(), -d->verticalScroll());
+ return matrix.map(path);
}
/*!
@@ -3553,8 +3552,7 @@ QTransform QGraphicsView::transform() const
QTransform QGraphicsView::viewportTransform() const
{
Q_D(const QGraphicsView);
- QTransform moveMatrix;
- moveMatrix.translate(-d->horizontalScroll(), -d->verticalScroll());
+ QTransform moveMatrix = QTransform::fromTranslate(-d->horizontalScroll(), -d->verticalScroll());
return d->identityMatrix ? moveMatrix : d->matrix * moveMatrix;
}
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index ca2b782..fa1ce29 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -3951,10 +3951,8 @@ QImage QImage::scaled(const QSize& s, Qt::AspectRatioMode aspectMode, Qt::Transf
if (newSize == size())
return copy();
- QImage img;
- QTransform wm;
- wm.scale((qreal)newSize.width() / width(), (qreal)newSize.height() / height());
- img = transformed(wm, mode);
+ QTransform wm = QTransform::fromScale((qreal)newSize.width() / width(), (qreal)newSize.height() / height());
+ QImage img = transformed(wm, mode);
return img;
}
@@ -3981,9 +3979,8 @@ QImage QImage::scaledToWidth(int w, Qt::TransformationMode mode) const
if (w <= 0)
return QImage();
- QTransform wm;
qreal factor = (qreal) w / width();
- wm.scale(factor, factor);
+ QTransform wm = QTransform::fromScale(factor, factor);
return transformed(wm, mode);
}
@@ -4010,9 +4007,8 @@ QImage QImage::scaledToHeight(int h, Qt::TransformationMode mode) const
if (h <= 0)
return QImage();
- QTransform wm;
qreal factor = (qreal) h / height();
- wm.scale(factor, factor);
+ QTransform wm = QTransform::fromScale(factor, factor);
return transformed(wm, mode);
}
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 56c3a29..61be832 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -1446,10 +1446,9 @@ QPixmap QPixmap::scaled(const QSize& s, Qt::AspectRatioMode aspectMode, Qt::Tran
if (newSize == size())
return *this;
- QPixmap pix;
- QTransform wm;
- wm.scale((qreal)newSize.width() / width(), (qreal)newSize.height() / height());
- pix = transformed(wm, mode);
+ QTransform wm = QTransform::fromScale((qreal)newSize.width() / width(),
+ (qreal)newSize.height() / height());
+ QPixmap pix = transformed(wm, mode);
return pix;
}
@@ -1476,9 +1475,8 @@ QPixmap QPixmap::scaledToWidth(int w, Qt::TransformationMode mode) const
if (w <= 0)
return QPixmap();
- QTransform wm;
qreal factor = (qreal) w / width();
- wm.scale(factor, factor);
+ QTransform wm = QTransform::fromScale(factor, factor);
return transformed(wm, mode);
}
@@ -1505,9 +1503,8 @@ QPixmap QPixmap::scaledToHeight(int h, Qt::TransformationMode mode) const
if (h <= 0)
return QPixmap();
- QTransform wm;
qreal factor = (qreal) h / height();
- wm.scale(factor, factor);
+ QTransform wm = QTransform::fromScale(factor, factor);
return transformed(wm, mode);
}
diff --git a/src/gui/painting/qpaintengine.cpp b/src/gui/painting/qpaintengine.cpp
index 8e8485d..4fb1832 100644
--- a/src/gui/painting/qpaintengine.cpp
+++ b/src/gui/painting/qpaintengine.cpp
@@ -1008,8 +1008,7 @@ void QPaintEnginePrivate::drawBoxTextItem(const QPointF &p, const QTextItemInt &
const int size = qRound(ti.fontEngine->ascent());
QVarLengthArray positions;
QVarLengthArray glyphs;
- QTransform matrix;
- matrix.translate(p.x(), p.y() - size);
+ QTransform matrix = QTransform::fromTranslate(p.x(), p.y() - size);
ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions);
if (glyphs.size() == 0)
return;
diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp
index 5ebca47..a4db284 100644
--- a/src/gui/painting/qpaintengineex.cpp
+++ b/src/gui/painting/qpaintengineex.cpp
@@ -848,8 +848,7 @@ void QPaintEngineEx::drawImage(const QPointF &pos, const QImage &image)
void QPaintEngineEx::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s)
{
QBrush brush(state()->pen.color(), pixmap);
- QTransform xform;
- xform.translate(r.x() - s.x(), r.y() - s.y());
+ QTransform xform = QTransform::fromTranslate(r.x() - s.x(), r.y() - s.y());
brush.setTransform(xform);
qreal pts[] = { r.x(), r.y(),
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index c3452e1..664751a 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -1929,8 +1929,7 @@ void QPdfBaseEnginePrivate::drawTextItem(const QPointF &p, const QTextItemInt &t
QVarLengthArray glyphs;
QVarLengthArray positions;
- QTransform m;
- m.translate(p.x(), p.y());
+ QTransform m = QTransform::fromTranslate(p.x(), p.y());
ti.fontEngine->getGlyphPositions(ti.glyphs, m, ti.flags,
glyphs, positions);
if (glyphs.size() == 0)
diff --git a/src/gui/painting/qprintengine_win.cpp b/src/gui/painting/qprintengine_win.cpp
index 179927f..72faf7c 100644
--- a/src/gui/painting/qprintengine_win.cpp
+++ b/src/gui/painting/qprintengine_win.cpp
@@ -663,8 +663,7 @@ void QWin32PrintEngine::drawPixmap(const QRectF &targetRect,
qreal scaleX = 1.0f;
qreal scaleY = 1.0f;
- QTransform scaleMatrix;
- scaleMatrix.scale(r.width() / pixmap.width(), r.height() / pixmap.height());
+ QTransform scaleMatrix = QTransform::fromScale(r.width() / pixmap.width(), r.height() / pixmap.height());
QTransform adapted = QPixmap::trueMatrix(d->painterMatrix * scaleMatrix,
pixmap.width(), pixmap.height());
@@ -1875,8 +1874,7 @@ static void draw_text_item_win(const QPointF &_pos, const QTextItemInt &ti, HDC
QVarLengthArray positions;
QVarLengthArray _glyphs;
- QTransform matrix;
- matrix.translate(baseline_pos.x(), baseline_pos.y());
+ QTransform matrix = QTransform::fromTranslate(baseline_pos.x(), baseline_pos.y());
ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags,
_glyphs, positions);
if (_glyphs.size() == 0) {
diff --git a/src/gui/styles/qcleanlooksstyle.cpp b/src/gui/styles/qcleanlooksstyle.cpp
index 902ffdd..3855ba7 100644
--- a/src/gui/styles/qcleanlooksstyle.cpp
+++ b/src/gui/styles/qcleanlooksstyle.cpp
@@ -1738,8 +1738,7 @@ void QCleanlooksStyle::drawControl(ControlElement element, const QStyleOption *o
// same rendering code for both orientations.
if (vertical) {
rect = QRect(rect.left(), rect.top(), rect.height(), rect.width()); // flip width and height
- QTransform m;
- m.translate(rect.height()-1, -1.0);
+ QTransform m = QTransform::fromTranslate(rect.height()-1, -1.0);
m.rotate(90.0);
painter->setTransform(m, true);
}
diff --git a/src/gui/styles/qcommonstyle.cpp b/src/gui/styles/qcommonstyle.cpp
index 682e00b..c5c6973 100644
--- a/src/gui/styles/qcommonstyle.cpp
+++ b/src/gui/styles/qcommonstyle.cpp
@@ -1963,8 +1963,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
newRot = -90;
}
tr.setRect(0, 0, tr.height(), tr.width());
- QTransform m;
- m.translate(newX, newY);
+ QTransform m = QTransform::fromTranslate(newX, newY);
m.rotate(newRot);
p->setTransform(m, true);
}
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index a4a468d..8499811 100644
--- a/src/gui/styles/qgtkstyle.cpp
+++ b/src/gui/styles/qgtkstyle.cpp
@@ -2848,8 +2848,7 @@ void QGtkStyle::drawControl(ControlElement element,
if (vertical) {
rect.translate(xt, -yt * 2);
rect = QRect(rect.left(), rect.top(), rect.height(), rect.width()); // Flip width and height
- QTransform m;
- m.translate(rect.height(), 0);
+ QTransform m = QTransform::fromTranslate(rect.height(), 0);
m.rotate(90.0);
painter->setTransform(m);
}
diff --git a/src/gui/styles/qplastiquestyle.cpp b/src/gui/styles/qplastiquestyle.cpp
index 3935dc1..12aa679 100644
--- a/src/gui/styles/qplastiquestyle.cpp
+++ b/src/gui/styles/qplastiquestyle.cpp
@@ -2642,8 +2642,7 @@ void QPlastiqueStyle::drawControl(ControlElement element, const QStyleOption *op
// same rendering code for both orientations.
if (vertical) {
rect = QRect(rect.left(), rect.top(), rect.height(), rect.width()); // flip width and height
- QTransform m;
- m.translate(rect.height()-1, 0);
+ QTransform m = QTransform::fromTranslate(rect.height()-1, 0);
m.rotate(90.0);
painter->setTransform(m, true);
}
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index 25bdfd2..05b3695 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -422,8 +422,7 @@ void QFontEngine::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs,
QVarLengthArray positions;
QVarLengthArray positioned_glyphs;
- QTransform matrix;
- matrix.translate(x, y);
+ QTransform matrix = QTransform::fromTranslate(x, y);
getGlyphPositions(glyphs, matrix, flags, positioned_glyphs, positions);
addGlyphsToPath(positioned_glyphs.data(), positions.data(), positioned_glyphs.size(), path, flags);
}
@@ -1151,8 +1150,7 @@ void QFontEngineBox::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyp
QVarLengthArray positions;
QVarLengthArray positioned_glyphs;
- QTransform matrix;
- matrix.translate(x, y - _size);
+ QTransform matrix = QTransform::fromTranslate(x, y - _size);
getGlyphPositions(glyphs, matrix, flags, positioned_glyphs, positions);
QSize s(_size - 3, _size - 3);
@@ -1180,8 +1178,7 @@ void QFontEngineBox::draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt
QVarLengthArray positions;
QVarLengthArray glyphs;
- QTransform matrix;
- matrix.translate(x, y - _size);
+ QTransform matrix = QTransform::fromTranslate(x, y - _size);
ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions);
if (glyphs.size() == 0)
return;
diff --git a/src/gui/widgets/qplaintextedit.cpp b/src/gui/widgets/qplaintextedit.cpp
index d1978e3..efacd00 100644
--- a/src/gui/widgets/qplaintextedit.cpp
+++ b/src/gui/widgets/qplaintextedit.cpp
@@ -1725,8 +1725,7 @@ static void fillBackground(QPainter *p, const QRectF &rect, QBrush brush, QRectF
p->save();
if (brush.style() >= Qt::LinearGradientPattern && brush.style() <= Qt::ConicalGradientPattern) {
if (!gradientRect.isNull()) {
- QTransform m;
- m.translate(gradientRect.left(), gradientRect.top());
+ QTransform m = QTransform::fromTranslate(gradientRect.left(), gradientRect.top());
m.scale(gradientRect.width(), gradientRect.height());
brush.setTransform(m);
const_cast(brush.gradient())->setCoordinateMode(QGradient::LogicalMode);
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index 75d8a56..6ff0c53 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -1063,8 +1063,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(const QPointF &p, const QTextIte
QVarLengthArray positions;
QVarLengthArray glyphs;
- QTransform matrix;
- matrix.translate(p.x(), p.y());
+ QTransform matrix = QTransform::fromTranslate(p.x(), p.y());
ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions);
QFontEngineGlyphCache::Type glyphType = ti.fontEngine->glyphFormat >= 0
diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp
index b594f5b..e173a8d 100644
--- a/src/opengl/qpaintengine_opengl.cpp
+++ b/src/opengl/qpaintengine_opengl.cpp
@@ -4206,8 +4206,7 @@ void QOpenGLPaintEnginePrivate::drawImageAsPath(const QRectF &r, const QImage &i
qreal scaleX = r.width() / sr.width();
qreal scaleY = r.height() / sr.height();
- QTransform brush_matrix;
- brush_matrix.translate(r.left(), r.top());
+ QTransform brush_matrix = QTransform::fromTranslate(r.left(), r.top());
brush_matrix.scale(scaleX, scaleY);
brush_matrix.translate(-sr.left(), -sr.top());
@@ -4228,8 +4227,7 @@ void QOpenGLPaintEnginePrivate::drawTiledImageAsPath(const QRectF &r, const QIma
QBrush old_brush = cbrush;
QPointF old_brush_origin = brush_origin;
- QTransform brush_matrix;
- brush_matrix.translate(r.left(), r.top());
+ QTransform brush_matrix = QTransform::fromTranslate(r.left(), r.top());
brush_matrix.scale(sx, sy);
cbrush = QBrush(img);
@@ -4871,8 +4869,7 @@ void QOpenGLPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textIte
// add the glyphs used to the glyph texture cache
QVarLengthArray positions;
QVarLengthArray glyphs;
- QTransform matrix;
- matrix.translate(qRound(p.x()), qRound(p.y()));
+ QTransform matrix = QTransform::fromTranslate(qRound(p.x()), qRound(p.y()));
ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions);
// make sure the glyphs we want to draw are in the cache
--
cgit v0.12
From 8ef1e1fc0e4b741d2f85cc8c0df42858b9306ff8 Mon Sep 17 00:00:00 2001
From: Markus Goetz
Date: Thu, 18 Jun 2009 17:40:21 +0200
Subject: QNetworkAccessManager: Clarify doc about deleting QNetworkReply
Reviewed-by: Volker Hilsheimer
---
src/network/access/qnetworkaccessmanager.cpp | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index 8b44cd5..748d893 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -112,8 +112,6 @@ static void ensureInitialized()
are supplied that take a request and optional data, and each return a
QNetworkReply object. The returned object is used to obtain any data
returned in response to the corresponding request.
- the reply to is where most of the signals as well
- as the downloaded data are posted.
A simple download off the network could be accomplished with:
\snippet doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp 0
@@ -122,7 +120,8 @@ static void ensureInitialized()
takes is the QNetworkReply object containing the downloaded data
as well as meta-data (headers, etc.).
- \note The slot is responsible for deleting the object at that point.
+ \note After the request has finished, it is the responsibility of the user
+ to delete the QNetworkReply object at an appropriate time.
A more involved example, assuming the manager is already existent,
can be:
--
cgit v0.12
From cce29e63108827f551c74221d0aafbbba891dd51 Mon Sep 17 00:00:00 2001
From: hjk
Date: Thu, 18 Jun 2009 16:36:46 +0200
Subject: New constructor QByteArray::QByteArray(int size, enum
Qt::Uninitialized)
Contrary to the QByteArray::QByteArray(int size, enum Qt::Uninitialized)
constructor this does not initialize its data.
Reviewed-by: mariusSO
---
src/corelib/tools/qbytearray.cpp | 15 +++++++++++++++
src/corelib/tools/qbytearray.h | 3 ++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp
index 0c45776..142dfeb 100644
--- a/src/corelib/tools/qbytearray.cpp
+++ b/src/corelib/tools/qbytearray.cpp
@@ -1304,6 +1304,21 @@ QByteArray::QByteArray(int size, char ch)
}
/*!
+ \internal
+
+ Constructs a byte array of size \a size with uninitialized contents.
+*/
+
+QByteArray::QByteArray(int size, enum Qt::Uninitialized)
+{
+ d = static_cast(qMalloc(sizeof(Data)+size));
+ d->ref = 1;
+ d->alloc = d->size = size;
+ d->data = d->array;
+ d->array[size] = '\0';
+}
+
+/*!
Sets the size of the byte array to \a size bytes.
If \a size is greater than the current size, the byte array is
diff --git a/src/corelib/tools/qbytearray.h b/src/corelib/tools/qbytearray.h
index 5cd4d63..3cb10d7 100644
--- a/src/corelib/tools/qbytearray.h
+++ b/src/corelib/tools/qbytearray.h
@@ -42,8 +42,8 @@
#ifndef QBYTEARRAY_H
#define QBYTEARRAY_H
-#include
#include
+#include
#include
#include
@@ -127,6 +127,7 @@ public:
QByteArray(const char *);
QByteArray(const char *, int size);
QByteArray(int size, char c);
+ QByteArray(int size, enum Qt::Uninitialized);
inline QByteArray(const QByteArray &);
inline ~QByteArray();
--
cgit v0.12
From 9a5b40a011bd1b15a67d83564af55011761f8ad9 Mon Sep 17 00:00:00 2001
From: hjk
Date: Thu, 18 Jun 2009 17:01:09 +0200
Subject: Small speedup of construction of uninitialized QByteArrays
Directly construct uninitialized QByteArrays of required size
instead of default-constructing one and resizing it afterwards.
Reviewed-by: mariusSO
---
src/corelib/codecs/qfontlaocodec.cpp | 3 +--
src/corelib/codecs/qiconvcodec.cpp | 15 +++++----------
src/corelib/codecs/qisciicodec.cpp | 6 ++----
src/corelib/codecs/qlatincodec.cpp | 6 ++----
src/corelib/codecs/qsimplecodec.cpp | 3 +--
src/corelib/codecs/qtsciicodec.cpp | 3 +--
src/corelib/codecs/qutfcodec.cpp | 3 +--
src/corelib/tools/qbytearray.cpp | 15 +++++----------
8 files changed, 18 insertions(+), 36 deletions(-)
diff --git a/src/corelib/codecs/qfontlaocodec.cpp b/src/corelib/codecs/qfontlaocodec.cpp
index 85017e0..6dd87de 100644
--- a/src/corelib/codecs/qfontlaocodec.cpp
+++ b/src/corelib/codecs/qfontlaocodec.cpp
@@ -97,8 +97,7 @@ QString QFontLaoCodec::convertToUnicode(const char *, int, ConverterState *) con
QByteArray QFontLaoCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
{
- QByteArray rstring;
- rstring.resize(len);
+ QByteArray rstring(len, Qt::Uninitialized);
uchar *rdata = (uchar *) rstring.data();
const QChar *sdata = uc;
int i = 0;
diff --git a/src/corelib/codecs/qiconvcodec.cpp b/src/corelib/codecs/qiconvcodec.cpp
index 6b9c77b..1bf76ea 100644
--- a/src/corelib/codecs/qiconvcodec.cpp
+++ b/src/corelib/codecs/qiconvcodec.cpp
@@ -225,11 +225,10 @@ QString QIconvCodec::convertToUnicode(const char* chars, int len, ConverterState
char *inBytes = const_cast(chars);
#endif
- QByteArray in;
if (remainingCount) {
// we have to prepend the remaining bytes from the previous conversion
inBytesLeft += remainingCount;
- in.resize(inBytesLeft);
+ QByteArray in(inBytesLeft, Qt::Uninitialized);
inBytes = in.data();
memcpy(in.data(), remainingBuffer, remainingCount);
@@ -238,9 +237,8 @@ QString QIconvCodec::convertToUnicode(const char* chars, int len, ConverterState
remainingCount = 0;
}
- QByteArray ba;
size_t outBytesLeft = len * 2 + 2;
- ba.resize(outBytesLeft);
+ QByteArray ba(outBytesLeft, Qt::Uninitialized);
char *outBytes = ba.data();
do {
size_t ret = iconv(state->cd, &inBytes, &inBytesLeft, &outBytes, &outBytesLeft);
@@ -328,8 +326,7 @@ QByteArray QIconvCodec::convertFromUnicode(const QChar *uc, int len, ConverterSt
state = new IconvState(QIconvCodec::createIconv_t(0, UTF16));
if (state->cd != reinterpret_cast(-1)) {
size_t outBytesLeft = len + 3; // +3 for the BOM
- QByteArray ba;
- ba.resize(outBytesLeft);
+ QByteArray ba(outBytesLeft, Qt::Uninitialized);
outBytes = ba.data();
#if !defined(NO_BOM)
@@ -358,18 +355,16 @@ QByteArray QIconvCodec::convertFromUnicode(const QChar *uc, int len, ConverterSt
}
size_t outBytesLeft = len;
- QByteArray ba;
- ba.resize(outBytesLeft);
+ QByteArray ba(outBytesLeft, Qt::Uninitialized);
outBytes = ba.data();
// now feed iconv() the real data
inBytes = const_cast(reinterpret_cast(uc));
inBytesLeft = len * sizeof(QChar);
- QByteArray in;
if (convState && convState->remainingChars) {
// we have one surrogate char to be prepended
- in.resize(sizeof(QChar) + len);
+ QByteArray in(sizeof(QChar) + len, Qt::Uninitialized);
inBytes = in.data();
QChar remaining = convState->state_data[0];
diff --git a/src/corelib/codecs/qisciicodec.cpp b/src/corelib/codecs/qisciicodec.cpp
index a33fd0d..c054313 100644
--- a/src/corelib/codecs/qisciicodec.cpp
+++ b/src/corelib/codecs/qisciicodec.cpp
@@ -187,8 +187,7 @@ QByteArray QIsciiCodec::convertFromUnicode(const QChar *uc, int len, ConverterSt
}
int invalid = 0;
- QByteArray result;
- result.resize(2*len); //worst case
+ QByteArray result(2 * len, Qt::Uninitialized); //worst case
uchar *ch = reinterpret_cast(result.data());
@@ -250,8 +249,7 @@ QString QIsciiCodec::convertToUnicode(const char* chars, int len, ConverterState
halant = state->state_data[0];
}
- QString result;
- result.resize(len);
+ QString result(len, Qt::Uninitialized);
QChar *uc = result.data();
const int base = codecs[idx].base;
diff --git a/src/corelib/codecs/qlatincodec.cpp b/src/corelib/codecs/qlatincodec.cpp
index 176ae97..9113555 100644
--- a/src/corelib/codecs/qlatincodec.cpp
+++ b/src/corelib/codecs/qlatincodec.cpp
@@ -62,8 +62,7 @@ QString QLatin1Codec::convertToUnicode(const char *chars, int len, ConverterStat
QByteArray QLatin1Codec::convertFromUnicode(const QChar *ch, int len, ConverterState *state) const
{
const char replacement = (state && state->flags & ConvertInvalidToNull) ? 0 : '?';
- QByteArray r;
- r.resize(len);
+ QByteArray r(len, Qt::Uninitialized);
char *d = r.data();
int invalid = 0;
for (int i = 0; i < len; ++i) {
@@ -151,8 +150,7 @@ QString QLatin15Codec::convertToUnicode(const char* chars, int len, ConverterSta
QByteArray QLatin15Codec::convertFromUnicode(const QChar *in, int length, ConverterState *state) const
{
const char replacement = (state && state->flags & ConvertInvalidToNull) ? 0 : '?';
- QByteArray r;
- r.resize(length);
+ QByteArray r(length, Qt::Uninitialized);
char *d = r.data();
int invalid = 0;
for (int i = 0; i < length; ++i) {
diff --git a/src/corelib/codecs/qsimplecodec.cpp b/src/corelib/codecs/qsimplecodec.cpp
index aa7521d..0d14f67 100644
--- a/src/corelib/codecs/qsimplecodec.cpp
+++ b/src/corelib/codecs/qsimplecodec.cpp
@@ -676,8 +676,7 @@ QByteArray QSimpleTextCodec::convertFromUnicode(const QChar *in, int length, Con
delete tmp;
}
- QByteArray r;
- r.resize(length);
+ QByteArray r(length, Qt::Uninitialized);
int i = length;
int u;
const QChar* ucp = in;
diff --git a/src/corelib/codecs/qtsciicodec.cpp b/src/corelib/codecs/qtsciicodec.cpp
index 7f660bf..c24d32d 100644
--- a/src/corelib/codecs/qtsciicodec.cpp
+++ b/src/corelib/codecs/qtsciicodec.cpp
@@ -82,8 +82,7 @@ QByteArray QTsciiCodec::convertFromUnicode(const QChar *uc, int len, ConverterSt
}
int invalid = 0;
- QByteArray rstr;
- rstr.resize(len);
+ QByteArray rstr(len, Qt::Uninitialized);
uchar* cursor = (uchar*)rstr.data();
for (int i = 0; i < len; i++) {
QChar ch = uc[i];
diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp
index fe826ad..abae6f7 100644
--- a/src/corelib/codecs/qutfcodec.cpp
+++ b/src/corelib/codecs/qutfcodec.cpp
@@ -471,8 +471,7 @@ QByteArray QUtf32Codec::convertFromUnicode(const QChar *uc, int len, ConverterSt
endian = (QSysInfo::ByteOrder == QSysInfo::BigEndian) ? BE : LE;
}
- QByteArray d;
- d.resize(length);
+ QByteArray d(length, Qt::Uninitialized);
char *data = d.data();
if (!state || !(state->flags & IgnoreHeader)) {
if (endian == BE) {
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp
index 142dfeb..2d4010d 100644
--- a/src/corelib/tools/qbytearray.cpp
+++ b/src/corelib/tools/qbytearray.cpp
@@ -2992,8 +2992,7 @@ QByteArray QByteArray::simplified() const
{
if (d->size == 0)
return *this;
- QByteArray result;
- result.resize(d->size);
+ QByteArray result(d->size, Qt::Uninitialized);
const char *from = d->data;
const char *fromend = from + d->size;
int outc=0;
@@ -3444,8 +3443,7 @@ QByteArray QByteArray::toBase64() const
const char padchar = '=';
int padlen = 0;
- QByteArray tmp;
- tmp.resize(((d->size * 4) / 3) + 3);
+ QByteArray tmp((d->size * 4) / 3 + 3, Qt::Uninitialized);
int i = 0;
char *out = tmp.data();
@@ -3783,8 +3781,7 @@ QByteArray QByteArray::fromBase64(const QByteArray &base64)
{
unsigned int buf = 0;
int nbits = 0;
- QByteArray tmp;
- tmp.resize((base64.size() * 3) / 4);
+ QByteArray tmp((base64.size() * 3) / 4, Qt::Uninitialized);
int offset = 0;
for (int i = 0; i < base64.size(); ++i) {
@@ -3832,8 +3829,7 @@ QByteArray QByteArray::fromBase64(const QByteArray &base64)
*/
QByteArray QByteArray::fromHex(const QByteArray &hexEncoded)
{
- QByteArray res;
- res.resize((hexEncoded.size() + 1)/ 2);
+ QByteArray res((hexEncoded.size() + 1)/ 2, Qt::Uninitialized);
uchar *result = (uchar *)res.data() + res.size();
bool odd_digit = true;
@@ -3870,8 +3866,7 @@ QByteArray QByteArray::fromHex(const QByteArray &hexEncoded)
*/
QByteArray QByteArray::toHex() const
{
- QByteArray hex;
- hex.resize(d->size*2);
+ QByteArray hex(d->size * 2, Qt::Uninitialized);
char *hexData = hex.data();
const uchar *data = (const uchar *)d->data;
for (int i = 0; i < d->size; ++i) {
--
cgit v0.12
From 500a851bb363567effca6d78b14a755bf56e37f1 Mon Sep 17 00:00:00 2001
From: Thierry Bastian
Date: Fri, 19 Jun 2009 10:15:53 +0200
Subject: QMenu: fixed a bug that prevented from opening a context menu with
mid button and still be able to activate an action
Task-number: 253494
---
src/gui/widgets/qmenu.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
index 6bbf4e8..fc55a2c 100644
--- a/src/gui/widgets/qmenu.cpp
+++ b/src/gui/widgets/qmenu.cpp
@@ -1826,7 +1826,7 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
if (d->scroll && d->scroll->scrollFlags != QMenuPrivate::QMenuScroller::ScrollNone
&& !style()->styleHint(QStyle::SH_Menu_FillScreenWithScroll, 0, this)) {
int below_height = above_height + d->scroll->scrollOffset;
- for(int i2 = i; i2 < (int)d->actionList.count(); i2++)
+ for(int i2 = i; i2 < d->actionList.count(); i2++)
below_height += d->actionRects.value(d->actionList.at(i2)).height();
size.setHeight(below_height);
}
@@ -2263,7 +2263,7 @@ void QMenu::mouseReleaseEvent(QMouseEvent *e)
break;
}
}
- if (e->button() == Qt::LeftButton || (e->button() == Qt::RightButton && isContextMenu))
+ if (e->button() || isContextMenu)
#endif
d->activateAction(action, QAction::Trigger);
}
@@ -2746,7 +2746,7 @@ void QMenu::mouseMoveEvent(QMouseEvent *e)
if (d->hasHadMouse && !rect().contains(e->pos()))
d->setCurrentAction(0);
return;
- } else if(e->buttons() & (Qt::LeftButton | Qt::RightButton)) {
+ } else if(e->buttons()) {
d->mouseDown = this;
}
if (d->sloppyRegion.contains(e->pos())) {
--
cgit v0.12
From fbe0edc109a252efb6f2f53d04537c33f2e91fba Mon Sep 17 00:00:00 2001
From: Martin Smith
Date: Fri, 19 Jun 2009 12:44:56 +0200
Subject: Changed enum Qt::Uninitialized to enum Qt::Initialization
enum Qt::Uninitialized contains one value, which is also called
Uninitialized. Because the type and the value used the same name,
wherever the type Qt::Uninitialized was used in a function signature,
you had to include the enum keyword. But qdoc's preprocessor doesn't
like that, so you have to take the enum keyword out of the signatures.
But then the compiler complains because the type and the value look
the same. So I had to change the enum type name to Initialization, so
the compiler can distinguish it from the value name. And qdoc likes
that too.
---
doc/src/qnamespace.qdoc | 2 +-
src/corelib/global/qnamespace.h | 2 +-
src/corelib/tools/qbytearray.cpp | 2 +-
src/corelib/tools/qbytearray.h | 2 +-
src/corelib/tools/qstring.cpp | 11 +++++------
src/corelib/tools/qstring.h | 2 +-
src/gui/painting/qmatrix.cpp | 2 +-
src/gui/painting/qmatrix.h | 2 +-
src/gui/painting/qtransform.cpp | 2 +-
src/gui/painting/qtransform.h | 2 +-
10 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/doc/src/qnamespace.qdoc b/doc/src/qnamespace.qdoc
index 8a24764..7e655b6 100644
--- a/doc/src/qnamespace.qdoc
+++ b/doc/src/qnamespace.qdoc
@@ -2687,7 +2687,7 @@
*/
/*!
- \enum Uninitialized
+ \enum Qt::Initialization
\internal
*/
diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
index 398cd48..2023327 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -1543,7 +1543,7 @@ public:
TitleBarArea // For move
};
- enum Uninitialized {
+ enum Initialization {
Uninitialized
};
}
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp
index 2d4010d..5d3386e 100644
--- a/src/corelib/tools/qbytearray.cpp
+++ b/src/corelib/tools/qbytearray.cpp
@@ -1309,7 +1309,7 @@ QByteArray::QByteArray(int size, char ch)
Constructs a byte array of size \a size with uninitialized contents.
*/
-QByteArray::QByteArray(int size, enum Qt::Uninitialized)
+QByteArray::QByteArray(int size, Qt::Initialization)
{
d = static_cast(qMalloc(sizeof(Data)+size));
d->ref = 1;
diff --git a/src/corelib/tools/qbytearray.h b/src/corelib/tools/qbytearray.h
index 3cb10d7..e494ac1 100644
--- a/src/corelib/tools/qbytearray.h
+++ b/src/corelib/tools/qbytearray.h
@@ -127,7 +127,7 @@ public:
QByteArray(const char *);
QByteArray(const char *, int size);
QByteArray(int size, char c);
- QByteArray(int size, enum Qt::Uninitialized);
+ QByteArray(int size, Qt::Initialization);
inline QByteArray(const QByteArray &);
inline ~QByteArray();
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index dba3d2a..3ff263d 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -1012,14 +1012,13 @@ QString::QString(int size, QChar ch)
}
}
-/*!
- Constructs a string of the given \a size without initializing the
- characters. This is only used in \c QStringBuilder::toString().
+/*! \fn QString::QString(int size, Qt::Initialization)
+ \internal
- \internal
+ Constructs a string of the given \a size without initializing the
+ characters. This is only used in \c QStringBuilder::toString().
*/
-
-QString::QString(int size, enum Qt::Uninitialized)
+QString::QString(int size, Qt::Initialization)
{
d = (Data*) qMalloc(sizeof(Data)+size*sizeof(QChar));
d->ref = 1;
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index 67716b8..6bb0d8e 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -579,7 +579,7 @@ public:
bool isSimpleText() const { if (!d->clean) updateProperties(); return d->simpletext; }
bool isRightToLeft() const { if (!d->clean) updateProperties(); return d->righttoleft; }
- QString(int size, enum Qt::Uninitialized);
+ QString(int size, Qt::Initialization);
private:
#if defined(QT_NO_CAST_FROM_ASCII) && !defined(Q_NO_DECLARED_NOT_DEFINED)
diff --git a/src/gui/painting/qmatrix.cpp b/src/gui/painting/qmatrix.cpp
index 62addd3..221267f 100644
--- a/src/gui/painting/qmatrix.cpp
+++ b/src/gui/painting/qmatrix.cpp
@@ -198,7 +198,7 @@ QT_BEGIN_NAMESPACE
QMatrix member functions
*****************************************************************************/
/*!
- \fn QMatrix::QMatrix(Qt::Uninitialized)
+ \fn QMatrix::QMatrix(Qt::Initialization)
\internal
*/
diff --git a/src/gui/painting/qmatrix.h b/src/gui/painting/qmatrix.h
index b2e5d70..aa4177c 100644
--- a/src/gui/painting/qmatrix.h
+++ b/src/gui/painting/qmatrix.h
@@ -61,7 +61,7 @@ class QVariant;
class Q_GUI_EXPORT QMatrix // 2D transform matrix
{
public:
- inline explicit QMatrix(enum Qt::Uninitialized) {}
+ inline explicit QMatrix(Qt::Initialization) {}
QMatrix();
QMatrix(qreal m11, qreal m12, qreal m21, qreal m22,
qreal dx, qreal dy);
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index 85adb27..f0b2351 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -232,7 +232,7 @@ QT_BEGIN_NAMESPACE
*/
/*!
- \fn QTransform::QTransform(Qt::Uninitialized)
+ \fn QTransform::QTransform(Qt::Initialization)
\internal
*/
diff --git a/src/gui/painting/qtransform.h b/src/gui/painting/qtransform.h
index f99b0e7..291d35c 100644
--- a/src/gui/painting/qtransform.h
+++ b/src/gui/painting/qtransform.h
@@ -71,7 +71,7 @@ public:
TxProject = 0x10
};
- inline explicit QTransform(enum Qt::Uninitialized) : affine(Qt::Uninitialized) {}
+ inline explicit QTransform(Qt::Initialization) : affine(Qt::Uninitialized) {}
QTransform();
QTransform(qreal h11, qreal h12, qreal h13,
qreal h21, qreal h22, qreal h23,
--
cgit v0.12
From 933bddab13c2cec231beb623f77c7fbb0bbbccd5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Nilsen?=
Date: Fri, 19 Jun 2009 12:58:26 +0200
Subject: Refactor QGraphicsScene::drawSubtreeRecursive.
It's easier to read and maintain the code now. This version is also
faster than the old one and makes it easier to implement another
cut-off I'm working on.
All auto-tests still pass. Examples/demos run fine.
---
src/gui/graphicsview/qgraphicsscene.cpp | 301 ++++++++++++++++----------------
src/gui/graphicsview/qgraphicsscene_p.h | 17 +-
src/gui/graphicsview/qgraphicsview.cpp | 4 +-
3 files changed, 169 insertions(+), 153 deletions(-)
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 4d4c3b4..6c97886 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -1424,6 +1424,63 @@ QGraphicsWidget *QGraphicsScenePrivate::windowForItem(const QGraphicsItem *item)
return 0;
}
+QList QGraphicsScenePrivate::topLevelItemsInStackingOrder(const QTransform *const viewTransform,
+ QRegion *exposedRegion)
+{
+ if (indexMethod == QGraphicsScene::NoIndex || !exposedRegion) {
+ if (needSortTopLevelItems) {
+ needSortTopLevelItems = false;
+ qStableSort(topLevelItems.begin(), topLevelItems.end(), qt_notclosestLeaf);
+ }
+ return topLevelItems;
+ }
+
+ const QRectF exposedRect = exposedRegion->boundingRect().adjusted(-1, -1, 1, 1);
+ QRectF sceneRect;
+ QTransform invertedViewTransform(Qt::Uninitialized);
+ if (!viewTransform) {
+ sceneRect = exposedRect;
+ } else {
+ invertedViewTransform = viewTransform->inverted();
+ sceneRect = invertedViewTransform.mapRect(exposedRect);
+ }
+ if (!largestUntransformableItem.isEmpty()) {
+ // ### Nuke this when we move the indexing code into a separate
+ // class. All the largestUntransformableItem code should then go
+ // away, and the estimate function should return untransformable
+ // items as well.
+ QRectF untr = largestUntransformableItem;
+ QRectF ltri = !viewTransform ? untr : invertedViewTransform.mapRect(untr);
+ ltri.adjust(-untr.width(), -untr.height(), untr.width(), untr.height());
+ sceneRect.adjust(-ltri.width(), -ltri.height(), ltri.width(), ltri.height());
+ }
+
+ QList tmp = estimateItemsInRect(sceneRect);
+ for (int i = 0; i < tmp.size(); ++i)
+ tmp.at(i)->topLevelItem()->d_ptr->itemDiscovered = 1;
+
+ // Sort if the toplevel list is unsorted.
+ if (needSortTopLevelItems) {
+ needSortTopLevelItems = false;
+ qStableSort(topLevelItems.begin(), topLevelItems.end(), qt_notclosestLeaf);
+ }
+
+ QList tli;
+ for (int i = 0; i < topLevelItems.size(); ++i) {
+ // ### Investigate smarter ways. Looping through all top level
+ // items is not optimal. If the BSP tree is to have maximum
+ // effect, it should be possible to sort the subset of items
+ // quickly. We must use this approach for now, as it's the only
+ // current way to keep the stable sorting order (insertion order).
+ QGraphicsItem *item = topLevelItems.at(i);
+ if (item->d_ptr->itemDiscovered) {
+ item->d_ptr->itemDiscovered = 0;
+ tli << item;
+ }
+ }
+ return tli;
+}
+
void QGraphicsScenePrivate::recursive_items_helper(QGraphicsItem *item, QRectF rect,
QList *items,
const QTransform &parentTransform,
@@ -5045,165 +5102,118 @@ void QGraphicsScenePrivate::drawItemHelper(QGraphicsItem *item, QPainter *painte
}
void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter *painter,
- const QTransform &viewTransform,
+ const QTransform *const viewTransform,
QRegion *exposedRegion, QWidget *widget,
- QList *topLevelItems,
qreal parentOpacity)
{
- // Calculate opacity.
- qreal opacity;
- bool invisibleButChildIgnoresParentOpacity = false;
- if (item) {
- if (!item->d_ptr->visible)
- return;
- opacity = item->d_ptr->combineOpacityFromParent(parentOpacity);
- if (opacity == 0.0 && !(item->d_ptr->flags & QGraphicsItem::ItemDoesntPropagateOpacityToChildren)) {
- invisibleButChildIgnoresParentOpacity = !item->d_ptr->childrenCombineOpacity();
- if (!invisibleButChildIgnoresParentOpacity)
- return;
- }
- } else {
- opacity = parentOpacity;
- }
-
- // Item is invisible.
- bool hasContents = item && !(item->d_ptr->flags & QGraphicsItem::ItemHasNoContents);
- bool invisible = !hasContents || invisibleButChildIgnoresParentOpacity;
-
- // Calculate the full transform for this item.
- bool wasDirtyParentSceneTransform = false;
- bool dontDrawItem = true;
- QTransform transform(Qt::Uninitialized);
- if (item) {
- if (item->d_ptr->itemIsUntransformable()) {
- transform = item->deviceTransform(viewTransform);
- } else {
- if (item->d_ptr->dirtySceneTransform) {
- item->d_ptr->sceneTransform = item->d_ptr->parent ? item->d_ptr->parent->d_ptr->sceneTransform
- : QTransform();
- item->d_ptr->combineTransformFromParent(&item->d_ptr->sceneTransform);
- item->d_ptr->dirtySceneTransform = 0;
- wasDirtyParentSceneTransform = true;
- }
- transform = item->d_ptr->sceneTransform;
- transform *= viewTransform;
- }
-
- if (!invisible) {
- QRectF brect = item->boundingRect();
- // ### This does not take the clip into account.
- _q_adjustRect(&brect);
- QRect viewBoundingRect = transform.mapRect(brect).toRect();
- item->d_ptr->paintedViewBoundingRects.insert(widget, viewBoundingRect);
- viewBoundingRect.adjust(-1, -1, 1, 1);
- if (exposedRegion)
- dontDrawItem = !exposedRegion->intersects(viewBoundingRect);
- else
- dontDrawItem = viewBoundingRect.isEmpty();
- }
- }
+ Q_ASSERT(item);
- // Find and sort children.
- QList tmp;
- QList *children = 0;
- if (item) {
- children = &item->d_ptr->children;
- } else if (topLevelItems) {
- children = topLevelItems;
- } else if (indexMethod == QGraphicsScene::NoIndex || !exposedRegion) {
- children = &this->topLevelItems;
- } else {
- QRectF sceneRect = viewTransform.inverted().mapRect(QRectF(exposedRegion->boundingRect().adjusted(-1, -1, 1, 1)));
- if (!largestUntransformableItem.isEmpty()) {
- // ### Nuke this when we move the indexing code into a separate
- // class. All the largestUntransformableItem code should then go
- // away, and the estimate function should return untransformable
- // items as well.
- QRectF untr = largestUntransformableItem;
- QRectF ltri = viewTransform.inverted().mapRect(untr);
- ltri.adjust(-untr.width(), -untr.height(), untr.width(), untr.height());
- sceneRect.adjust(-ltri.width(), -ltri.height(), ltri.width(), ltri.height());
- }
- tmp = estimateItemsInRect(sceneRect);
+ if (!item->d_ptr->visible)
+ return;
- QList tli;
- for (int i = 0; i < tmp.size(); ++i)
- tmp.at(i)->topLevelItem()->d_ptr->itemDiscovered = 1;
+ const bool itemHasContents = !(item->d_ptr->flags & QGraphicsItem::ItemHasNoContents);
+ const bool itemHasChildren = !item->d_ptr->children.isEmpty();
+ if (!itemHasContents && !itemHasChildren)
+ return; // Item has neither contents nor children!(?)
- // Sort if the toplevel list is unsorted.
- if (needSortTopLevelItems) {
- needSortTopLevelItems = false;
- qStableSort(this->topLevelItems.begin(),
- this->topLevelItems.end(), qt_notclosestLeaf);
- }
+ const qreal opacity = item->d_ptr->combineOpacityFromParent(parentOpacity);
+ const bool itemIsFullyTransparent = (opacity < 0.0001);
+ if (itemIsFullyTransparent && (!itemHasChildren || item->d_ptr->childrenCombineOpacity()))
+ return;
- for (int i = 0; i < this->topLevelItems.size(); ++i) {
- // ### Investigate smarter ways. Looping through all top level
- // items is not optimal. If the BSP tree is to have maximum
- // effect, it should be possible to sort the subset of items
- // quickly. We must use this approach for now, as it's the only
- // current way to keep the stable sorting order (insertion order).
- QGraphicsItem *item = this->topLevelItems.at(i);
- if (item->d_ptr->itemDiscovered) {
- item->d_ptr->itemDiscovered = 0;
- tli << item;
+ QTransform transform(Qt::Uninitialized);
+ QTransform *transformPtr = 0;
+#define ENSURE_TRANSFORM_PTR \
+ if (!transformPtr) { \
+ Q_ASSERT(!itemIsUntransformable); \
+ if (viewTransform) { \
+ transform = item->d_ptr->sceneTransform; \
+ transform *= *viewTransform; \
+ transformPtr = &transform; \
+ } else { \
+ transformPtr = &item->d_ptr->sceneTransform; \
+ } \
+ }
+
+ // Update the item's scene transform if the item is transformable;
+ // otherwise calculate the full transform,
+ bool wasDirtyParentSceneTransform = false;
+ const bool itemIsUntransformable = item->d_ptr->itemIsUntransformable();
+ if (itemIsUntransformable) {
+ transform = item->deviceTransform(viewTransform ? *viewTransform : QTransform());
+ transformPtr = &transform;
+ } else if (item->d_ptr->dirtySceneTransform) {
+ item->d_ptr->sceneTransform = item->d_ptr->parent ? item->d_ptr->parent->d_ptr->sceneTransform
+ : QTransform();
+ item->d_ptr->combineTransformFromParent(&item->d_ptr->sceneTransform);
+ item->d_ptr->dirtySceneTransform = 0;
+ wasDirtyParentSceneTransform = true;
+ }
+
+ const bool itemClipsChildrenToShape = (item->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape);
+ bool drawItem = itemHasContents && !itemIsFullyTransparent;
+ if (drawItem) {
+ const QRectF brect = adjustedItemBoundingRect(item);
+ ENSURE_TRANSFORM_PTR
+ QRect viewBoundingRect = transformPtr->mapRect(brect).toRect();
+ item->d_ptr->paintedViewBoundingRects.insert(widget, viewBoundingRect);
+ viewBoundingRect.adjust(-1, -1, 1, 1);
+ drawItem = exposedRegion ? exposedRegion->intersects(viewBoundingRect) : !viewBoundingRect.isEmpty();
+ if (!drawItem) {
+ if (!itemHasChildren)
+ return;
+ if (itemClipsChildrenToShape) {
+ if (wasDirtyParentSceneTransform)
+ item->d_ptr->invalidateChildrenSceneTransform();
+ return;
}
}
+ } // else we know for sure this item has children we must process.
- tmp = tli;
- children = &tmp;
- }
-
- bool childClip = (item && (item->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape));
- bool dontDrawChildren = item && hasContents && dontDrawItem && childClip;
- childClip &= !dontDrawChildren && !children->isEmpty();
- if (item && invisible)
- dontDrawItem = true;
-
- // Clip children.
- if (childClip) {
- painter->save();
- painter->setWorldTransform(transform);
- painter->setClipPath(item->shape(), Qt::IntersectClip);
- }
-
- if (!dontDrawChildren) {
- if (item && item->d_ptr->needSortChildren) {
+ int i = 0;
+ if (itemHasChildren) {
+ if (item->d_ptr->needSortChildren) {
item->d_ptr->needSortChildren = 0;
- qStableSort(children->begin(), children->end(), qt_notclosestLeaf);
- } else if (!item && needSortTopLevelItems && children != &tmp) {
- needSortTopLevelItems = false;
- qStableSort(children->begin(), children->end(), qt_notclosestLeaf);
+ qStableSort(item->d_ptr->children.begin(), item->d_ptr->children.end(), qt_notclosestLeaf);
}
- }
- // Draw children behind
- int i = 0;
- if (!dontDrawChildren) {
- // ### Don't visit children that don't ignore parent opacity if this
- // item is invisible.
- for (i = 0; i < children->size(); ++i) {
- QGraphicsItem *child = children->at(i);
+ if (itemClipsChildrenToShape) {
+ painter->save();
+ ENSURE_TRANSFORM_PTR
+ painter->setWorldTransform(*transformPtr);
+ painter->setClipPath(item->shape(), Qt::IntersectClip);
+ }
+
+ // Draw children behind
+ for (i = 0; i < item->d_ptr->children.size(); ++i) {
+ QGraphicsItem *child = item->d_ptr->children.at(i);
if (wasDirtyParentSceneTransform)
child->d_ptr->dirtySceneTransform = 1;
if (!(child->d_ptr->flags & QGraphicsItem::ItemStacksBehindParent))
break;
- drawSubtreeRecursive(child, painter, viewTransform, exposedRegion, widget,
- 0, opacity);
+ if (itemIsFullyTransparent && !(child->d_ptr->flags & QGraphicsItem::ItemIgnoresParentOpacity))
+ continue;
+ drawSubtreeRecursive(child, painter, viewTransform, exposedRegion, widget, opacity);
}
}
// Draw item
- if (!dontDrawItem) {
- item->d_ptr->initStyleOption(&styleOptionTmp, transform, exposedRegion ? *exposedRegion : QRegion(), exposedRegion == 0);
-
- bool clipsToShape = (item->d_ptr->flags & QGraphicsItem::ItemClipsToShape);
- bool savePainter = clipsToShape || painterStateProtection;
+ if (drawItem) {
+ Q_ASSERT(!itemIsFullyTransparent);
+ Q_ASSERT(itemHasContents);
+ item->d_ptr->initStyleOption(&styleOptionTmp, transform, exposedRegion
+ ? *exposedRegion : QRegion(), exposedRegion == 0);
+
+ const bool itemClipsToShape = item->d_ptr->flags & QGraphicsItem::ItemClipsToShape;
+ const bool savePainter = itemClipsToShape || painterStateProtection;
if (savePainter)
painter->save();
- if (!childClip)
- painter->setWorldTransform(transform);
- if (clipsToShape)
+
+ if (!itemHasChildren || !itemClipsChildrenToShape) {
+ ENSURE_TRANSFORM_PTR
+ painter->setWorldTransform(*transformPtr);
+ }
+ if (itemClipsToShape)
painter->setClipPath(item->shape(), Qt::IntersectClip);
painter->setOpacity(opacity);
@@ -5217,22 +5227,19 @@ void QGraphicsScenePrivate::drawSubtreeRecursive(QGraphicsItem *item, QPainter *
}
// Draw children in front
- if (!dontDrawChildren) {
- // ### Don't visit children that don't ignore parent opacity if this
- // item is invisible.
- for (; i < children->size(); ++i) {
- QGraphicsItem *child = children->at(i);
+ if (itemHasChildren) {
+ for (; i < item->d_ptr->children.size(); ++i) {
+ QGraphicsItem *child = item->d_ptr->children.at(i);
if (wasDirtyParentSceneTransform)
child->d_ptr->dirtySceneTransform = 1;
- drawSubtreeRecursive(child, painter, viewTransform, exposedRegion,
- widget, 0, opacity);
+ if (itemIsFullyTransparent && !(child->d_ptr->flags & QGraphicsItem::ItemIgnoresParentOpacity))
+ continue;
+ drawSubtreeRecursive(child, painter, viewTransform, exposedRegion, widget, opacity);
}
- } else if (wasDirtyParentSceneTransform) {
- item->d_ptr->invalidateChildrenSceneTransform();
}
// Restore child clip
- if (childClip)
+ if (itemHasChildren && itemClipsChildrenToShape)
painter->restore();
}
@@ -5525,7 +5532,7 @@ void QGraphicsScene::drawItems(QPainter *painter,
if (!item->d_ptr->itemDiscovered) {
topLevelItems << item;
item->d_ptr->itemDiscovered = 1;
- d->drawSubtreeRecursive(item, painter, viewTransform, expose, widget);
+ d->drawSubtreeRecursive(item, painter, &viewTransform, expose, widget);
}
}
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h
index a8f6699..2f63e5b 100644
--- a/src/gui/graphicsview/qgraphicsscene_p.h
+++ b/src/gui/graphicsview/qgraphicsscene_p.h
@@ -206,6 +206,7 @@ public:
void mousePressEventHandler(QGraphicsSceneMouseEvent *mouseEvent);
QGraphicsWidget *windowForItem(const QGraphicsItem *item) const;
+ QList topLevelItemsInStackingOrder(const QTransform *const, QRegion *);
void recursive_items_helper(QGraphicsItem *item, QRectF rect, QList *items,
const QTransform &parentTransform, const QTransform &viewTransform,
Qt::ItemSelectionMode mode, Qt::SortOrder order, qreal parentOpacity = 1.0) const;
@@ -259,10 +260,18 @@ public:
void drawItemHelper(QGraphicsItem *item, QPainter *painter,
const QStyleOptionGraphicsItem *option, QWidget *widget,
bool painterStateProtection);
-
- void drawSubtreeRecursive(QGraphicsItem *item, QPainter *painter, const QTransform &viewTransform,
- QRegion *exposedRegion, QWidget *widget,
- QList *topLevelItems = 0, qreal parentOpacity = qreal(1.0));
+
+ inline void drawItems(QPainter *painter, const QTransform *const viewTransform,
+ QRegion *exposedRegion, QWidget *widget)
+ {
+ const QList tli = topLevelItemsInStackingOrder(viewTransform, exposedRegion);
+ for (int i = 0; i < tli.size(); ++i)
+ drawSubtreeRecursive(tli.at(i), painter, viewTransform, exposedRegion, widget);
+ return;
+ }
+
+ void drawSubtreeRecursive(QGraphicsItem *item, QPainter *painter, const QTransform *const,
+ QRegion *exposedRegion, QWidget *widget, qreal parentOpacity = qreal(1.0));
void markDirty(QGraphicsItem *item, const QRectF &rect = QRectF(), bool invalidateChildren = false,
bool maybeDirtyClipPath = false, bool force = false, bool ignoreOpacity = false,
bool removingItemFromScene = false);
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 553d71c..1ba87ec 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -3298,8 +3298,8 @@ void QGraphicsView::paintEvent(QPaintEvent *event)
// Items
if (!(d->optimizationFlags & IndirectPainting)) {
- d->scene->d_func()->drawSubtreeRecursive(0, &painter, viewTransform, &d->exposedRegion,
- viewport(), 0);
+ d->scene->d_func()->drawItems(&painter, viewTransformed ? &viewTransform : 0,
+ &d->exposedRegion, viewport());
} else {
// Find all exposed items
bool allItems = false;
--
cgit v0.12
From 3772d559f7e19189ceeac1094f7526176681ba1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Nilsen?=
Date: Fri, 19 Jun 2009 14:50:48 +0200
Subject: Small optimization to
QGraphicsItemPrivate::combineTransform(To|From)Parent.
Every cycle counts :)
---
src/gui/graphicsview/qgraphicsitem.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index b2c04ca..a304027 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -797,7 +797,7 @@ QPointF QGraphicsItemPrivate::genericMapFromScene(const QPointF &pos,
void QGraphicsItemPrivate::combineTransformToParent(QTransform *x, const QTransform *viewTransform) const
{
// COMBINE
- if (itemIsUntransformable() && viewTransform) {
+ if (viewTransform && itemIsUntransformable()) {
*x = q_ptr->deviceTransform(*viewTransform);
} else {
if (transformData)
@@ -819,7 +819,7 @@ void QGraphicsItemPrivate::combineTransformToParent(QTransform *x, const QTransf
void QGraphicsItemPrivate::combineTransformFromParent(QTransform *x, const QTransform *viewTransform) const
{
// COMBINE
- if (itemIsUntransformable() && viewTransform) {
+ if (viewTransform && itemIsUntransformable()) {
*x = q_ptr->deviceTransform(*viewTransform);
} else {
x->translate(pos.x(), pos.y());
--
cgit v0.12
From a60259b676743f078178185a6c587381bd957d3c Mon Sep 17 00:00:00 2001
From: Joerg Bornemann
Date: Fri, 19 Jun 2009 14:51:52 +0200
Subject: Docs: remove reference to nonexistent file
Reviewed-by: David Boddie
---
tools/qdoc3/test/qt-build-docs.qdocconf | 1 -
tools/qdoc3/test/qt.qdocconf | 1 -
2 files changed, 2 deletions(-)
diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf
index a05786b..7a266ef 100644
--- a/tools/qdoc3/test/qt-build-docs.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs.qdocconf
@@ -29,7 +29,6 @@ qhp.Qt.indexRoot =
# See also extraimages.HTML
qhp.Qt.extraFiles = classic.css \
images/qt-logo.png \
- images/trolltech-logo \
images/taskmenuextension-example.png \
images/coloreditorfactoryimage.png \
images/dynamiclayouts-example.png \
diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf
index 964869c..d366d1d 100644
--- a/tools/qdoc3/test/qt.qdocconf
+++ b/tools/qdoc3/test/qt.qdocconf
@@ -31,7 +31,6 @@ qhp.Qt.indexRoot =
# See also extraimages.HTML
qhp.Qt.extraFiles = classic.css \
images/qt-logo.png \
- images/trolltech-logo \
images/taskmenuextension-example.png \
images/coloreditorfactoryimage.png \
images/dynamiclayouts-example.png \
--
cgit v0.12
From 96b4fc79fd4a7b4d9cdae924ccec5643e7a49cf0 Mon Sep 17 00:00:00 2001
From: Simon Hausmann
Date: Fri, 19 Jun 2009 17:26:02 +0200
Subject: Updated WebKit from /home/shausman/src/webkit/trunk to
origin/qtwebkit-4.5 ( bd7262be70c02564d655e4f2aaf79cd8302a937f )
Changes in WebKit since the last update:
++ b/JavaScriptCore/ChangeLog
2009-02-02 Darin Adler
Reviewed by Dave Hyatt.
Bug 23676: Speed up uses of reserveCapacity on new vectors by adding a new reserveInitialCapacity
https://bugs.webkit.org/show_bug.cgi?id=23676
* API/JSObjectRef.cpp:
(JSObjectCopyPropertyNames): Use reserveInitialCapacity.
* parser/Lexer.cpp:
(JSC::Lexer::Lexer): Ditto.
(JSC::Lexer::clear): Ditto.
* wtf/Vector.h: Added reserveInitialCapacity, a more efficient version of
reserveCapacity for use when the vector is brand new (still size 0 with no
capacity other than the inline capacity).
2009-03-19 Geoffrey Garen
Reviewed by Oliver Hunt.
Fixed -- a little bit of hardening in the Collector.
SunSpider reports no change. I also verified in the disassembly that
we end up with a single compare to constant.
* runtime/Collector.cpp:
(JSC::Heap::heapAllocate):
++ b/LayoutTests/ChangeLog
2009-05-21 Geoffrey Garen
Reviewed by Sam Weinig.
Tests for | https://bugs.webkit.org/show_bug.cgi?id=25907
Incorrect URL returned to the DOM while the user drags a file
* http/tests/local/drag-over-remote-content-expected.txt: Added.
* http/tests/local/drag-over-remote-content.html: Added.
* http/tests/security/drag-over-remote-content-iframe-expected.txt: Added.
* http/tests/security/drag-over-remote-content-iframe.html: Added.
2009-04-14 Eric Carlson
Reviewed by Alexey Proskuryakov.
Fix