From 142c5ef9ddd17e59d8d096ab065aee8cb50f5e8f Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 25 Oct 2013 12:37:30 +0200 Subject: QLineEdit: Fix potential crash when removing the clear button. Remove it from the side actions list. Task-number: QTBUG-34315 Change-Id: I70063351193b504f8656e903896d155ac74f73a6 Reviewed-by: Giuseppe D'Angelo --- src/widgets/widgets/qlineedit.cpp | 4 ++-- src/widgets/widgets/qlineedit_p.cpp | 3 +-- src/widgets/widgets/qlineedit_p.h | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index d3c37ab612..0bc7b7c2e3 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -500,7 +500,7 @@ void QLineEdit::setClearButtonEnabled(bool enable) } else { QAction *clearAction = findChild(QLatin1String(clearButtonActionNameC)); Q_ASSERT(clearAction); - removeAction(clearAction); + d->removeAction(clearAction); delete clearAction; } } @@ -1439,7 +1439,7 @@ bool QLineEdit::event(QEvent * e) d->setCursorVisible(true); } } else if (e->type() == QEvent::ActionRemoved) { - d->removeAction(static_cast(e)); + d->removeAction(static_cast(e)->action()); } else if (e->type() == QEvent::Resize) { d->positionSideWidgets(); } diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index 99d6d0b8d9..c066f74c5a 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -445,10 +445,9 @@ QWidget *QLineEditPrivate::addAction(QAction *newAction, QAction *before, QLineE return w; } -void QLineEditPrivate::removeAction(const QActionEvent *e) +void QLineEditPrivate::removeAction(QAction *action) { Q_Q(QLineEdit); - QAction *action = e->action(); const PositionIndexPair positionIndex = findSideWidget(action); if (positionIndex.second == -1) return; diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index 8fe45972ff..e807c7fc52 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -196,7 +196,7 @@ public: QString placeholderText; QWidget *addAction(QAction *newAction, QAction *before, QLineEdit::ActionPosition, int flags = 0); - void removeAction(const QActionEvent *e); + void removeAction(QAction *action); QSize iconSize() const; QIcon clearButtonIcon() const; void positionSideWidgets(); -- cgit v1.2.3 From 161e8653c342278a4881da952ea723b107df93c0 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 1 Nov 2013 09:17:10 +0100 Subject: Disable clear button in read-only QLineEdit. Task-number: QTBUG-34315 Change-Id: I6c318879aee907c080e871a541da4ba5eadd71ed Reviewed-by: Giuseppe D'Angelo --- src/widgets/widgets/qlineedit.cpp | 2 ++ src/widgets/widgets/qlineedit_p.cpp | 10 ++++++++++ src/widgets/widgets/qlineedit_p.h | 1 + 3 files changed, 13 insertions(+) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 0bc7b7c2e3..df5ae0171c 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -495,6 +495,7 @@ void QLineEdit::setClearButtonEnabled(bool enable) return; if (enable) { QAction *clearAction = new QAction(d->clearButtonIcon(), QString(), this); + clearAction->setEnabled(!isReadOnly()); clearAction->setObjectName(QLatin1String(clearButtonActionNameC)); d->addAction(clearAction, 0, QLineEdit::TrailingPosition, QLineEditPrivate::SideWidgetClearButton | QLineEditPrivate::SideWidgetFadeInWithText); } else { @@ -1336,6 +1337,7 @@ void QLineEdit::setReadOnly(bool enable) Q_D(QLineEdit); if (d->control->isReadOnly() != enable) { d->control->setReadOnly(enable); + d->setClearButtonEnabled(!enable); setAttribute(Qt::WA_MacShowFocusRect, !enable); setAttribute(Qt::WA_InputMethodEnabled, d->shouldEnableInputMethod()); #ifndef QT_NO_CURSOR diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index c066f74c5a..891839ed56 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -376,6 +376,16 @@ QIcon QLineEditPrivate::clearButtonIcon() const return QIcon(q->style()->standardPixmap(QStyle::SP_LineEditClearButton, &styleOption, q)); } +void QLineEditPrivate::setClearButtonEnabled(bool enabled) +{ + foreach (const SideWidgetEntry &e, trailingSideWidgets) { + if (e.flags & SideWidgetClearButton) { + e.action->setEnabled(enabled); + break; + } + } +} + void QLineEditPrivate::positionSideWidgets() { Q_Q(QLineEdit); diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index e807c7fc52..181a23449b 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -199,6 +199,7 @@ public: void removeAction(QAction *action); QSize iconSize() const; QIcon clearButtonIcon() const; + void setClearButtonEnabled(bool enabled); void positionSideWidgets(); inline bool hasSideWidgets() const { return !leadingSideWidgets.isEmpty() || !trailingSideWidgets.isEmpty(); } inline const SideWidgetEntryList &leftSideWidgetList() const -- cgit v1.2.3 From 71ce869825a0af3fec66c4cd29083ec5d0d76eda Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 5 Nov 2013 11:22:34 +0100 Subject: Fix placeholder text in QTextBrowser Task-number: QTBUG-34051 Change-Id: Ief55cda861ef293a5fdeb2e5fa287b835c729894 Reviewed-by: Giuseppe D'Angelo --- src/widgets/widgets/qtextedit.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index 0f61eb487f..49e05e8e14 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -1513,6 +1513,14 @@ void QTextEditPrivate::paint(QPainter *p, QPaintEvent *e) if (layout) layout->setViewport(QRect()); + + if (!placeholderText.isEmpty() && doc->isEmpty()) { + QColor col = control->palette().text().color(); + col.setAlpha(128); + p->setPen(col); + const int margin = int(doc->documentMargin()); + p->drawText(viewport->rect().adjusted(margin, margin, -margin, -margin), Qt::AlignTop | Qt::TextWordWrap, placeholderText); + } } /*! \fn void QTextEdit::paintEvent(QPaintEvent *event) @@ -1528,13 +1536,6 @@ void QTextEdit::paintEvent(QPaintEvent *e) Q_D(QTextEdit); QPainter p(d->viewport); d->paint(&p, e); - if (!d->placeholderText.isEmpty() && d->control->document()->isEmpty()) { - QColor col = palette().text().color(); - col.setAlpha(128); - p.setPen(col); - const int margin = int(document()->documentMargin()); - p.drawText(d->viewport->rect().adjusted(margin, margin, -margin, -margin), Qt::AlignTop | Qt::TextWordWrap, d->placeholderText); - } } void QTextEditPrivate::_q_currentCharFormatChanged(const QTextCharFormat &fmt) -- cgit v1.2.3 From 8aab8ccc0ffba504078deb7b4371d2f98c834df3 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Thu, 7 Nov 2013 13:43:02 +0100 Subject: Dialogs: provide the StandardButton->ButtonRole mapping in QPA As the QPlatformMessageDialogHelper will be implemented repeatedly, it's useful to have this mapping in one place for reuse. Also, since we do not guarantee that either accepted() or rejected() will be emitted for every possible button on a QtQuick MessageDialog, it's useful for the QtQuick.Dialogs module to have access to this mapping to interpret individual button presses and emit the role-specific signals such as yes(), apply(), help(), etc. Change-Id: I7be753080794adabb784df9b95ac04aa1c29151c Reviewed-by: BogDan Vatra --- src/widgets/widgets/qdialogbuttonbox.cpp | 43 +++----------------------------- 1 file changed, 3 insertions(+), 40 deletions(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qdialogbuttonbox.cpp b/src/widgets/widgets/qdialogbuttonbox.cpp index 9789c453f3..6b183d3759 100644 --- a/src/widgets/widgets/qdialogbuttonbox.cpp +++ b/src/widgets/widgets/qdialogbuttonbox.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include "qdialogbuttonbox.h" @@ -166,46 +167,8 @@ enum { static QDialogButtonBox::ButtonRole roleFor(QDialogButtonBox::StandardButton button) { - switch (button) { - case QDialogButtonBox::Ok: - case QDialogButtonBox::Save: - case QDialogButtonBox::Open: - case QDialogButtonBox::SaveAll: - case QDialogButtonBox::Retry: - case QDialogButtonBox::Ignore: - return QDialogButtonBox::AcceptRole; - - case QDialogButtonBox::Cancel: - case QDialogButtonBox::Close: - case QDialogButtonBox::Abort: - return QDialogButtonBox::RejectRole; - - case QDialogButtonBox::Discard: - return QDialogButtonBox::DestructiveRole; - - case QDialogButtonBox::Help: - return QDialogButtonBox::HelpRole; - - case QDialogButtonBox::Apply: - return QDialogButtonBox::ApplyRole; - - case QDialogButtonBox::Yes: - case QDialogButtonBox::YesToAll: - return QDialogButtonBox::YesRole; - - case QDialogButtonBox::No: - case QDialogButtonBox::NoToAll: - return QDialogButtonBox::NoRole; - - case QDialogButtonBox::RestoreDefaults: - case QDialogButtonBox::Reset: - return QDialogButtonBox::ResetRole; - - case QDialogButtonBox::NoButton: // NoButton means zero buttons, not "No" button - ; - } - - return QDialogButtonBox::InvalidRole; + return static_cast(QMessageDialogOptions::buttonRole( + static_cast(button))); } static const uint layouts[2][5][14] = -- cgit v1.2.3 From 7a6bb4d9c9eee46e5f2e0aee9a93d38fd6b91c46 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 8 Nov 2013 09:12:06 +0100 Subject: Fix potential BC break in QTabBar. Move code from mouseDoubleClickEvent() to event(). Introduced by 252bad7c589e03d3e12df02354b00a84d8e3159a . Task-number: QTBUG-34670 Change-Id: I98ed24f26977220cf03524cfe001524364473982 Reviewed-by: Marc Mutz --- src/widgets/widgets/qtabbar.cpp | 23 ++++++----------------- src/widgets/widgets/qtabbar.h | 1 - 2 files changed, 6 insertions(+), 18 deletions(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp index 094e9af0de..dfd1f1022c 100644 --- a/src/widgets/widgets/qtabbar.cpp +++ b/src/widgets/widgets/qtabbar.cpp @@ -1496,6 +1496,12 @@ bool QTabBar::event(QEvent *event) } } #endif + } else if (event->type() == QEvent::MouseButtonDblClick) { // ### fixme Qt 6: move to mouseDoubleClickEvent(), here for BC reasons. + const QPoint pos = static_cast(event)->pos(); + const bool isEventInCornerButtons = (!d->leftB->isHidden() && d->leftB->geometry().contains(pos)) + || (!d->rightB->isHidden() && d->rightB->geometry().contains(pos)); + if (!isEventInCornerButtons) + emit tabBarDoubleClicked(tabAt(pos)); } return QWidget::event(event); } @@ -1723,23 +1729,6 @@ void QTabBarPrivate::moveTab(int index, int offset) q_func()->update(); } - -/*! - \reimp -*/ -void QTabBar::mouseDoubleClickEvent(QMouseEvent *event) -{ - Q_D(QTabBar); - - const QPoint pos = event->pos(); - const bool isEventInCornerButtons = (!d->leftB->isHidden() && d->leftB->geometry().contains(pos)) - || (!d->rightB->isHidden() && d->rightB->geometry().contains(pos)); - if (!isEventInCornerButtons) { - const int index = tabAt(pos); - emit tabBarDoubleClicked(index); - } -} - /*!\reimp */ void QTabBar::mousePressEvent(QMouseEvent *event) diff --git a/src/widgets/widgets/qtabbar.h b/src/widgets/widgets/qtabbar.h index 1f7b8f6b03..a0e52c2f86 100644 --- a/src/widgets/widgets/qtabbar.h +++ b/src/widgets/widgets/qtabbar.h @@ -188,7 +188,6 @@ protected: void showEvent(QShowEvent *); void hideEvent(QHideEvent *); void paintEvent(QPaintEvent *); - void mouseDoubleClickEvent(QMouseEvent *); void mousePressEvent (QMouseEvent *); void mouseMoveEvent (QMouseEvent *); void mouseReleaseEvent (QMouseEvent *); -- cgit v1.2.3 From c819a8926959ecadfe2e588e28918ed6fb90ce5d Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Fri, 8 Nov 2013 13:53:26 +0100 Subject: Document the BC break of viewportSizeHint() in itemviews Since users were not supposed to use this feature at all, just live with the BC break, but document it. In order to prevent possible problems in the future, introduce dummy overrides in QAbstractItemView and QListView as well. Also, fix the visibility of the overrides (it's protected, not public). Task-number: QTBUG-34667 Change-Id: Ib4554ae5e1e7d3ce4ea8e8703e1fea9e2231edb0 Reviewed-by: Marc Mutz --- src/widgets/widgets/qscrollarea.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qscrollarea.h b/src/widgets/widgets/qscrollarea.h index 70af5fbbd7..db1083f122 100644 --- a/src/widgets/widgets/qscrollarea.h +++ b/src/widgets/widgets/qscrollarea.h @@ -69,7 +69,6 @@ public: void setWidgetResizable(bool resizable); QSize sizeHint() const; - QSize viewportSizeHint() const; bool focusNextPrevChild(bool next); @@ -86,6 +85,8 @@ protected: void resizeEvent(QResizeEvent *); void scrollContentsBy(int dx, int dy); + QSize viewportSizeHint() const Q_DECL_OVERRIDE; + private: Q_DECLARE_PRIVATE(QScrollArea) Q_DISABLE_COPY(QScrollArea) -- cgit v1.2.3 From 944fe9b8bc38c412a8d6823c100cb2d44d44118e Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 9 Nov 2013 17:01:07 +0100 Subject: QKeySequenceEdit: make setKeySequence a slot There's a signal keySequenceChanged(QKeySequence), so the setter should be a slot, too. Change-Id: I6591bad071444ffa252a2fdb9ccaf28e8629f59c Reviewed-by: J-P Nurmi Reviewed-by: Konstantin Ritt --- src/widgets/widgets/qkeysequenceedit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qkeysequenceedit.h b/src/widgets/widgets/qkeysequenceedit.h index 9312e98d0e..5d827a3be8 100644 --- a/src/widgets/widgets/qkeysequenceedit.h +++ b/src/widgets/widgets/qkeysequenceedit.h @@ -61,9 +61,9 @@ public: ~QKeySequenceEdit(); QKeySequence keySequence() const; - void setKeySequence(const QKeySequence &keySequence); public Q_SLOTS: + void setKeySequence(const QKeySequence &keySequence); void clear(); Q_SIGNALS: -- cgit v1.2.3 From 9af6fd5d8a2d142742ad690286f50c7aac34908c Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 9 Nov 2013 17:31:32 +0100 Subject: QKeySequenceEdit: give nested line edit an objectName People request this, and other widgets do this, too (say, QSpinBox). Change-Id: I275537fb82b805b0dcb8edba87b8e234985f8d1f Reviewed-by: J-P Nurmi --- src/widgets/widgets/qkeysequenceedit.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qkeysequenceedit.cpp b/src/widgets/widgets/qkeysequenceedit.cpp index a1915e41ef..db39ceb08a 100644 --- a/src/widgets/widgets/qkeysequenceedit.cpp +++ b/src/widgets/widgets/qkeysequenceedit.cpp @@ -55,6 +55,7 @@ void QKeySequenceEditPrivate::init() Q_Q(QKeySequenceEdit); lineEdit = new QLineEdit(q); + lineEdit->setObjectName(QStringLiteral("qt_keysequenceedit_lineedit")); keyNum = 0; prevKey = -1; releaseTimer = 0; -- cgit v1.2.3 From 6b745d6c6336445ec98cbed4dfa1fd3fb801b369 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 9 Nov 2013 16:58:52 +0100 Subject: Move MaxKeyCount from QKeySequenceEditPrivate to QKeySequencePrivate Adjust users and add a static_cast that MaxKeyCount be 4. That is instead of adjusting all the code to use MaxKeyCount instead, some of which cannot be thus changed (e.g. where using the QKeySequence(int, int, int, int) constructor). This was requested in the original review, but never implemented. Change-Id: I3812340890f4d75257139f04e73e83083ca09760 Reviewed-by: Konstantin Ritt Reviewed-by: Friedemann Kleint --- src/widgets/widgets/qkeysequenceedit.cpp | 8 +++++--- src/widgets/widgets/qkeysequenceedit_p.h | 5 ++--- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qkeysequenceedit.cpp b/src/widgets/widgets/qkeysequenceedit.cpp index db39ceb08a..858a122b28 100644 --- a/src/widgets/widgets/qkeysequenceedit.cpp +++ b/src/widgets/widgets/qkeysequenceedit.cpp @@ -50,6 +50,8 @@ QT_BEGIN_NAMESPACE #ifndef QT_NO_KEYSEQUENCEEDIT +Q_STATIC_ASSERT(QKeySequencePrivate::MaxKeyCount == 4); // assumed by the code around here + void QKeySequenceEditPrivate::init() { Q_Q(QKeySequenceEdit); @@ -280,7 +282,7 @@ void QKeySequenceEdit::keyPressEvent(QKeyEvent *e) return; } - if (d->keyNum >= QKeySequenceEditPrivate::MaxKeyCount) + if (d->keyNum >= QKeySequencePrivate::MaxKeyCount) return; nextKey |= d->translateModifiers(e->modifiers(), e->text()); @@ -291,7 +293,7 @@ void QKeySequenceEdit::keyPressEvent(QKeyEvent *e) QKeySequence key(d->key[0], d->key[1], d->key[2], d->key[3]); d->keySequence = key; QString text = key.toString(QKeySequence::NativeText); - if (d->keyNum < QKeySequenceEditPrivate::MaxKeyCount) { + if (d->keyNum < QKeySequencePrivate::MaxKeyCount) { //: This text is an "unfinished" shortcut, expands like "Ctrl+A, ..." text = tr("%1, ...").arg(text); } @@ -307,7 +309,7 @@ void QKeySequenceEdit::keyReleaseEvent(QKeyEvent *e) Q_D(QKeySequenceEdit); if (d->prevKey == e->key()) { - if (d->keyNum < QKeySequenceEditPrivate::MaxKeyCount) + if (d->keyNum < QKeySequencePrivate::MaxKeyCount) d->releaseTimer = startTimer(1000); else d->finishEditing(); diff --git a/src/widgets/widgets/qkeysequenceedit_p.h b/src/widgets/widgets/qkeysequenceedit_p.h index 58c9699059..f74433bb71 100644 --- a/src/widgets/widgets/qkeysequenceedit_p.h +++ b/src/widgets/widgets/qkeysequenceedit_p.h @@ -46,6 +46,7 @@ #include "qkeysequenceedit.h" #include +#include QT_BEGIN_NAMESPACE @@ -57,8 +58,6 @@ class QKeySequenceEditPrivate : public QWidgetPrivate { Q_DECLARE_PUBLIC(QKeySequenceEdit) public: - enum { MaxKeyCount = 4 }; - void init(); int translateModifiers(Qt::KeyboardModifiers state, const QString &text); void resetState(); @@ -67,7 +66,7 @@ public: QLineEdit *lineEdit; QKeySequence keySequence; int keyNum; - int key[MaxKeyCount]; + int key[QKeySequencePrivate::MaxKeyCount]; int prevKey; int releaseTimer; }; -- cgit v1.2.3 From 4d1ece8b44b27294cdf77c685aa3d34882cdef95 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 9 Nov 2013 17:41:26 +0100 Subject: QKeySequenceEdit: simplify clear() As the test case shows, clear() is semantically equivalent to setKeySequence(QKeySequence()), so implement it that way. Change-Id: Id68edbbf85aac3bcff82c81310c38274ed8e6708 Reviewed-by: J-P Nurmi Reviewed-by: Friedemann Kleint --- src/widgets/widgets/qkeysequenceedit.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qkeysequenceedit.cpp b/src/widgets/widgets/qkeysequenceedit.cpp index 858a122b28..c056967cf7 100644 --- a/src/widgets/widgets/qkeysequenceedit.cpp +++ b/src/widgets/widgets/qkeysequenceedit.cpp @@ -224,15 +224,7 @@ void QKeySequenceEdit::setKeySequence(const QKeySequence &keySequence) */ void QKeySequenceEdit::clear() { - Q_D(QKeySequenceEdit); - - d->resetState(); - - d->lineEdit->clear(); - d->keySequence = QKeySequence(); - d->keyNum = d->key[0] = d->key[1] = d->key[2] = d->key[3] = 0; - d->prevKey = -1; - emit keySequenceChanged(d->keySequence); + setKeySequence(QKeySequence()); } /*! -- cgit v1.2.3 From 6b8c5ba678a7131c448db656cf62c3f715a2107c Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 9 Nov 2013 17:39:04 +0100 Subject: QKeySequenceEdit: remove RESET function from keySequence Q_PROPERTY A RESET function is only needed if the default value of the property cannot be set with the normal setter. This is not the case here, as clear() is the same as setKeySequence(QKeySequence()). Change-Id: Ib751677436ebdcec0a7951dceae1e0f0323500ff Reviewed-by: Friedemann Kleint Reviewed-by: Lars Knoll --- src/widgets/widgets/qkeysequenceedit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qkeysequenceedit.h b/src/widgets/widgets/qkeysequenceedit.h index 5d827a3be8..7eeff4e504 100644 --- a/src/widgets/widgets/qkeysequenceedit.h +++ b/src/widgets/widgets/qkeysequenceedit.h @@ -53,7 +53,7 @@ class QKeySequenceEditPrivate; class Q_WIDGETS_EXPORT QKeySequenceEdit : public QWidget { Q_OBJECT - Q_PROPERTY(QKeySequence keySequence READ keySequence WRITE setKeySequence RESET clear NOTIFY keySequenceChanged USER true) + Q_PROPERTY(QKeySequence keySequence READ keySequence WRITE setKeySequence NOTIFY keySequenceChanged USER true) public: explicit QKeySequenceEdit(QWidget *parent = 0); -- cgit v1.2.3 From 98f0b4668999d677d8bf91d57ac095d96e7a661c Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Mon, 18 Nov 2013 10:31:42 +0200 Subject: Android: Use native platform menus. This is an Android only patch, a proper implementation will be pushed soon to stable branch. Task-number: QTBUG-29462 Task-number: QTBUG-33588 Change-Id: I3447c523b4533a768d7f95e4ae60541b09a7944f Reviewed-by: Christoph Schleifenbaum Reviewed-by: Marc Mutz Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/widgets/widgets/qmenu.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 3a4fd449c8..0cbd1c720c 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -1834,6 +1834,14 @@ QSize QMenu::sizeHint() const void QMenu::popup(const QPoint &p, QAction *atAction) { Q_D(QMenu); + +#ifdef Q_OS_ANDROID + if (!d->platformMenu.isNull() && !testAttribute(Qt::WA_SetStyle)) { + d->platformMenu->showPopup(window()->windowHandle(), p, 0); + return; + } +#endif + if (d->scroll) { // reset scroll state from last popup if (d->scroll->scrollOffset) d->itemsDirty = 1; // sizeHint will be incorrect if there is previous scroll -- cgit v1.2.3 From b4bb70973328d251ecf33ec58722bdb5d32366ed Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Fri, 15 Nov 2013 13:38:03 +0100 Subject: Remove QMacStyle titlebar height + 4 adjustment and consequences This was a tweak to fix a bug in 2005 which has probably outlived its usefulness, plus an accumulation of workarounds on top. (started as 48b5266e8ff9b472a16290dd923fe24dd0b6989b in the historical repo) Task-number: QTBUG-34760 Change-Id: I2c01269e43636385ee5c89305c6b90f4a7f2c537 Reviewed-by: Gabriel de Dietrich --- src/widgets/widgets/qdockwidget.cpp | 8 -------- src/widgets/widgets/qmdiarea.cpp | 5 ----- src/widgets/widgets/qmdisubwindow.cpp | 5 ----- 3 files changed, 18 deletions(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 8b151e65bd..46929397a0 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -455,14 +455,6 @@ int QDockWidgetLayout::titleHeight() const perp(verticalTitleBar, floatSize)); QFontMetrics titleFontMetrics = q->fontMetrics(); -#ifdef Q_WS_MAC - if (qobject_cast(q->style())) { - //### this breaks on proxy styles. (But is this code still called?) - QFont font = qt_app_fonts_hash()->value("QToolButton", q->font()); - titleFontMetrics = QFontMetrics(font); - } -#endif - int mw = q->style()->pixelMetric(QStyle::PM_DockWidgetTitleMargin, 0, q); return qMax(buttonHeight + 2, titleFontMetrics.height() + 2*mw); diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp index 5c1d7a6c05..349d8c3423 100644 --- a/src/widgets/widgets/qmdiarea.cpp +++ b/src/widgets/widgets/qmdiarea.cpp @@ -354,11 +354,6 @@ void SimpleCascader::rearrange(QList &widgets, const QRect &domain) c QStyleOptionTitleBar options; options.initFrom(widgets.at(0)); int titleBarHeight = widgets.at(0)->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options, widgets.at(0)); -#if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC) - // ### Remove this after the mac style has been fixed - if (qobject_cast(widgets.at(0)->style())) - titleBarHeight -= 4; -#endif const QFontMetrics fontMetrics = QFontMetrics(QApplication::font("QMdiSubWindowTitleBar")); const int dy = qMax(titleBarHeight - (titleBarHeight - fontMetrics.height()) / 2, 1); diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp index b80eb069e2..8e1dcbee18 100644 --- a/src/widgets/widgets/qmdisubwindow.cpp +++ b/src/widgets/widgets/qmdisubwindow.cpp @@ -1710,11 +1710,6 @@ int QMdiSubWindowPrivate::titleBarHeight(const QStyleOptionTitleBar &options) co } int height = q->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options, q); -#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC) - // ### Fix mac style, the +4 pixels hack is not necessary anymore - if (qobject_cast(q->style())) - height -= 4; -#endif if (hasBorder(options)) height += q->isMinimized() ? 8 : 4; return height; -- cgit v1.2.3 From 7201148be075632124db3d6a4046b590dad09884 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Mon, 25 Nov 2013 13:13:11 +0100 Subject: Revert "Android: Use native platform menus." This reverts commit 98f0b4668999d677d8bf91d57ac095d96e7a661c. The native menu popup would never exit its event loop, because there's no listener for the closing of the menu. Since this is very last minute and the change is not ready, we revert it and use the widget menus instead. Change-Id: Ie9ae707300a265130a90d1ccb5f093f50cc0b2fb Reviewed-by: Paul Olav Tvete --- src/widgets/widgets/qmenu.cpp | 8 -------- 1 file changed, 8 deletions(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 0cbd1c720c..3a4fd449c8 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -1834,14 +1834,6 @@ QSize QMenu::sizeHint() const void QMenu::popup(const QPoint &p, QAction *atAction) { Q_D(QMenu); - -#ifdef Q_OS_ANDROID - if (!d->platformMenu.isNull() && !testAttribute(Qt::WA_SetStyle)) { - d->platformMenu->showPopup(window()->windowHandle(), p, 0); - return; - } -#endif - if (d->scroll) { // reset scroll state from last popup if (d->scroll->scrollOffset) d->itemsDirty = 1; // sizeHint will be incorrect if there is previous scroll -- cgit v1.2.3