summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-02-10 06:17:37 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-02-10 06:17:37 (GMT)
commitabb425e3db6c20c5271788cb1ec4e1fe37b9ea5b (patch)
tree86b68eb00cd024dc7e6293dcf8329f300c83af48 /src/gui
parentfd3b8a0e008dd00e363ac173a2cfcabcab31c454 (diff)
parent27b71c5b0b432235da1931ae830e9ad52ee450e7 (diff)
downloadQt-abb425e3db6c20c5271788cb1ec4e1fe37b9ea5b.zip
Qt-abb425e3db6c20c5271788cb1ec4e1fe37b9ea5b.tar.gz
Qt-abb425e3db6c20c5271788cb1ec4e1fe37b9ea5b.tar.bz2
Merge branch 'qt-master-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration into master-integration
* 'qt-master-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration: (182 commits) Fixes XPASS Revert part of commit 7c1ab9b6a8 Fixed wrong casing of a Symbian library. Fixed wrong static library extension on Symbian. Fixed library casing. Remove dependencies to pre-Symbian3 platforms from Symbian3 packages My changes 4.7.2 Don't accept input methods when a TextEdit or TextInput is read only. Correct error message On windows xp using a higher port makes the declarativedebug* tests work Correct assert Fix qt.sis platform dependencies for Symbian^3 builds. Fix few QFileDialog static method issues in Symbian^3 Update QDeclarative DEF files for Symbian Export QDeclarativeRefCount so that symbian compiles. Make Flickable's wheel handling more like QAbstractScrollArea. Changing header or footer failed to delete the previous. Avoid index-out-of bounds related crash in Grid Move Qt.application docs into Qt global object page Add initial size to ListView in FolderListModel example ...
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/dialogs/qfiledialog.cpp2
-rw-r--r--src/gui/dialogs/qfiledialog_symbian.cpp12
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp12
-rw-r--r--src/gui/text/qtextcontrol.cpp44
-rw-r--r--src/gui/text/qtextcontrol_p.h8
-rw-r--r--src/gui/text/qtextcontrol_p_p.h4
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp1
-rw-r--r--src/gui/widgets/qlinecontrol.cpp7
8 files changed, 73 insertions, 17 deletions
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp
index e81773b..0c1304f 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -1770,7 +1770,7 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
On Symbian^3 the parameter \a selectedFilter has no meaning and the
\a options parameter is only used to define if the native file dialog is
- used.
+ used. On Symbian^3, this function can only return a single filename.
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
diff --git a/src/gui/dialogs/qfiledialog_symbian.cpp b/src/gui/dialogs/qfiledialog_symbian.cpp
index e7197bd..b8ea5e5 100644
--- a/src/gui/dialogs/qfiledialog_symbian.cpp
+++ b/src/gui/dialogs/qfiledialog_symbian.cpp
@@ -140,11 +140,13 @@ static QString launchSymbianDialog(const QString dialogCaption, const QString st
CleanupStack::PushL(extensionFilter);
extensionFilter->setFilter(filter);
select = AknCommonDialogsDynMem::RunSelectDlgLD(types, target,
- startFolder, NULL, NULL, titlePtr, extensionFilter);
+ startFolder, 0, 0, titlePtr, extensionFilter);
CleanupStack::Pop(extensionFilter);
} else if (dialogMode == DialogSave) {
+ QString defaultFileName = QFileDialogPrivate::initialSelection(startDirectory);
+ target = qt_QString2TPtrC(defaultFileName);
select = AknCommonDialogsDynMem::RunSaveDlgLD(types, target,
- startFolder, NULL, NULL, titlePtr);
+ startFolder, 0, 0, titlePtr);
} else if (dialogMode == DialogFolder) {
select = AknCommonDialogsDynMem::RunFolderSelectDlgLD(types, target, startFolder,
0, 0, titlePtr, NULL, NULL);
@@ -160,8 +162,10 @@ static QString launchSymbianDialog(const QString dialogCaption, const QString st
startFolder = qt_QString2TPtrC(dir);
}
}
- if (select)
- selection.append(qt_TDesC2QString(target));
+ if (select) {
+ QFileInfo fi(qt_TDesC2QString(target));
+ selection = fi.absoluteFilePath();
+ }
#endif
return selection;
}
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 01fed8c..ecc8941 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -7689,11 +7689,13 @@ void QGraphicsObject::updateMicroFocus()
void QGraphicsItemPrivate::children_append(QDeclarativeListProperty<QGraphicsObject> *list, QGraphicsObject *item)
{
- QGraphicsObject *graphicsObject = static_cast<QGraphicsObject *>(list->object);
- if (QGraphicsItemPrivate::get(graphicsObject)->sendParentChangeNotification) {
- item->setParentItem(graphicsObject);
- } else {
- QGraphicsItemPrivate::get(item)->setParentItemHelper(graphicsObject, 0, 0);
+ if (item) {
+ QGraphicsObject *graphicsObject = static_cast<QGraphicsObject *>(list->object);
+ if (QGraphicsItemPrivate::get(graphicsObject)->sendParentChangeNotification) {
+ item->setParentItem(graphicsObject);
+ } else {
+ QGraphicsItemPrivate::get(item)->setParentItemHelper(graphicsObject, 0, 0);
+ }
}
}
diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp
index 89ca6bf..e15c06d 100644
--- a/src/gui/text/qtextcontrol.cpp
+++ b/src/gui/text/qtextcontrol.cpp
@@ -115,6 +115,7 @@ static QTextLine currentTextLine(const QTextCursor &cursor)
QTextControlPrivate::QTextControlPrivate()
: doc(0), cursorOn(false), cursorIsFocusIndicator(false),
interactionFlags(Qt::TextEditorInteraction),
+ dragEnabled(true),
#ifndef QT_NO_DRAGANDDROP
mousePressed(false), mightStartDrag(false),
#endif
@@ -129,7 +130,8 @@ QTextControlPrivate::QTextControlPrivate()
isEnabled(true),
hadSelectionOnMousePress(false),
ignoreUnusedNavigationEvents(false),
- openExternalLinks(false)
+ openExternalLinks(false),
+ wordSelectionEnabled(false)
{}
bool QTextControlPrivate::cursorMoveKeyEvent(QKeyEvent *e)
@@ -1544,15 +1546,21 @@ void QTextControlPrivate::mousePressEvent(QEvent *e, Qt::MouseButton button, con
}
#endif
if (modifiers == Qt::ShiftModifier) {
+ if (wordSelectionEnabled && !selectedWordOnDoubleClick.hasSelection()) {
+ selectedWordOnDoubleClick = cursor;
+ selectedWordOnDoubleClick.select(QTextCursor::WordUnderCursor);
+ }
+
if (selectedBlockOnTrippleClick.hasSelection())
extendBlockwiseSelection(cursorPos);
else if (selectedWordOnDoubleClick.hasSelection())
extendWordwiseSelection(cursorPos, pos.x());
- else
+ else if (wordSelectionEnabled)
setCursorPosition(cursorPos, QTextCursor::KeepAnchor);
} else {
- if (cursor.hasSelection()
+ if (dragEnabled
+ && cursor.hasSelection()
&& !cursorIsFocusIndicator
&& cursorPos >= cursor.selectionStart()
&& cursorPos <= cursor.selectionEnd()
@@ -1625,6 +1633,11 @@ void QTextControlPrivate::mouseMoveEvent(Qt::MouseButtons buttons, const QPointF
if (newCursorPos == -1)
return;
+ if (wordSelectionEnabled && !selectedWordOnDoubleClick.hasSelection()) {
+ selectedWordOnDoubleClick = cursor;
+ selectedWordOnDoubleClick.select(QTextCursor::WordUnderCursor);
+ }
+
if (selectedBlockOnTrippleClick.hasSelection())
extendBlockwiseSelection(newCursorPos);
else if (selectedWordOnDoubleClick.hasSelection())
@@ -2331,6 +2344,31 @@ bool QTextControl::cursorIsFocusIndicator() const
return d->cursorIsFocusIndicator;
}
+
+void QTextControl::setDragEnabled(bool enabled)
+{
+ Q_D(QTextControl);
+ d->dragEnabled = enabled;
+}
+
+bool QTextControl::isDragEnabled() const
+{
+ Q_D(const QTextControl);
+ return d->dragEnabled;
+}
+
+void QTextControl::setWordSelectionEnabled(bool enabled)
+{
+ Q_D(QTextControl);
+ d->wordSelectionEnabled = enabled;
+}
+
+bool QTextControl::isWordSelectionEnabled() const
+{
+ Q_D(const QTextControl);
+ return d->wordSelectionEnabled;
+}
+
#ifndef QT_NO_PRINTER
void QTextControl::print(QPrinter *printer) const
{
diff --git a/src/gui/text/qtextcontrol_p.h b/src/gui/text/qtextcontrol_p.h
index 6540f4f..31fa843 100644
--- a/src/gui/text/qtextcontrol_p.h
+++ b/src/gui/text/qtextcontrol_p.h
@@ -175,6 +175,12 @@ public:
void setCursorIsFocusIndicator(bool b);
bool cursorIsFocusIndicator() const;
+ void setDragEnabled(bool enabled);
+ bool isDragEnabled() const;
+
+ bool isWordSelectionEnabled() const;
+ void setWordSelectionEnabled(bool enabled);
+
#ifndef QT_NO_PRINTER
void print(QPrinter *printer) const;
#endif
@@ -183,8 +189,6 @@ public:
virtual QRectF blockBoundingRect(const QTextBlock &block) const;
QAbstractTextDocumentLayout::PaintContext getPaintContext(QWidget *widget) const;
-
-
public Q_SLOTS:
void setPlainText(const QString &text);
void setHtml(const QString &text);
diff --git a/src/gui/text/qtextcontrol_p_p.h b/src/gui/text/qtextcontrol_p_p.h
index 04f4c75..ecd13ea 100644
--- a/src/gui/text/qtextcontrol_p_p.h
+++ b/src/gui/text/qtextcontrol_p_p.h
@@ -174,6 +174,8 @@ public:
QBasicTimer trippleClickTimer;
QPointF trippleClickPoint;
+ bool dragEnabled;
+
bool mousePressed;
bool mightStartDrag;
@@ -209,6 +211,8 @@ public:
bool ignoreUnusedNavigationEvents;
bool openExternalLinks;
+ bool wordSelectionEnabled;
+
QString linkToCopy;
void _q_copyLink();
void _q_updateBlock(const QTextBlock &);
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index 157b7bc..838face 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -2510,6 +2510,7 @@ static inline void getLineHeightParams(const QTextBlockFormat &blockFormat, cons
QFixed *lineAdjustment, QFixed *lineBreakHeight, QFixed *lineHeight)
{
*lineHeight = QFixed::fromReal(blockFormat.lineHeight(line.height(), scaling));
+
if (blockFormat.lineHeightType() == QTextBlockFormat::FixedHeight || blockFormat.lineHeightType() == QTextBlockFormat::MinimumHeight) {
*lineBreakHeight = *lineHeight;
if (blockFormat.lineHeightType() == QTextBlockFormat::FixedHeight)
diff --git a/src/gui/widgets/qlinecontrol.cpp b/src/gui/widgets/qlinecontrol.cpp
index 062bb61..4b95000 100644
--- a/src/gui/widgets/qlinecontrol.cpp
+++ b/src/gui/widgets/qlinecontrol.cpp
@@ -541,10 +541,13 @@ void QLineControl::draw(QPainter *painter, const QPoint &offset, const QRect &cl
*/
void QLineControl::selectWordAtPos(int cursor)
{
- int c = m_textLayout.previousCursorPosition(cursor, QTextLayout::SkipWords);
+ int next = cursor + 1;
+ if(next > end())
+ --next;
+ int c = m_textLayout.previousCursorPosition(next, QTextLayout::SkipWords);
moveCursor(c, false);
// ## text layout should support end of words.
- int end = m_textLayout.nextCursorPosition(cursor, QTextLayout::SkipWords);
+ int end = m_textLayout.nextCursorPosition(c, QTextLayout::SkipWords);
while (end > cursor && m_text[end-1].isSpace())
--end;
moveCursor(end, true);