diff options
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/itemviews/qheaderview.cpp | 3 | ||||
-rw-r--r-- | src/widgets/kernel/qdesktopwidget.cpp | 13 | ||||
-rw-r--r-- | src/widgets/kernel/qdesktopwidget.h | 1 | ||||
-rw-r--r-- | src/widgets/kernel/qdesktopwidget_p.h | 1 | ||||
-rw-r--r-- | src/widgets/styles/qcommonstyle.cpp | 15 | ||||
-rw-r--r-- | src/widgets/styles/qstylesheetstyle.cpp | 16 | ||||
-rw-r--r-- | src/widgets/styles/qwindowsvistastyle.cpp | 17 | ||||
-rw-r--r-- | src/widgets/widgets/qabstractspinbox.cpp | 7 | ||||
-rw-r--r-- | src/widgets/widgets/qabstractspinbox_p.h | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qcalendartextnavigator_p.h | 112 | ||||
-rw-r--r-- | src/widgets/widgets/qcalendarwidget.cpp | 47 | ||||
-rw-r--r-- | src/widgets/widgets/qplaintextedit.cpp | 31 | ||||
-rw-r--r-- | src/widgets/widgets/qplaintextedit.h | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qtextedit.cpp | 31 | ||||
-rw-r--r-- | src/widgets/widgets/qtextedit.h | 2 | ||||
-rw-r--r-- | src/widgets/widgets/widgets.pri | 1 |
16 files changed, 130 insertions, 169 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index c074652cf3..95e845d196 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -2671,8 +2671,9 @@ void QHeaderView::paintSection(QPainter *painter, const QRect &rect, int logical opt.iconAlignment = Qt::AlignVCenter; opt.text = d->model->headerData(logicalIndex, d->orientation, Qt::DisplayRole).toString(); + const int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this); if (d->textElideMode != Qt::ElideNone) - opt.text = opt.fontMetrics.elidedText(opt.text, d->textElideMode , rect.width() - 4); + opt.text = opt.fontMetrics.elidedText(opt.text, d->textElideMode , rect.width() - margin); QVariant variant = d->model->headerData(logicalIndex, d->orientation, Qt::DecorationRole); diff --git a/src/widgets/kernel/qdesktopwidget.cpp b/src/widgets/kernel/qdesktopwidget.cpp index 3975e423a0..2ac1893256 100644 --- a/src/widgets/kernel/qdesktopwidget.cpp +++ b/src/widgets/kernel/qdesktopwidget.cpp @@ -97,6 +97,8 @@ void QDesktopWidgetPrivate::_q_updateScreens() screenWidget->setGeometry(qScreen->geometry()); QObject::connect(qScreen, SIGNAL(geometryChanged(QRect)), q, SLOT(_q_updateScreens()), Qt::QueuedConnection); + QObject::connect(qScreen, SIGNAL(availableGeometryChanged(QRect)), + q, SLOT(_q_availableGeometryChanged()), Qt::QueuedConnection); QObject::connect(qScreen, SIGNAL(destroyed()), q, SLOT(_q_updateScreens()), Qt::QueuedConnection); screens.append(screenWidget); @@ -122,10 +124,15 @@ void QDesktopWidgetPrivate::_q_updateScreens() if (oldLength != targetLength) emit q->screenCountChanged(targetLength); - foreach (int changedScreen, changedScreens) { + foreach (int changedScreen, changedScreens) emit q->resized(changedScreen); - emit q->workAreaResized(changedScreen); - } +} + +void QDesktopWidgetPrivate::_q_availableGeometryChanged() +{ + Q_Q(QDesktopWidget); + if (QScreen *screen = qobject_cast<QScreen *>(q->sender())) + emit q->workAreaResized(QGuiApplication::screens().indexOf(screen)); } QDesktopWidget::QDesktopWidget() diff --git a/src/widgets/kernel/qdesktopwidget.h b/src/widgets/kernel/qdesktopwidget.h index 42c338f696..4bfbf599c1 100644 --- a/src/widgets/kernel/qdesktopwidget.h +++ b/src/widgets/kernel/qdesktopwidget.h @@ -93,6 +93,7 @@ private: Q_DISABLE_COPY(QDesktopWidget) Q_DECLARE_PRIVATE(QDesktopWidget) Q_PRIVATE_SLOT(d_func(), void _q_updateScreens()) + Q_PRIVATE_SLOT(d_func(), void _q_availableGeometryChanged()) friend class QApplication; friend class QApplicationPrivate; diff --git a/src/widgets/kernel/qdesktopwidget_p.h b/src/widgets/kernel/qdesktopwidget_p.h index 160807cf23..89c70e53b0 100644 --- a/src/widgets/kernel/qdesktopwidget_p.h +++ b/src/widgets/kernel/qdesktopwidget_p.h @@ -75,6 +75,7 @@ class QDesktopWidgetPrivate : public QWidgetPrivate { public: ~QDesktopWidgetPrivate() {foreach(QDesktopScreenWidget *s, screens) delete s; } void _q_updateScreens(); + void _q_availableGeometryChanged(); QList<QDesktopScreenWidget *> screens; }; diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 6fbae53804..110682a7b6 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -418,8 +418,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q #ifndef QT_NO_GROUPBOX case PE_FrameGroupBox: if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - const QStyleOptionFrameV2 *frame2 = qstyleoption_cast<const QStyleOptionFrameV2 *>(opt); - if (frame2 && (frame2->features & QStyleOptionFrameV2::Flat)) { + if (frame->features & QStyleOptionFrame::Flat) { QRect fr = frame->rect; QPoint p1(fr.x(), fr.y() + 1); QPoint p2(fr.x() + fr.width(), p1.y()); @@ -2234,7 +2233,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, #endif // QT_NO_ITEMVIEWS #ifndef QT_NO_FRAME case CE_ShapedFrame: - if (const QStyleOptionFrameV3 *f = qstyleoption_cast<const QStyleOptionFrameV3 *>(opt)) { + if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { int frameShape = f->frameShape; int frameShadow = QFrame::Plain; if (f->state & QStyle::State_Sunken) { @@ -2824,14 +2823,14 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt, } break; case SE_FrameContents: - if (const QStyleOptionFrameV2 *f = qstyleoption_cast<const QStyleOptionFrameV2 *>(opt)) { + if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, f, widget); r = opt->rect.adjusted(fw, fw, -fw, -fw); r = visualRect(opt->direction, opt->rect, r); } break; case SE_ShapedFrameContents: - if (const QStyleOptionFrameV3 *f = qstyleoption_cast<const QStyleOptionFrameV3 *>(opt)) { + if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { int frameShape = f->frameShape; int frameShadow = QFrame::Plain; if (f->state & QStyle::State_Sunken) { @@ -3652,7 +3651,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl QRect textRect = proxy()->subControlRect(CC_GroupBox, opt, SC_GroupBoxLabel, widget); QRect checkBoxRect = proxy()->subControlRect(CC_GroupBox, opt, SC_GroupBoxCheckBox, widget); if (groupBox->subControls & QStyle::SC_GroupBoxFrame) { - QStyleOptionFrameV2 frame; + QStyleOptionFrame frame; frame.QStyleOption::operator=(*groupBox); frame.features = groupBox->features; frame.lineWidth = groupBox->lineWidth; @@ -4243,7 +4242,7 @@ QRect QCommonStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex } int frameWidth = 0; - if ((groupBox->features & QStyleOptionFrameV2::Flat) == 0) + if ((groupBox->features & QStyleOptionFrame::Flat) == 0) frameWidth = proxy()->pixelMetric(PM_DefaultFrameWidth, groupBox, widget); ret = frameRect.adjusted(frameWidth, frameWidth + topHeight - topMargin, -frameWidth, -frameWidth); @@ -4255,7 +4254,7 @@ QRect QCommonStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex QFontMetrics fontMetrics = groupBox->fontMetrics; int h = fontMetrics.height(); int tw = fontMetrics.size(Qt::TextShowMnemonic, groupBox->text + QLatin1Char(' ')).width(); - int marg = (groupBox->features & QStyleOptionFrameV2::Flat) ? 0 : 8; + int marg = (groupBox->features & QStyleOptionFrame::Flat) ? 0 : 8; ret = groupBox->rect.adjusted(marg, 0, -marg, 0); ret.setHeight(h); diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp index 4d9f3a48e2..5e6e528f6d 100644 --- a/src/widgets/styles/qstylesheetstyle.cpp +++ b/src/widgets/styles/qstylesheetstyle.cpp @@ -1827,7 +1827,7 @@ QRenderRule QStyleSheetStyle::renderRule(const QObject *obj, const QStyleOption extraClass |= PseudoClass_Frameless; #endif // QT_NO_SPINBOX } else if (const QStyleOptionGroupBox *gb = qstyleoption_cast<const QStyleOptionGroupBox *>(opt)) { - if (gb->features & QStyleOptionFrameV2::Flat) + if (gb->features & QStyleOptionFrame::Flat) extraClass |= PseudoClass_Flat; if (gb->lineWidth == 0) extraClass |= PseudoClass_Frameless; @@ -1934,10 +1934,8 @@ QRenderRule QStyleSheetStyle::renderRule(const QObject *obj, const QStyleOption } else if (const QStyleOptionFrame *frm = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { if (frm->lineWidth == 0) extraClass |= PseudoClass_Frameless; - if (const QStyleOptionFrameV2 *frame2 = qstyleoption_cast<const QStyleOptionFrameV2 *>(opt)) { - if (frame2->features & QStyleOptionFrameV2::Flat) - extraClass |= PseudoClass_Flat; - } + if (frm->features & QStyleOptionFrame::Flat) + extraClass |= PseudoClass_Flat; } #ifndef QT_NO_TOOLBAR else if (const QStyleOptionToolBar *tb = qstyleoption_cast<const QStyleOptionToolBar *>(opt)) { @@ -2994,7 +2992,7 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC } frameRect = subControlRect(CC_GroupBox, opt, SC_GroupBoxFrame, w); - QStyleOptionFrameV2 frame; + QStyleOptionFrame frame; frame.QStyleOption::operator=(*gb); frame.features = gb->features; frame.lineWidth = gb->lineWidth; @@ -4089,7 +4087,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q case CE_ShapedFrame: if (const QStyleOptionFrame *frm = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { if (rule.hasNativeBorder()) { - QStyleOptionFrameV3 frmOpt(*frm); + QStyleOptionFrame frmOpt(*frm); rule.configurePalette(&frmOpt.palette, QPalette::Text, QPalette::Base); frmOpt.rect = rule.borderRect(frmOpt.rect); baseStyle()->drawControl(ce, &frmOpt, p, w); @@ -4224,10 +4222,8 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op case PE_Frame: if (const QStyleOptionFrame *frm = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { if (rule.hasNativeBorder()) { - QStyleOptionFrameV2 frmOpt(*frm); + QStyleOptionFrame frmOpt(*frm); rule.configurePalette(&frmOpt.palette, QPalette::Text, QPalette::Base); - if (!qstyleoption_cast<const QStyleOptionFrameV3 *>(opt)) //if it comes from CE_ShapedFrame, the margins are already sustracted - frmOpt.rect = rule.borderRect(frmOpt.rect); baseStyle()->drawPrimitive(pe, &frmOpt, p, w); } else { rule.drawBorder(p, rule.borderRect(opt->rect)); diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp index bdc5a6ce0e..2d09230436 100644 --- a/src/widgets/styles/qwindowsvistastyle.cpp +++ b/src/widgets/styles/qwindowsvistastyle.cpp @@ -1183,7 +1183,8 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption case CE_MenuItem: if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) { // windows always has a check column, regardless whether we have an icon or not - int checkcol = 25; + int checkcol = 25 / QWindowsXPStylePrivate::devicePixelRatio(widget); + const int gutterWidth = 3 / QWindowsXPStylePrivate::devicePixelRatio(widget); { XPThemeData theme(widget, 0, QWindowsXPStylePrivate::MenuTheme, MENU_POPUPCHECKBACKGROUND, MBI_HOT); @@ -1192,7 +1193,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption themeSize.stateId = 0; const QSize size = themeSize.size() / QWindowsXPStylePrivate::devicePixelRatio(widget); const QMargins margins = themeSize.margins() / QWindowsXPStylePrivate::devicePixelRatio(widget); - checkcol = qMax(menuitem->maxIconWidth, int(3 + size.width() + margins.left() + margins.right())); + checkcol = qMax(menuitem->maxIconWidth, gutterWidth + size.width() + margins.left() + margins.right()); } QRect rect = option->rect; @@ -1201,7 +1202,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption checkcol += rect.x(); QPoint p1 = QStyle::visualPos(option->direction, menuitem->rect, QPoint(checkcol, rect.top())); QPoint p2 = QStyle::visualPos(option->direction, menuitem->rect, QPoint(checkcol, rect.bottom())); - QRect gutterRect(p1.x(), p1.y(), 3, p2.y() - p1.y() + 1); + QRect gutterRect(p1.x(), p1.y(), gutterWidth, p2.y() - p1.y() + 1); XPThemeData theme2(widget, painter, QWindowsXPStylePrivate::MenuTheme, MENU_POPUPGUTTER, stateId, gutterRect); d->drawBackground(theme2); @@ -1216,10 +1217,12 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption if (menuitem->menuItemType == QStyleOptionMenuItem::Separator) { int yoff = y-2 + h / 2; + const int separatorSize = 6 / QWindowsXPStylePrivate::devicePixelRatio(widget); QPoint p1 = QPoint(x + checkcol, yoff); - QPoint p2 = QPoint(x + w + 6 , yoff); + QPoint p2 = QPoint(x + w + separatorSize, yoff); stateId = MBI_HOT; - QRect subRect(p1.x() + (3 - menuitem->rect.x()), p1.y(), p2.x() - p1.x(), 6); + QRect subRect(p1.x() + (gutterWidth - menuitem->rect.x()), p1.y(), + p2.x() - p1.x(), separatorSize); subRect = QStyle::visualRect(option->direction, option->rect, subRect ); XPThemeData theme2(widget, painter, QWindowsXPStylePrivate::MenuTheme, @@ -1229,7 +1232,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption } QRect vCheckRect = visualRect(option->direction, menuitem->rect, QRect(menuitem->rect.x(), - menuitem->rect.y(), checkcol - (3 + menuitem->rect.x()), menuitem->rect.height())); + menuitem->rect.y(), checkcol - (gutterWidth + menuitem->rect.x()), menuitem->rect.height())); if (act) { stateId = dis ? MBI_DISABLED : MBI_HOT; @@ -1294,7 +1297,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption if (dis) painter->setPen(textColor); - int xm = windowsItemFrame + checkcol + windowsItemHMargin + (3 - menuitem->rect.x()) - 1; + int xm = windowsItemFrame + checkcol + windowsItemHMargin + (gutterWidth - menuitem->rect.x()) - 1; int xpos = menuitem->rect.x() + xm; QRect textRect(xpos, y + windowsItemVMargin, w - xm - windowsRightBorder - tab + 1, h - 2 * windowsItemVMargin); QRect vTextRect = visualRect(option->direction, menuitem->rect, textRect); diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp index 4aed153932..0d8c7957e2 100644 --- a/src/widgets/widgets/qabstractspinbox.cpp +++ b/src/widgets/widgets/qabstractspinbox.cpp @@ -1100,7 +1100,10 @@ void QAbstractSpinBox::keyReleaseEvent(QKeyEvent *event) #ifndef QT_NO_WHEELEVENT void QAbstractSpinBox::wheelEvent(QWheelEvent *event) { - const int steps = (event->delta() > 0 ? 1 : -1); + Q_D(QAbstractSpinBox); + d->wheelDeltaRemainder += event->angleDelta().y(); + const int steps = d->wheelDeltaRemainder / 120; + d->wheelDeltaRemainder -= steps * 120; if (stepEnabled() & (steps > 0 ? StepUpEnabled : StepDownEnabled)) stepBy(event->modifiers() & Qt::ControlModifier ? steps * 10 : steps); event->accept(); @@ -1344,7 +1347,7 @@ QAbstractSpinBoxPrivate::QAbstractSpinBoxPrivate() ignoreCursorPositionChanged(false), frame(true), accelerate(false), keyboardTracking(true), cleared(false), ignoreUpdateEdit(false), correctionMode(QAbstractSpinBox::CorrectToPreviousValue), acceleration(0), hoverControl(QStyle::SC_None), buttonSymbols(QAbstractSpinBox::UpDownArrows), validator(0), - showGroupSeparator(0) + showGroupSeparator(0), wheelDeltaRemainder(0) { } diff --git a/src/widgets/widgets/qabstractspinbox_p.h b/src/widgets/widgets/qabstractspinbox_p.h index da9f1d9757..055fe92591 100644 --- a/src/widgets/widgets/qabstractspinbox_p.h +++ b/src/widgets/widgets/qabstractspinbox_p.h @@ -151,6 +151,7 @@ public: QAbstractSpinBox::ButtonSymbols buttonSymbols; QSpinBoxValidator *validator; uint showGroupSeparator : 1; + int wheelDeltaRemainder; }; class QSpinBoxValidator : public QValidator diff --git a/src/widgets/widgets/qcalendartextnavigator_p.h b/src/widgets/widgets/qcalendartextnavigator_p.h deleted file mode 100644 index 88bd3c6a71..0000000000 --- a/src/widgets/widgets/qcalendartextnavigator_p.h +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QCALENDARTEXTNAVIGATOR_P_H -#define QCALENDARTEXTNAVIGATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtCore/qdatetime.h> -#include <QtCore/qbasictimer.h> - -#ifndef QT_NO_CALENDARWIDGET - -QT_BEGIN_NAMESPACE - -class QLabel; -class QCalendarDateValidator; -class QFrame; - -class QCalendarTextNavigator: public QObject -{ - Q_OBJECT -public: - QCalendarTextNavigator(QObject *parent = 0) - : QObject(parent), m_dateText(0), m_dateFrame(0), m_dateValidator(0), m_widget(0), m_editDelay(1500), m_date(QDate::currentDate()) { } - - QWidget *widget() const; - void setWidget(QWidget *widget); - - int dateEditAcceptDelay() const; - void setDateEditAcceptDelay(int delay); - - QDate date() const; - void setDate(const QDate &date); - - bool eventFilter(QObject *o, QEvent *e); - void timerEvent(QTimerEvent *e); - -signals: - void dateChanged(const QDate &date); - void editingFinished(); - -private: - void applyDate(); - void updateDateLabel(); - void createDateLabel(); - void removeDateLabel(); - - QLabel *m_dateText; - QFrame *m_dateFrame; - QBasicTimer m_acceptTimer; - QCalendarDateValidator *m_dateValidator; - QWidget *m_widget; - int m_editDelay; - - QDate m_date; -}; - -QT_END_NAMESPACE - -#endif // QT_NO_CALENDARWIDGET - -#endif - diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp index 8755f99288..b281b98cb0 100644 --- a/src/widgets/widgets/qcalendarwidget.cpp +++ b/src/widgets/widgets/qcalendarwidget.cpp @@ -60,7 +60,6 @@ #include <qapplication.h> #include <qbasictimer.h> #include <qstylepainter.h> -#include <private/qcalendartextnavigator_p.h> QT_BEGIN_NAMESPACE @@ -72,6 +71,8 @@ enum { MinimumDayOffset = 1 }; +namespace { + class QCalendarDateSectionValidator { public: @@ -589,6 +590,7 @@ void QCalendarDateValidator::setFormat(const QString &format) const QChar nextChar = format.at(pos); if (quoting) { separator += nextChar; + quoting = false; } else { SectionToken *token = 0; if (nextChar == QLatin1Char('d')) { @@ -671,6 +673,47 @@ void QCalendarDateValidator::handleKeyEvent(QKeyEvent *keyEvent) toPreviousToken(); } +////////////////////////////////// + +class QCalendarTextNavigator: public QObject +{ + Q_OBJECT +public: + QCalendarTextNavigator(QObject *parent = 0) + : QObject(parent), m_dateText(0), m_dateFrame(0), m_dateValidator(0), m_widget(0), m_editDelay(1500), m_date(QDate::currentDate()) { } + + QWidget *widget() const; + void setWidget(QWidget *widget); + + int dateEditAcceptDelay() const; + void setDateEditAcceptDelay(int delay); + + QDate date() const; + void setDate(const QDate &date); + + bool eventFilter(QObject *o, QEvent *e); + void timerEvent(QTimerEvent *e); + +signals: + void dateChanged(const QDate &date); + void editingFinished(); + +private: + void applyDate(); + void updateDateLabel(); + void createDateLabel(); + void removeDateLabel(); + + QLabel *m_dateText; + QFrame *m_dateFrame; + QBasicTimer m_acceptTimer; + QCalendarDateValidator *m_dateValidator; + QWidget *m_widget; + int m_editDelay; + + QDate m_date; +}; + QWidget *QCalendarTextNavigator::widget() const { return m_widget; @@ -1573,6 +1616,8 @@ protected: } }; +} // unnamed namespace + class QCalendarWidgetPrivate : public QWidgetPrivate { Q_DECLARE_PUBLIC(QCalendarWidget) diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index 3ff8e8cbbf..f1471cc6e4 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -2277,11 +2277,8 @@ void QPlainTextEdit::wheelEvent(QWheelEvent *e) Q_D(QPlainTextEdit); if (!(d->control->textInteractionFlags() & Qt::TextEditable)) { if (e->modifiers() & Qt::ControlModifier) { - const int delta = e->delta(); - if (delta < 0) - zoomOut(); - else if (delta > 0) - zoomIn(); + float delta = e->angleDelta().y() / 120.f; + zoomInF(delta); return; } } @@ -2301,12 +2298,7 @@ void QPlainTextEdit::wheelEvent(QWheelEvent *e) */ void QPlainTextEdit::zoomIn(int range) { - QFont f = font(); - const int newSize = f.pointSize() + range; - if (newSize <= 0) - return; - f.setPointSize(newSize); - setFont(f); + zoomInF(range); } /*! @@ -2322,7 +2314,22 @@ void QPlainTextEdit::zoomIn(int range) */ void QPlainTextEdit::zoomOut(int range) { - zoomIn(-range); + zoomInF(-range); +} + +/*! + \internal +*/ +void QPlainTextEdit::zoomInF(float range) +{ + if (range == 0.f) + return; + QFont f = font(); + const float newSize = f.pointSizeF() + range; + if (newSize <= 0) + return; + f.setPointSizeF(newSize); + setFont(f); } #ifndef QT_NO_CONTEXTMENU diff --git a/src/widgets/widgets/qplaintextedit.h b/src/widgets/widgets/qplaintextedit.h index 54cd3e14ed..f61d9c3aaa 100644 --- a/src/widgets/widgets/qplaintextedit.h +++ b/src/widgets/widgets/qplaintextedit.h @@ -271,6 +271,7 @@ protected: QRectF blockBoundingGeometry(const QTextBlock &block) const; QAbstractTextDocumentLayout::PaintContext getPaintContext() const; + void zoomInF(float range); private: Q_DISABLE_COPY(QPlainTextEdit) diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index f106b70c12..b4dd09d6d4 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -1813,11 +1813,8 @@ void QTextEdit::wheelEvent(QWheelEvent *e) Q_D(QTextEdit); if (!(d->control->textInteractionFlags() & Qt::TextEditable)) { if (e->modifiers() & Qt::ControlModifier) { - const int delta = e->delta(); - if (delta < 0) - zoomOut(); - else if (delta > 0) - zoomIn(); + float delta = e->angleDelta().y() / 120.f; + zoomInF(delta); return; } } @@ -2276,12 +2273,7 @@ void QTextEdit::scrollToAnchor(const QString &name) */ void QTextEdit::zoomIn(int range) { - QFont f = font(); - const int newSize = f.pointSize() + range; - if (newSize <= 0) - return; - f.setPointSize(newSize); - setFont(f); + zoomInF(range); } /*! @@ -2297,7 +2289,22 @@ void QTextEdit::zoomIn(int range) */ void QTextEdit::zoomOut(int range) { - zoomIn(-range); + zoomInF(-range); +} + +/*! + \internal +*/ +void QTextEdit::zoomInF(float range) +{ + if (range == 0.f) + return; + QFont f = font(); + const float newSize = f.pointSizeF() + range; + if (newSize <= 0) + return; + f.setPointSizeF(newSize); + setFont(f); } /*! diff --git a/src/widgets/widgets/qtextedit.h b/src/widgets/widgets/qtextedit.h index a283a51b90..d23d2d59ce 100644 --- a/src/widgets/widgets/qtextedit.h +++ b/src/widgets/widgets/qtextedit.h @@ -304,6 +304,8 @@ protected: virtual void scrollContentsBy(int dx, int dy); virtual void doSetTextCursor(const QTextCursor &cursor); + void zoomInF(float range); + private: Q_DISABLE_COPY(QTextEdit) Q_PRIVATE_SLOT(d_func(), void _q_repaintContents(const QRectF &r)) diff --git a/src/widgets/widgets/widgets.pri b/src/widgets/widgets/widgets.pri index a924ba9acc..342d2093db 100644 --- a/src/widgets/widgets/widgets.pri +++ b/src/widgets/widgets/widgets.pri @@ -8,7 +8,6 @@ HEADERS += \ widgets/qabstractslider_p.h \ widgets/qabstractspinbox.h \ widgets/qabstractspinbox_p.h \ - widgets/qcalendartextnavigator_p.h \ widgets/qcalendarwidget.h \ widgets/qcheckbox.h \ widgets/qcombobox.h \ |