QDialogButtonBox can auto-choose the order of the actions based on the
current interfaces guidelines, but in this case its a guessing game.

It does a half-decent job off guessing.
---
 qt-ui/kmessagewidget.cpp | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/qt-ui/kmessagewidget.cpp b/qt-ui/kmessagewidget.cpp
index 2f9ac68..e03d10c 100644
--- a/qt-ui/kmessagewidget.cpp
+++ b/qt-ui/kmessagewidget.cpp
@@ -21,7 +21,7 @@
 
 #include <QEvent>
 #include <QGridLayout>
-#include <QHBoxLayout>
+#include <QDialogButtonBox>
 #include <QLabel>
 #include <QPainter>
 #include <QShowEvent>
@@ -92,27 +92,32 @@ void KMessageWidgetPrivate::createLayout()
                layout->addWidget(iconLabel, 0, 0, 1, 1, Qt::AlignHCenter | 
Qt::AlignTop);
                layout->addWidget(textLabel, 0, 1);
 
-               QHBoxLayout *buttonLayout = new QHBoxLayout;
-               buttonLayout->addStretch();
+               QDialogButtonBox *buttonLayout = new QDialogButtonBox();
+               //buttonLayout->addStretch();
                Q_FOREACH (QToolButton *button, buttons) {
                        // For some reason, calling show() is necessary if 
wordwrap is true,
                        // otherwise the buttons do not show up. It is not 
needed if
                        // wordwrap is false.
                        button->show();
-                       buttonLayout->addWidget(button);
+                       buttonLayout->addButton(button, 
QDialogButtonBox::QDialogButtonBox::AcceptRole);
                }
-               buttonLayout->addWidget(closeButton);
-               layout->addItem(buttonLayout, 1, 0, 1, 2);
+               buttonLayout->addButton(closeButton, 
QDialogButtonBox::RejectRole);
+               layout->addWidget(buttonLayout, 1, 0, 1, 2, Qt::AlignHCenter | 
Qt::AlignTop);
        } else {
+               bool closeButtonVisible = closeButton->isVisible();
                QHBoxLayout *layout = new QHBoxLayout(content);
                layout->addWidget(iconLabel);
                layout->addWidget(textLabel);
 
+               QDialogButtonBox *buttonLayout = new QDialogButtonBox();
                Q_FOREACH (QToolButton *button, buttons) {
-                       layout->addWidget(button);
+                       buttonLayout->addButton(button, 
QDialogButtonBox::QDialogButtonBox::AcceptRole);
                }
 
-               layout->addWidget(closeButton);
+               buttonLayout->addButton(closeButton, 
QDialogButtonBox::RejectRole);
+               // Something gets changed when added to the buttonLayout
+               closeButton->setVisible(closeButtonVisible);
+               layout->addWidget(buttonLayout);
        };
 
        if (q->isVisible()) {
-- 
1.9.1

_______________________________________________
subsurface mailing list
[email protected]
http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to