summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-02-09 16:58:37 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-02-09 16:58:37 (GMT)
commitecf66e5825d186f57468c6bf682dce32c0cd96d7 (patch)
treee945d43208b1e166b27772662f5542384b99c567 /tools
parente1b4ac7eec876d80dc2984f192baa6295b027793 (diff)
parentf38f61df31b708e1f4e50c5fdcc30099f9a1fe8f (diff)
downloadQt-ecf66e5825d186f57468c6bf682dce32c0cd96d7.zip
Qt-ecf66e5825d186f57468c6bf682dce32c0cd96d7.tar.gz
Qt-ecf66e5825d186f57468c6bf682dce32c0cd96d7.tar.bz2
Merge branch '4.6' of scm.dev.nokia.troll.no:qt/berlin-staging-1 into 4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/berlin-staging-1: Fix warnings ~QX11PixmapData(): QPixmap objects must be destroyed.. fix a few mistakes in German translation Fix Float Conversion in xmlpatterns generate code which does not break QT_USE_FAST_CONCATENATION with old gcc drastically improve load time of TS files
Diffstat (limited to 'tools')
-rw-r--r--tools/designer/src/lib/shared/actionrepository.cpp21
-rw-r--r--tools/designer/src/lib/shared/actionrepository_p.h9
-rw-r--r--tools/designer/src/lib/shared/iconloader.cpp3
-rw-r--r--tools/designer/src/lib/shared/qdesigner_menu.cpp11
-rw-r--r--tools/designer/src/lib/shared/qdesigner_menu_p.h2
-rw-r--r--tools/linguist/linguist/messagemodel.cpp48
-rw-r--r--tools/linguist/linguist/messagemodel.h2
7 files changed, 57 insertions, 39 deletions
diff --git a/tools/designer/src/lib/shared/actionrepository.cpp b/tools/designer/src/lib/shared/actionrepository.cpp
index e3ff2c1..1076ff4 100644
--- a/tools/designer/src/lib/shared/actionrepository.cpp
+++ b/tools/designer/src/lib/shared/actionrepository.cpp
@@ -77,18 +77,12 @@ static inline QAction *actionOfItem(const QStandardItem* item)
return qvariant_cast<QAction*>(item->data(qdesigner_internal::ActionModel::ActionRole));
}
-static QIcon fixActionIcon(const QIcon &icon)
-{
- if (icon.isNull())
- return qdesigner_internal::emptyIcon();
- return icon;
-}
-
namespace qdesigner_internal {
// ----------- ActionModel
ActionModel::ActionModel(QWidget *parent ) :
QStandardItemModel(parent),
+ m_emptyIcon(emptyIcon()),
m_core(0)
{
QStringList headers;
@@ -127,7 +121,7 @@ void ActionModel::update(int row)
for (int i = 0; i < NumColumns; i++)
list += item(row, i);
- setItems(m_core, actionOfItem(list.front()), list);
+ setItems(m_core, actionOfItem(list.front()), m_emptyIcon, list);
}
void ActionModel::remove(int row)
@@ -150,7 +144,7 @@ QModelIndex ActionModel::addAction(QAction *action)
item->setFlags(flags);
items.push_back(item);
}
- setItems(m_core, action, items);
+ setItems(m_core, action, m_emptyIcon, items);
appendRow(items);
return indexFromItem(items.front());
}
@@ -185,7 +179,9 @@ PropertySheetKeySequenceValue ActionModel::actionShortCut(const QDesignerPropert
return qvariant_cast<PropertySheetKeySequenceValue>(sheet->property(index));
}
-void ActionModel::setItems(QDesignerFormEditorInterface *core, QAction *action, QStandardItemList &sl)
+void ActionModel::setItems(QDesignerFormEditorInterface *core, QAction *action,
+ const QIcon &defaultIcon,
+ QStandardItemList &sl)
{
// Tooltip, mostly for icon view mode
@@ -200,7 +196,10 @@ void ActionModel::setItems(QDesignerFormEditorInterface *core, QAction *action,
QStandardItem *item = sl[NameColumn];
item->setText(action->objectName());
- item->setIcon(fixActionIcon(action->icon()));
+ QIcon icon = action->icon();
+ if (icon.isNull())
+ icon = defaultIcon;
+ item->setIcon(icon);
item->setToolTip(firstTooltip);
item->setWhatsThis(firstTooltip);
// Used
diff --git a/tools/designer/src/lib/shared/actionrepository_p.h b/tools/designer/src/lib/shared/actionrepository_p.h
index 65adc5d..6e17e7b 100644
--- a/tools/designer/src/lib/shared/actionrepository_p.h
+++ b/tools/designer/src/lib/shared/actionrepository_p.h
@@ -59,6 +59,7 @@
#include <QtGui/QTreeView>
#include <QtGui/QListView>
#include <QtGui/QStackedWidget>
+#include <QtGui/QIcon>
QT_BEGIN_NAMESPACE
@@ -110,10 +111,14 @@ signals:
void resourceImageDropped(const QString &path, QAction *action);
private:
+ typedef QList<QStandardItem *> QStandardItemList;
+
void initializeHeaders();
+ static void setItems(QDesignerFormEditorInterface *core, QAction *a,
+ const QIcon &defaultIcon,
+ QStandardItemList &sl);
- typedef QList<QStandardItem *> QStandardItemList;
- static void setItems(QDesignerFormEditorInterface *core, QAction *a, QStandardItemList &sl);
+ const QIcon m_emptyIcon;
QDesignerFormEditorInterface *m_core;
};
diff --git a/tools/designer/src/lib/shared/iconloader.cpp b/tools/designer/src/lib/shared/iconloader.cpp
index df0bb7e..ed312b8 100644
--- a/tools/designer/src/lib/shared/iconloader.cpp
+++ b/tools/designer/src/lib/shared/iconloader.cpp
@@ -70,8 +70,7 @@ QDESIGNER_SHARED_EXPORT QIcon createIconSet(const QString &name)
QDESIGNER_SHARED_EXPORT QIcon emptyIcon()
{
- static const QIcon empty_icon(QLatin1String(":/trolltech/formeditor/images/emptyicon.png"));
- return empty_icon;
+ return QIcon(QLatin1String(":/trolltech/formeditor/images/emptyicon.png"));
}
} // namespace qdesigner_internal
diff --git a/tools/designer/src/lib/shared/qdesigner_menu.cpp b/tools/designer/src/lib/shared/qdesigner_menu.cpp
index c83abad..ba512e4 100644
--- a/tools/designer/src/lib/shared/qdesigner_menu.cpp
+++ b/tools/designer/src/lib/shared/qdesigner_menu.cpp
@@ -88,6 +88,7 @@ static inline void extendClickableArea(QRect *subMenuRect, Qt::LayoutDirection d
QDesignerMenu::QDesignerMenu(QWidget *parent) :
QMenu(parent),
+ m_subMenuPixmap(QPixmap(QLatin1String(":/trolltech/formeditor/images/submenu.png"))),
m_currentIndex(0),
m_addItem(new SpecialMenuAction(this)),
m_addSeparator(new SpecialMenuAction(this)),
@@ -550,11 +551,10 @@ void QDesignerMenu::deleteAction(QAction *a)
QRect QDesignerMenu::subMenuPixmapRect(QAction *action) const
{
- static const QPixmap pm(QLatin1String(":/trolltech/formeditor/images/submenu.png"));
const QRect g = actionGeometry(action);
- const int x = layoutDirection() == Qt::LeftToRight ? (g.right() - pm.width() - 2) : 2;
- const int y = g.top() + (g.height() - pm.height())/2 + 1;
- return QRect(x, y, pm.width(), pm.height());
+ const int x = layoutDirection() == Qt::LeftToRight ? (g.right() - m_subMenuPixmap.width() - 2) : 2;
+ const int y = g.top() + (g.height() - m_subMenuPixmap.height())/2 + 1;
+ return QRect(x, y, m_subMenuPixmap.width(), m_subMenuPixmap.height());
}
bool QDesignerMenu::hasSubMenuPixmap(QAction *action) const
@@ -591,8 +591,7 @@ void QDesignerMenu::paintEvent(QPaintEvent *event)
p.fillRect(g, lg);
} else if (hasSubMenuPixmap(a)) {
- static const QPixmap pm(QLatin1String(":/trolltech/formeditor/images/submenu.png"));
- p.drawPixmap(subMenuPixmapRect(a).topLeft(), pm);
+ p.drawPixmap(subMenuPixmapRect(a).topLeft(), m_subMenuPixmap);
}
}
diff --git a/tools/designer/src/lib/shared/qdesigner_menu_p.h b/tools/designer/src/lib/shared/qdesigner_menu_p.h
index 9c9a311..ae1e0e7 100644
--- a/tools/designer/src/lib/shared/qdesigner_menu_p.h
+++ b/tools/designer/src/lib/shared/qdesigner_menu_p.h
@@ -57,6 +57,7 @@
#include <QtGui/QAction>
#include <QtGui/QMenu>
+#include <QtGui/QPixmap>
#include <QtCore/QHash>
QT_BEGIN_NAMESPACE
@@ -183,6 +184,7 @@ protected:
private:
bool hideSubMenuOnCursorKey();
bool showSubMenuOnCursorKey();
+ const QPixmap m_subMenuPixmap;
QPoint m_startPosition;
int m_currentIndex;
diff --git a/tools/linguist/linguist/messagemodel.cpp b/tools/linguist/linguist/messagemodel.cpp
index 6572059..4e2b473 100644
--- a/tools/linguist/linguist/messagemodel.cpp
+++ b/tools/linguist/linguist/messagemodel.cpp
@@ -584,12 +584,16 @@ void MultiContextItem::putMessageItem(int pos, MessageItem *m)
m_messageLists.last()[pos] = m;
}
-void MultiContextItem::appendMessageItem(MessageItem *m)
+void MultiContextItem::appendMessageItems(const QList<MessageItem *> &m)
{
+ QList<MessageItem *> nullItems = m; // Basically, just a reservation
+ for (int i = 0; i < nullItems.count(); ++i)
+ nullItems[i] = 0;
for (int i = 0; i < m_messageLists.count() - 1; ++i)
- m_messageLists[i].append(0);
- m_messageLists.last().append(m);
- m_multiMessageList.append(MultiMessageItem(m));
+ m_messageLists[i] += nullItems;
+ m_messageLists.last() += m;
+ foreach (MessageItem *mi, m)
+ m_multiMessageList.append(MultiMessageItem(mi));
}
void MultiContextItem::removeMultiMessageItem(int pos)
@@ -710,33 +714,43 @@ void MultiDataModel::append(DataModel *dm, bool readWrite)
m_msgModel->endInsertColumns();
}
m_msgModel->endInsertColumns();
+ int appendedContexts = 0;
for (int i = 0; i < dm->contextCount(); ++i) {
ContextItem *c = dm->contextItem(i);
int mcx = findContextIndex(c->context());
if (mcx >= 0) {
MultiContextItem *mc = multiContextItem(mcx);
mc->assignLastModel(c, readWrite);
+ QList<MessageItem *> appendItems;
for (int j = 0; j < c->messageCount(); ++j) {
MessageItem *m = c->messageItem(j);
int msgIdx = mc->findMessage(m->text(), m->comment());
- if (msgIdx >= 0) {
+ if (msgIdx >= 0)
mc->putMessageItem(msgIdx, m);
- } else {
- int msgCnt = mc->messageCount();
- m_msgModel->beginInsertRows(m_msgModel->createIndex(mcx, 0, 0), msgCnt, msgCnt);
- mc->appendMessageItem(m);
- m_msgModel->endInsertRows();
- ++m_numMessages;
- }
+ else
+ appendItems << m;
+ }
+ if (!appendItems.isEmpty()) {
+ int msgCnt = mc->messageCount();
+ m_msgModel->beginInsertRows(m_msgModel->createIndex(mcx, 0, 0),
+ msgCnt, msgCnt + appendItems.size() - 1);
+ mc->appendMessageItems(appendItems);
+ m_msgModel->endInsertRows();
+ m_numMessages += appendItems.size();
}
} else {
- MultiContextItem item(modelCount() - 1, c, readWrite);
- m_msgModel->beginInsertRows(QModelIndex(), contextCount(), contextCount());
- m_multiContextList.append(item);
- m_msgModel->endInsertRows();
- m_numMessages += item.messageCount();
+ m_multiContextList << MultiContextItem(modelCount() - 1, c, readWrite);
+ m_numMessages += c->messageCount();
+ ++appendedContexts;
}
}
+ if (appendedContexts) {
+ // Do that en block to avoid itemview inefficiency. It doesn't hurt that we
+ // announce the availability of the data "long" after it was actually added.
+ m_msgModel->beginInsertRows(QModelIndex(),
+ contextCount() - appendedContexts, contextCount() - 1);
+ m_msgModel->endInsertRows();
+ }
dm->setWritable(readWrite);
updateCountsOnAdd(modelCount() - 1, readWrite);
connect(dm, SIGNAL(modifiedChanged()), SLOT(onModifiedChanged()));
diff --git a/tools/linguist/linguist/messagemodel.h b/tools/linguist/linguist/messagemodel.h
index 3e0107e..7d98873 100644
--- a/tools/linguist/linguist/messagemodel.h
+++ b/tools/linguist/linguist/messagemodel.h
@@ -332,7 +332,7 @@ private:
void removeModel(int pos);
void moveModel(int oldPos, int newPos); // newPos is *before* removing at oldPos
void putMessageItem(int pos, MessageItem *m);
- void appendMessageItem(MessageItem *m);
+ void appendMessageItems(const QList<MessageItem *> &m);
void removeMultiMessageItem(int pos);
void incrementFinishedCount() { ++m_finishedCount; }
void decrementFinishedCount() { --m_finishedCount; }