From 9a09dd8a884827401193846be70c9cec1ca6610a Mon Sep 17 00:00:00 2001 From: Aleksei German Date: Wed, 19 Feb 2020 12:26:51 +0100 Subject: [PATCH] QmlDesigner: minor fixes for Annotations - Mac dialog window fix - Changed behavior on add new tabs action - Removed unused code Change-Id: I0579b1ba85fb535464b2d5160a85a898f2e78a76 Reviewed-by: Thomas Hartmann --- .../QtQuick/ItemPane.qml | 1 + .../annotationeditor/annotationeditor.cpp | 3 +- .../annotationeditordialog.cpp | 36 +++++++++---------- .../annotationeditor/annotationtool.cpp | 11 +++--- .../formeditor/formeditorannotationicon.cpp | 12 +++---- .../formeditor/selectionindicator.cpp | 11 +++--- 6 files changed, 38 insertions(+), 36 deletions(-) diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml index bbc2444ac12..4aabebf1b0b 100644 --- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml +++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml @@ -213,6 +213,7 @@ Rectangle { iconFont: StudioTheme.Constants.font Layout.fillWidth: true Layout.preferredWidth: 240 + width: 240 onClicked: annotationEditor.showWidget() diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp index 46a98a07479..10b68769490 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.cpp @@ -66,7 +66,8 @@ void AnnotationEditor::showWidget() m_dialog->setAttribute(Qt::WA_DeleteOnClose); - m_dialog->open(); + m_dialog->show(); + m_dialog->raise(); } void AnnotationEditor::showWidget(int x, int y) diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.cpp index ca91f308ea9..ee90b117e0f 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditordialog.cpp @@ -30,7 +30,8 @@ #include "ui_annotationcommenttab.h" -#include //replace timeline icons with our own? +#include +#include #include #include @@ -50,6 +51,7 @@ AnnotationEditorDialog::AnnotationEditorDialog(QWidget *parent, const QString &t setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); setWindowFlag(Qt::Tool, true); setWindowTitle(titleString); + setModal(true); connect(this, &QDialog::accepted, this, &AnnotationEditorDialog::acceptedClicked); @@ -67,8 +69,10 @@ AnnotationEditorDialog::AnnotationEditorDialog(QWidget *parent, const QString &t connect(commentRemoveAction, &QAction::triggered, this, [this]() { - if (ui->tabWidget->count() == 0) //it is not even supposed to happen but lets be sure + if (ui->tabWidget->count() == 0) { //it is not even supposed to happen but lets be sure + QTC_ASSERT(true, return); return; + } int currentIndex = ui->tabWidget->currentIndex(); QString currentTitle = ui->tabWidget->tabText(currentIndex); @@ -202,11 +206,18 @@ void AnnotationEditorDialog::addCommentTab(const Comment &comment) { auto commentTab = new AnnotationCommentTab(); commentTab->setComment(comment); - int tabIndex = ui->tabWidget->addTab(commentTab, comment.title()); - if (comment.title().isEmpty()) - ui->tabWidget->setTabText(tabIndex, - (defaultTabName + " " + QString::number(tabIndex+1))); + QString tabTitle(comment.title()); + int tabIndex = ui->tabWidget->addTab(commentTab, tabTitle); + ui->tabWidget->setCurrentIndex(tabIndex); + + if (tabTitle.isEmpty()) { + const QString appendix = ((tabIndex > 0) ? QString::number(tabIndex+1) : ""); + + tabTitle = QString("%1 %2").arg(defaultTabName).arg(appendix); + + ui->tabWidget->setTabText(tabIndex, tabTitle); + } connect(commentTab, &AnnotationCommentTab::titleChanged, this, &AnnotationEditorDialog::commentTitleChanged); @@ -230,18 +241,7 @@ void AnnotationEditorDialog::deleteAllTabs() void AnnotationEditorDialog::tabChanged(int index) { - QWidget *w = ui->tabWidget->widget(index); - AnnotationCommentTab *tab = nullptr; - if (w) - tab = reinterpret_cast(w); - - if (tab) { - //this tab order resetting doesn't work - QWidget::setTabOrder(ui->targetIdEdit, ui->customIdEdit); - QWidget::setTabOrder(ui->customIdEdit, ui->tabWidget); - QWidget::setTabOrder(ui->tabWidget, tab); - QWidget::setTabOrder(tab, ui->buttonBox); - } + (void) index; } } //namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationtool.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationtool.cpp index 522505dd9ca..7cb0bdfa19f 100644 --- a/src/plugins/qmldesigner/components/annotationeditor/annotationtool.cpp +++ b/src/plugins/qmldesigner/components/annotationeditor/annotationtool.cpp @@ -163,19 +163,20 @@ void AnnotationTool::selectedItemsChanged(const QList &itemList if (!itemList.isEmpty()) { m_formEditorItem = itemList.constFirst(); - m_oldCustomId = m_formEditorItem->qmlItemNode().modelNode().customId(); - m_oldAnnotation = m_formEditorItem->qmlItemNode().modelNode().annotation(); + ModelNode itemModelNode = m_formEditorItem->qmlItemNode().modelNode(); + m_oldCustomId = itemModelNode.customId(); + m_oldAnnotation = itemModelNode.annotation(); if (m_annotationEditor.isNull()) { m_annotationEditor = new AnnotationEditorDialog(view()->formEditorWidget()->parentWidget(), - m_formEditorItem->qmlItemNode().modelNode().displayName(), + itemModelNode.displayName(), m_oldCustomId, m_oldAnnotation); connect(m_annotationEditor, &AnnotationEditorDialog::accepted, this, &AnnotationTool::annotationDialogAccepted); connect(m_annotationEditor, &QDialog::rejected, this, &AnnotationTool::annotationDialogRejected); -// connect(m_colorDialog.data(), &QColorDialog::currentColorChanged, this, &ColorTool::currentColorChanged); - m_annotationEditor->exec(); + m_annotationEditor->show(); + m_annotationEditor->raise(); } } else { view()->changeToSelectionTool(); diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp index 20e2a1dfe6c..91b67b3dd27 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorannotationicon.cpp @@ -96,7 +96,7 @@ void FormEditorAnnotationIcon::paint(QPainter *painter, const QStyleOptionGraphi if (scene) m_readerIsActive = scene->annotationVisibility(); - QPixmap icon( (m_readerIsActive ? m_activeIconStr : m_normalIconStr) ); + QPixmap icon(m_readerIsActive ? m_activeIconStr : m_normalIconStr); painter->drawPixmap(0, 0, static_cast(m_iconW), static_cast(m_iconH), @@ -277,11 +277,8 @@ void FormEditorAnnotationIcon::drawReader() void FormEditorAnnotationIcon::hideReader() { - if (!childItems().isEmpty()) { - for (QGraphicsItem *item : childItems()) { - delete item; - } - } + if (!childItems().isEmpty()) + qDeleteAll(childItems()); } QGraphicsItem *FormEditorAnnotationIcon::createCommentBubble(const QRectF &rect, const QString &title, @@ -398,7 +395,8 @@ void FormEditorAnnotationIcon::createAnnotationEditor() connect(m_annotationEditor, &QDialog::rejected, this, &FormEditorAnnotationIcon::annotationDialogRejected); - m_annotationEditor->open(); + m_annotationEditor->show(); + m_annotationEditor->raise(); } void FormEditorAnnotationIcon::removeAnnotationDialog() diff --git a/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp b/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp index fd8ff4cd560..883fe841d90 100644 --- a/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp +++ b/src/plugins/qmldesigner/components/formeditor/selectionindicator.cpp @@ -216,17 +216,18 @@ void SelectionIndicator::adjustAnnotationPosition(const QRectF &itemRect, const { if (!m_annotationItem) return; - const qreal iconW = 40 * 0.5; //*0.5 for a shift of an icon outide the item + const qreal iconWShift = m_annotationItem->iconWidth() * 0.5; + const qreal iconHShift = (m_annotationItem->iconHeight() * 0.45)/scaleFactor; qreal iconX = 0.0; - qreal iconY = -15.0/scaleFactor; //small offset + qreal iconY = -(iconHShift); - if (((labelRect.width() + iconW)/scaleFactor) > itemRect.width()) + if (((labelRect.width() + iconWShift)/scaleFactor) > itemRect.width()) iconY -= labelRect.height()/scaleFactor; - if ((iconW/scaleFactor) > itemRect.width()) + if ((iconWShift/scaleFactor) > itemRect.width()) iconX = 0.0; else - iconX = (itemRect.width()) - (iconW/scaleFactor); + iconX = (itemRect.width()) - (iconWShift/scaleFactor); m_annotationItem->setPos(iconX*scaleFactor, iconY*scaleFactor); }