diff options
author | Janne Anttila <janne.anttila@digia.com> | 2009-11-11 12:20:40 (GMT) |
---|---|---|
committer | Janne Anttila <janne.anttila@digia.com> | 2009-11-11 12:27:18 (GMT) |
commit | a8b5418c70e0e2d3b4f9dc25c1383a78c4da8f22 (patch) | |
tree | 088c916fa389c35e390384a2ff667461756c2aff | |
parent | 05920c102d506378401a383aa820cabc9d0419c5 (diff) | |
download | Qt-a8b5418c70e0e2d3b4f9dc25c1383a78c4da8f22.zip Qt-a8b5418c70e0e2d3b4f9dc25c1383a78c4da8f22.tar.gz Qt-a8b5418c70e0e2d3b4f9dc25c1383a78c4da8f22.tar.bz2 |
Fix for qmessagebox default softkey visibility + some tab/space fixes.
Default actions get added after the QDialogButtonBox::event receives
show event. That's why 'ok' softkey action will not get added to the
widget. Changed implementation so that softkey actions are added to
widget when they are created.
This implementation is also more safe in a sence that if actions
are changed when message box is visible, the softkeys will be updated.
Task-number: QTBUG-5644
Task-number: QT-2211
Reviewed-by: Sami Merila
-rw-r--r-- | src/gui/widgets/qdialogbuttonbox.cpp | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/gui/widgets/qdialogbuttonbox.cpp b/src/gui/widgets/qdialogbuttonbox.cpp index 2231b98..2ee5751 100644 --- a/src/gui/widgets/qdialogbuttonbox.cpp +++ b/src/gui/widgets/qdialogbuttonbox.cpp @@ -315,9 +315,9 @@ void QDialogButtonBoxPrivate::initLayout() buttonLayout = new QVBoxLayout(q); } - int left, top, right, bottom; + int left, top, right, bottom; setLayoutItemMargins(QStyle::SE_PushButtonLayoutItem); - getLayoutItemMargins(&left, &top, &right, &bottom); + getLayoutItemMargins(&left, &top, &right, &bottom); buttonLayout->setContentsMargins(-left, -top, -right, -bottom); if (!q->testAttribute(Qt::WA_WState_OwnSizePolicy)) { @@ -356,7 +356,7 @@ void QDialogButtonBoxPrivate::addButtonsToLayout(const QList<QAbstractButton *> void QDialogButtonBoxPrivate::layoutButtons() { Q_Q(QDialogButtonBox); - const int MacGap = 36 - 8; // 8 is the default gap between a widget and a spacer item + const int MacGap = 36 - 8; // 8 is the default gap between a widget and a spacer item for (int i = buttonLayout->count() - 1; i >= 0; --i) { QLayoutItem *item = buttonLayout->takeAt(i); @@ -581,6 +581,22 @@ QAction* QDialogButtonBoxPrivate::createSoftKey(QAbstractButton *button, QDialog } QObject::connect(action, SIGNAL(triggered()), button, SIGNAL(clicked())); action->setSoftKeyRole(softkeyRole); + + + QWidget *dialog = 0; + QWidget *p = q; + while (p && !p->isWindow()) { + p = p->parentWidget(); + if ((dialog = qobject_cast<QDialog *>(p))) + break; + } + + if (dialog) { + dialog->addAction(action); + } else { + q->addAction(action); + } + return action; } #endif @@ -1193,12 +1209,8 @@ bool QDialogButtonBox::event(QEvent *event) if (!hasDefault && firstAcceptButton) firstAcceptButton->setDefault(true); #ifdef QT_SOFTKEYS_ENABLED - if (dialog) { + if (dialog) setFixedSize(0,0); - dialog->addActions(d->softKeyActions.values()); - } else { - addActions(d->softKeyActions.values()); - } #endif }else if (event->type() == QEvent::LanguageChange) { d->retranslateStrings(); |