diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-02-25 21:34:50 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2016-02-25 21:34:50 +0000 |
commit | 5cca77df732f3481de3db0480012155d185c0845 (patch) | |
tree | 414cb54da4d6af6a0fa1458e5adbe9a53064a578 /src | |
parent | 52a9df75097ed409eca5a57727244d88419f1dcc (diff) | |
parent | ee6c83db18e65e4eec7b7280213b780576b24c03 (diff) |
Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7
Diffstat (limited to 'src')
114 files changed, 184 insertions, 67 deletions
diff --git a/src/imports/calendar/qquickcalendar.cpp b/src/imports/calendar/qquickcalendar.cpp index 5a14bb27..b64759f2 100644 --- a/src/imports/calendar/qquickcalendar.cpp +++ b/src/imports/calendar/qquickcalendar.cpp @@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE with the JavaScript Date type, that is used by the QML language. This means that \c Date::getMonth() can be assigned to MonthGrid::month and WeekNumberColumn::month as is. When dealing with dealing with month numbers - diretly, it is highly recommended to use the following enumeration values + directly, it is highly recommended to use the following enumeration values to avoid confusion. \value Calendar.January January (0) diff --git a/src/imports/calendar/qquickcalendarmodel.cpp b/src/imports/calendar/qquickcalendarmodel.cpp index 6b59d45a..9d214450 100644 --- a/src/imports/calendar/qquickcalendarmodel.cpp +++ b/src/imports/calendar/qquickcalendarmodel.cpp @@ -60,9 +60,28 @@ QT_BEGIN_NAMESPACE \row \li \b model.year : int \li The number of the year \endtable + The Qt Labs Calendar module uses 0-based month numbers to be consistent + with the JavaScript Date type, that is used by the QML language. This + means that \c Date::getMonth() can be passed to the methods as is. When + dealing with dealing with month numbers directly, it is highly recommended + to use the following enumeration values to avoid confusion. + + \value Calendar.January January (0) + \value Calendar.February February (1) + \value Calendar.March March (2) + \value Calendar.April April (3) + \value Calendar.May May (4) + \value Calendar.June June (5) + \value Calendar.July July (6) + \value Calendar.August August (7) + \value Calendar.September September (8) + \value Calendar.October October (9) + \value Calendar.November November (10) + \value Calendar.December December (11) + \labs - \sa MonthGrid + \sa MonthGrid, Calendar */ class QQuickCalendarModelPrivate : public QAbstractItemModelPrivate @@ -87,9 +106,16 @@ public: int QQuickCalendarModelPrivate::getCount(const QDate& from, const QDate &to) { + if (!from.isValid() || !to.isValid()) + return 0; + QDate f(from.year(), from.month(), 1); QDate t(to.year(), to.month(), to.daysInMonth()); - QDate r = QDate(1, 1, 1).addDays(f.daysTo(t)); + int days = f.daysTo(t); + if (days < 0) + return 0; + + QDate r = QDate(1, 1, 1).addDays(days); int years = r.year() - 1; int months = r.month() - 1; return 12 * years + months + (r.day() / t.day()); @@ -169,7 +195,7 @@ void QQuickCalendarModel::setTo(const QDate &to) int QQuickCalendarModel::monthAt(int index) const { Q_D(const QQuickCalendarModel); - return d->from.addMonths(index).month(); + return d->from.addMonths(index).month() - 1; } /*! @@ -190,7 +216,8 @@ int QQuickCalendarModel::yearAt(int index) const */ int QQuickCalendarModel::indexOf(const QDate &date) const { - return indexOf(date.year(), date.month()); + Q_D(const QQuickCalendarModel); + return d->getCount(d->from, date) - 1; } /*! @@ -200,8 +227,7 @@ int QQuickCalendarModel::indexOf(const QDate &date) const */ int QQuickCalendarModel::indexOf(int year, int month) const { - Q_D(const QQuickCalendarModel); - return d->getCount(d->from, QDate(year, month, 1)) - 1; + return indexOf(QDate(year, month + 1, 1)); } QVariant QQuickCalendarModel::data(const QModelIndex &index, int role) const diff --git a/src/imports/calendar/qquickmonthgrid.cpp b/src/imports/calendar/qquickmonthgrid.cpp index 8fe9ad63..c6ad3d53 100644 --- a/src/imports/calendar/qquickmonthgrid.cpp +++ b/src/imports/calendar/qquickmonthgrid.cpp @@ -188,7 +188,7 @@ QQuickMonthGrid::QQuickMonthGrid(QQuickItem *parent) : The Qt Labs Calendar module uses 0-based month numbers to be consistent with the JavaScript Date type, that is used by the QML language. This means that \c Date::getMonth() can be assigned to this property as is. - When dealing with dealing with month numbers diretly, it is highly + When dealing with dealing with month numbers directly, it is highly recommended to use the following enumeration values to avoid confusion. \value Calendar.January January (0) diff --git a/src/imports/calendar/qquickweeknumbercolumn.cpp b/src/imports/calendar/qquickweeknumbercolumn.cpp index 031b0555..a128b500 100644 --- a/src/imports/calendar/qquickweeknumbercolumn.cpp +++ b/src/imports/calendar/qquickweeknumbercolumn.cpp @@ -116,7 +116,7 @@ QQuickWeekNumberColumn::QQuickWeekNumberColumn(QQuickItem *parent) : The Qt Labs Calendar module uses 0-based month numbers to be consistent with the JavaScript Date type, that is used by the QML language. This means that \c Date::getMonth() can be assigned to this property as is. - When dealing with dealing with month numbers diretly, it is highly + When dealing with dealing with month numbers directly, it is highly recommended to use the following enumeration values to avoid confusion. \value Calendar.January January (0) diff --git a/src/imports/controls/ComboBox.qml b/src/imports/controls/ComboBox.qml index 30f45af3..6e3dc91b 100644 --- a/src/imports/controls/ComboBox.qml +++ b/src/imports/controls/ComboBox.qml @@ -101,7 +101,7 @@ T.ComboBox { popup: T.Popup { y: control.height - 1 implicitWidth: control.width - implicitHeight: Math.min(396, listview.contentHeight) + implicitHeight: listview.contentHeight topMargin: 6 bottomMargin: 6 diff --git a/src/imports/controls/controls.pro b/src/imports/controls/controls.pro index 0ccdf5a0..9a3f9628 100644 --- a/src/imports/controls/controls.pro +++ b/src/imports/controls/controls.pro @@ -25,7 +25,7 @@ RESOURCES += \ $$PWD/qtlabscontrolsplugin.qrc include(controls.pri) -include(designer/designer.pri) +!ios: include(designer/designer.pri) qtquickcompiler { qmlfiles.prefix = /qt-project.org/imports/Qt/labs/controls diff --git a/src/imports/controls/designer/designer.pri b/src/imports/controls/designer/designer.pri index 601fc4b4..1589723c 100644 --- a/src/imports/controls/designer/designer.pri +++ b/src/imports/controls/designer/designer.pri @@ -29,5 +29,4 @@ QML_FILES += \ $$PWD/TumblerSpecifics.qml QML_FILES += \ - $$PWD/images/todo.png \ - $$PWD/images/todo16.png + $$PWD/images/*.png diff --git a/src/imports/controls/designer/images/busyindicator-icon.png b/src/imports/controls/designer/images/busyindicator-icon.png Binary files differnew file mode 100644 index 00000000..307dccf9 --- /dev/null +++ b/src/imports/controls/designer/images/busyindicator-icon.png diff --git a/src/imports/controls/designer/images/busyindicator-icon16.png b/src/imports/controls/designer/images/busyindicator-icon16.png Binary files differnew file mode 100644 index 00000000..1258b92b --- /dev/null +++ b/src/imports/controls/designer/images/busyindicator-icon16.png diff --git a/src/imports/controls/designer/images/busyindicator-icon16@2x.png b/src/imports/controls/designer/images/busyindicator-icon16@2x.png Binary files differnew file mode 100644 index 00000000..5e5bd2ff --- /dev/null +++ b/src/imports/controls/designer/images/busyindicator-icon16@2x.png diff --git a/src/imports/controls/designer/images/busyindicator-icon@2x.png b/src/imports/controls/designer/images/busyindicator-icon@2x.png Binary files differnew file mode 100644 index 00000000..04c0e3c8 --- /dev/null +++ b/src/imports/controls/designer/images/busyindicator-icon@2x.png diff --git a/src/imports/controls/designer/images/button-icon.png b/src/imports/controls/designer/images/button-icon.png Binary files differnew file mode 100644 index 00000000..37ace9a6 --- /dev/null +++ b/src/imports/controls/designer/images/button-icon.png diff --git a/src/imports/controls/designer/images/button-icon16.png b/src/imports/controls/designer/images/button-icon16.png Binary files differnew file mode 100644 index 00000000..c8a1f80c --- /dev/null +++ b/src/imports/controls/designer/images/button-icon16.png diff --git a/src/imports/controls/designer/images/button-icon16@2x.png b/src/imports/controls/designer/images/button-icon16@2x.png Binary files differnew file mode 100644 index 00000000..8883ae0b --- /dev/null +++ b/src/imports/controls/designer/images/button-icon16@2x.png diff --git a/src/imports/controls/designer/images/button-icon@2x.png b/src/imports/controls/designer/images/button-icon@2x.png Binary files differnew file mode 100644 index 00000000..0070c51b --- /dev/null +++ b/src/imports/controls/designer/images/button-icon@2x.png diff --git a/src/imports/controls/designer/images/checkbox-icon.png b/src/imports/controls/designer/images/checkbox-icon.png Binary files differnew file mode 100644 index 00000000..466af6f3 --- /dev/null +++ b/src/imports/controls/designer/images/checkbox-icon.png diff --git a/src/imports/controls/designer/images/checkbox-icon16.png b/src/imports/controls/designer/images/checkbox-icon16.png Binary files differnew file mode 100644 index 00000000..45f92ee4 --- /dev/null +++ b/src/imports/controls/designer/images/checkbox-icon16.png diff --git a/src/imports/controls/designer/images/checkbox-icon16@2x.png b/src/imports/controls/designer/images/checkbox-icon16@2x.png Binary files differnew file mode 100644 index 00000000..4e78e7ba --- /dev/null +++ b/src/imports/controls/designer/images/checkbox-icon16@2x.png diff --git a/src/imports/controls/designer/images/checkbox-icon@2x.png b/src/imports/controls/designer/images/checkbox-icon@2x.png Binary files differnew file mode 100644 index 00000000..750161dd --- /dev/null +++ b/src/imports/controls/designer/images/checkbox-icon@2x.png diff --git a/src/imports/controls/designer/images/combobox-icon.png b/src/imports/controls/designer/images/combobox-icon.png Binary files differnew file mode 100644 index 00000000..9f485c77 --- /dev/null +++ b/src/imports/controls/designer/images/combobox-icon.png diff --git a/src/imports/controls/designer/images/combobox-icon16.png b/src/imports/controls/designer/images/combobox-icon16.png Binary files differnew file mode 100644 index 00000000..f2d1ec7e --- /dev/null +++ b/src/imports/controls/designer/images/combobox-icon16.png diff --git a/src/imports/controls/designer/images/combobox-icon16@2x.png b/src/imports/controls/designer/images/combobox-icon16@2x.png Binary files differnew file mode 100644 index 00000000..c24f275d --- /dev/null +++ b/src/imports/controls/designer/images/combobox-icon16@2x.png diff --git a/src/imports/controls/designer/images/combobox-icon@2x.png b/src/imports/controls/designer/images/combobox-icon@2x.png Binary files differnew file mode 100644 index 00000000..8df1fd41 --- /dev/null +++ b/src/imports/controls/designer/images/combobox-icon@2x.png diff --git a/src/imports/controls/designer/images/dial-icon.png b/src/imports/controls/designer/images/dial-icon.png Binary files differnew file mode 100644 index 00000000..8989c27e --- /dev/null +++ b/src/imports/controls/designer/images/dial-icon.png diff --git a/src/imports/controls/designer/images/dial-icon16.png b/src/imports/controls/designer/images/dial-icon16.png Binary files differnew file mode 100644 index 00000000..bfbe9d3b --- /dev/null +++ b/src/imports/controls/designer/images/dial-icon16.png diff --git a/src/imports/controls/designer/images/dial-icon16@2x.png b/src/imports/controls/designer/images/dial-icon16@2x.png Binary files differnew file mode 100644 index 00000000..d26fddcf --- /dev/null +++ b/src/imports/controls/designer/images/dial-icon16@2x.png diff --git a/src/imports/controls/designer/images/dial-icon@2x.png b/src/imports/controls/designer/images/dial-icon@2x.png Binary files differnew file mode 100644 index 00000000..8030a0cf --- /dev/null +++ b/src/imports/controls/designer/images/dial-icon@2x.png diff --git a/src/imports/controls/designer/images/frame-icon.png b/src/imports/controls/designer/images/frame-icon.png Binary files differnew file mode 100644 index 00000000..b584d3ed --- /dev/null +++ b/src/imports/controls/designer/images/frame-icon.png diff --git a/src/imports/controls/designer/images/frame-icon16.png b/src/imports/controls/designer/images/frame-icon16.png Binary files differnew file mode 100644 index 00000000..65b033d8 --- /dev/null +++ b/src/imports/controls/designer/images/frame-icon16.png diff --git a/src/imports/controls/designer/images/frame-icon16@2x.png b/src/imports/controls/designer/images/frame-icon16@2x.png Binary files differnew file mode 100644 index 00000000..7076acd0 --- /dev/null +++ b/src/imports/controls/designer/images/frame-icon16@2x.png diff --git a/src/imports/controls/designer/images/frame-icon@2x.png b/src/imports/controls/designer/images/frame-icon@2x.png Binary files differnew file mode 100644 index 00000000..70e72599 --- /dev/null +++ b/src/imports/controls/designer/images/frame-icon@2x.png diff --git a/src/imports/controls/designer/images/groupbox-icon.png b/src/imports/controls/designer/images/groupbox-icon.png Binary files differnew file mode 100644 index 00000000..5525d96c --- /dev/null +++ b/src/imports/controls/designer/images/groupbox-icon.png diff --git a/src/imports/controls/designer/images/groupbox-icon16.png b/src/imports/controls/designer/images/groupbox-icon16.png Binary files differnew file mode 100644 index 00000000..3d228fc1 --- /dev/null +++ b/src/imports/controls/designer/images/groupbox-icon16.png diff --git a/src/imports/controls/designer/images/groupbox-icon16@2x.png b/src/imports/controls/designer/images/groupbox-icon16@2x.png Binary files differnew file mode 100644 index 00000000..c870a24f --- /dev/null +++ b/src/imports/controls/designer/images/groupbox-icon16@2x.png diff --git a/src/imports/controls/designer/images/groupbox-icon@2x.png b/src/imports/controls/designer/images/groupbox-icon@2x.png Binary files differnew file mode 100644 index 00000000..cb46a585 --- /dev/null +++ b/src/imports/controls/designer/images/groupbox-icon@2x.png diff --git a/src/imports/controls/designer/images/itemdelegate-icon.png b/src/imports/controls/designer/images/itemdelegate-icon.png Binary files differnew file mode 100644 index 00000000..d296eed1 --- /dev/null +++ b/src/imports/controls/designer/images/itemdelegate-icon.png diff --git a/src/imports/controls/designer/images/itemdelegate-icon16.png b/src/imports/controls/designer/images/itemdelegate-icon16.png Binary files differnew file mode 100644 index 00000000..bf5727fb --- /dev/null +++ b/src/imports/controls/designer/images/itemdelegate-icon16.png diff --git a/src/imports/controls/designer/images/itemdelegate-icon16@2x.png b/src/imports/controls/designer/images/itemdelegate-icon16@2x.png Binary files differnew file mode 100644 index 00000000..e7e65326 --- /dev/null +++ b/src/imports/controls/designer/images/itemdelegate-icon16@2x.png diff --git a/src/imports/controls/designer/images/itemdelegate-icon@2x.png b/src/imports/controls/designer/images/itemdelegate-icon@2x.png Binary files differnew file mode 100644 index 00000000..1cbe9f79 --- /dev/null +++ b/src/imports/controls/designer/images/itemdelegate-icon@2x.png diff --git a/src/imports/controls/designer/images/label-icon.png b/src/imports/controls/designer/images/label-icon.png Binary files differnew file mode 100644 index 00000000..e551d62b --- /dev/null +++ b/src/imports/controls/designer/images/label-icon.png diff --git a/src/imports/controls/designer/images/label-icon16.png b/src/imports/controls/designer/images/label-icon16.png Binary files differnew file mode 100644 index 00000000..02221a83 --- /dev/null +++ b/src/imports/controls/designer/images/label-icon16.png diff --git a/src/imports/controls/designer/images/label-icon16@2x.png b/src/imports/controls/designer/images/label-icon16@2x.png Binary files differnew file mode 100644 index 00000000..08b71953 --- /dev/null +++ b/src/imports/controls/designer/images/label-icon16@2x.png diff --git a/src/imports/controls/designer/images/label-icon@2x.png b/src/imports/controls/designer/images/label-icon@2x.png Binary files differnew file mode 100644 index 00000000..5b185656 --- /dev/null +++ b/src/imports/controls/designer/images/label-icon@2x.png diff --git a/src/imports/controls/designer/images/pageindicator-icon.png b/src/imports/controls/designer/images/pageindicator-icon.png Binary files differnew file mode 100644 index 00000000..8b190422 --- /dev/null +++ b/src/imports/controls/designer/images/pageindicator-icon.png diff --git a/src/imports/controls/designer/images/pageindicator-icon16.png b/src/imports/controls/designer/images/pageindicator-icon16.png Binary files differnew file mode 100644 index 00000000..ea6cfaad --- /dev/null +++ b/src/imports/controls/designer/images/pageindicator-icon16.png diff --git a/src/imports/controls/designer/images/pageindicator-icon16@2x.png b/src/imports/controls/designer/images/pageindicator-icon16@2x.png Binary files differnew file mode 100644 index 00000000..bb52d401 --- /dev/null +++ b/src/imports/controls/designer/images/pageindicator-icon16@2x.png diff --git a/src/imports/controls/designer/images/pageindicator-icon@2x.png b/src/imports/controls/designer/images/pageindicator-icon@2x.png Binary files differnew file mode 100644 index 00000000..98cc8ea2 --- /dev/null +++ b/src/imports/controls/designer/images/pageindicator-icon@2x.png diff --git a/src/imports/controls/designer/images/pane-icon.png b/src/imports/controls/designer/images/pane-icon.png Binary files differnew file mode 100644 index 00000000..78ba7dc8 --- /dev/null +++ b/src/imports/controls/designer/images/pane-icon.png diff --git a/src/imports/controls/designer/images/pane-icon16.png b/src/imports/controls/designer/images/pane-icon16.png Binary files differnew file mode 100644 index 00000000..aa8eaa35 --- /dev/null +++ b/src/imports/controls/designer/images/pane-icon16.png diff --git a/src/imports/controls/designer/images/pane-icon16@2x.png b/src/imports/controls/designer/images/pane-icon16@2x.png Binary files differnew file mode 100644 index 00000000..dfacdcf7 --- /dev/null +++ b/src/imports/controls/designer/images/pane-icon16@2x.png diff --git a/src/imports/controls/designer/images/pane-icon@2x.png b/src/imports/controls/designer/images/pane-icon@2x.png Binary files differnew file mode 100644 index 00000000..649314fd --- /dev/null +++ b/src/imports/controls/designer/images/pane-icon@2x.png diff --git a/src/imports/controls/designer/images/placeholder-icon.png b/src/imports/controls/designer/images/placeholder-icon.png Binary files differnew file mode 100644 index 00000000..65beb4ac --- /dev/null +++ b/src/imports/controls/designer/images/placeholder-icon.png diff --git a/src/imports/controls/designer/images/placeholder-icon16.png b/src/imports/controls/designer/images/placeholder-icon16.png Binary files differnew file mode 100644 index 00000000..a3e2f2f7 --- /dev/null +++ b/src/imports/controls/designer/images/placeholder-icon16.png diff --git a/src/imports/controls/designer/images/placeholder-icon16@2x.png b/src/imports/controls/designer/images/placeholder-icon16@2x.png Binary files differnew file mode 100644 index 00000000..a8164015 --- /dev/null +++ b/src/imports/controls/designer/images/placeholder-icon16@2x.png diff --git a/src/imports/controls/designer/images/placeholder-icon@2x.png b/src/imports/controls/designer/images/placeholder-icon@2x.png Binary files differnew file mode 100644 index 00000000..f17fff24 --- /dev/null +++ b/src/imports/controls/designer/images/placeholder-icon@2x.png diff --git a/src/imports/controls/designer/images/progressbar-icon.png b/src/imports/controls/designer/images/progressbar-icon.png Binary files differnew file mode 100644 index 00000000..8a283960 --- /dev/null +++ b/src/imports/controls/designer/images/progressbar-icon.png diff --git a/src/imports/controls/designer/images/progressbar-icon16.png b/src/imports/controls/designer/images/progressbar-icon16.png Binary files differnew file mode 100644 index 00000000..91010d85 --- /dev/null +++ b/src/imports/controls/designer/images/progressbar-icon16.png diff --git a/src/imports/controls/designer/images/progressbar-icon16@2x.png b/src/imports/controls/designer/images/progressbar-icon16@2x.png Binary files differnew file mode 100644 index 00000000..93d98b72 --- /dev/null +++ b/src/imports/controls/designer/images/progressbar-icon16@2x.png diff --git a/src/imports/controls/designer/images/progressbar-icon@2x.png b/src/imports/controls/designer/images/progressbar-icon@2x.png Binary files differnew file mode 100644 index 00000000..5dc4130c --- /dev/null +++ b/src/imports/controls/designer/images/progressbar-icon@2x.png diff --git a/src/imports/controls/designer/images/radiobutton-icon.png b/src/imports/controls/designer/images/radiobutton-icon.png Binary files differnew file mode 100644 index 00000000..c19d6984 --- /dev/null +++ b/src/imports/controls/designer/images/radiobutton-icon.png diff --git a/src/imports/controls/designer/images/radiobutton-icon16.png b/src/imports/controls/designer/images/radiobutton-icon16.png Binary files differnew file mode 100644 index 00000000..cbd49ee7 --- /dev/null +++ b/src/imports/controls/designer/images/radiobutton-icon16.png diff --git a/src/imports/controls/designer/images/radiobutton-icon16@2x.png b/src/imports/controls/designer/images/radiobutton-icon16@2x.png Binary files differnew file mode 100644 index 00000000..07396b0d --- /dev/null +++ b/src/imports/controls/designer/images/radiobutton-icon16@2x.png diff --git a/src/imports/controls/designer/images/radiobutton-icon@2x.png b/src/imports/controls/designer/images/radiobutton-icon@2x.png Binary files differnew file mode 100644 index 00000000..8e576eb7 --- /dev/null +++ b/src/imports/controls/designer/images/radiobutton-icon@2x.png diff --git a/src/imports/controls/designer/images/slider-icon.png b/src/imports/controls/designer/images/slider-icon.png Binary files differnew file mode 100644 index 00000000..c4638b43 --- /dev/null +++ b/src/imports/controls/designer/images/slider-icon.png diff --git a/src/imports/controls/designer/images/slider-icon16.png b/src/imports/controls/designer/images/slider-icon16.png Binary files differnew file mode 100644 index 00000000..caab3992 --- /dev/null +++ b/src/imports/controls/designer/images/slider-icon16.png diff --git a/src/imports/controls/designer/images/slider-icon16@2x.png b/src/imports/controls/designer/images/slider-icon16@2x.png Binary files differnew file mode 100644 index 00000000..20faceb2 --- /dev/null +++ b/src/imports/controls/designer/images/slider-icon16@2x.png diff --git a/src/imports/controls/designer/images/slider-icon@2x.png b/src/imports/controls/designer/images/slider-icon@2x.png Binary files differnew file mode 100644 index 00000000..d4fdcd88 --- /dev/null +++ b/src/imports/controls/designer/images/slider-icon@2x.png diff --git a/src/imports/controls/designer/images/spinbox-icon.png b/src/imports/controls/designer/images/spinbox-icon.png Binary files differnew file mode 100644 index 00000000..8135a173 --- /dev/null +++ b/src/imports/controls/designer/images/spinbox-icon.png diff --git a/src/imports/controls/designer/images/spinbox-icon16.png b/src/imports/controls/designer/images/spinbox-icon16.png Binary files differnew file mode 100644 index 00000000..774cdbf5 --- /dev/null +++ b/src/imports/controls/designer/images/spinbox-icon16.png diff --git a/src/imports/controls/designer/images/spinbox-icon16@2x.png b/src/imports/controls/designer/images/spinbox-icon16@2x.png Binary files differnew file mode 100644 index 00000000..00bc8adc --- /dev/null +++ b/src/imports/controls/designer/images/spinbox-icon16@2x.png diff --git a/src/imports/controls/designer/images/spinbox-icon@2x.png b/src/imports/controls/designer/images/spinbox-icon@2x.png Binary files differnew file mode 100644 index 00000000..83fcc689 --- /dev/null +++ b/src/imports/controls/designer/images/spinbox-icon@2x.png diff --git a/src/imports/controls/designer/images/switch-icon.png b/src/imports/controls/designer/images/switch-icon.png Binary files differnew file mode 100644 index 00000000..64c9f80f --- /dev/null +++ b/src/imports/controls/designer/images/switch-icon.png diff --git a/src/imports/controls/designer/images/switch-icon16.png b/src/imports/controls/designer/images/switch-icon16.png Binary files differnew file mode 100644 index 00000000..893a0d9c --- /dev/null +++ b/src/imports/controls/designer/images/switch-icon16.png diff --git a/src/imports/controls/designer/images/switch-icon16@2x.png b/src/imports/controls/designer/images/switch-icon16@2x.png Binary files differnew file mode 100644 index 00000000..09333db6 --- /dev/null +++ b/src/imports/controls/designer/images/switch-icon16@2x.png diff --git a/src/imports/controls/designer/images/switch-icon@2x.png b/src/imports/controls/designer/images/switch-icon@2x.png Binary files differnew file mode 100644 index 00000000..2b5fa0da --- /dev/null +++ b/src/imports/controls/designer/images/switch-icon@2x.png diff --git a/src/imports/controls/designer/images/textarea-icon.png b/src/imports/controls/designer/images/textarea-icon.png Binary files differnew file mode 100644 index 00000000..61b7387c --- /dev/null +++ b/src/imports/controls/designer/images/textarea-icon.png diff --git a/src/imports/controls/designer/images/textarea-icon16.png b/src/imports/controls/designer/images/textarea-icon16.png Binary files differnew file mode 100644 index 00000000..8f23812e --- /dev/null +++ b/src/imports/controls/designer/images/textarea-icon16.png diff --git a/src/imports/controls/designer/images/textarea-icon16@2x.png b/src/imports/controls/designer/images/textarea-icon16@2x.png Binary files differnew file mode 100644 index 00000000..4b81c633 --- /dev/null +++ b/src/imports/controls/designer/images/textarea-icon16@2x.png diff --git a/src/imports/controls/designer/images/textarea-icon@2x.png b/src/imports/controls/designer/images/textarea-icon@2x.png Binary files differnew file mode 100644 index 00000000..3b64908a --- /dev/null +++ b/src/imports/controls/designer/images/textarea-icon@2x.png diff --git a/src/imports/controls/designer/images/textfield-icon.png b/src/imports/controls/designer/images/textfield-icon.png Binary files differnew file mode 100644 index 00000000..c08424bf --- /dev/null +++ b/src/imports/controls/designer/images/textfield-icon.png diff --git a/src/imports/controls/designer/images/textfield-icon16.png b/src/imports/controls/designer/images/textfield-icon16.png Binary files differnew file mode 100644 index 00000000..514ae04e --- /dev/null +++ b/src/imports/controls/designer/images/textfield-icon16.png diff --git a/src/imports/controls/designer/images/textfield-icon16@2x.png b/src/imports/controls/designer/images/textfield-icon16@2x.png Binary files differnew file mode 100644 index 00000000..d93cf59b --- /dev/null +++ b/src/imports/controls/designer/images/textfield-icon16@2x.png diff --git a/src/imports/controls/designer/images/textfield-icon@2x.png b/src/imports/controls/designer/images/textfield-icon@2x.png Binary files differnew file mode 100644 index 00000000..bbb5ca9c --- /dev/null +++ b/src/imports/controls/designer/images/textfield-icon@2x.png diff --git a/src/imports/controls/designer/images/todo.png b/src/imports/controls/designer/images/todo.png Binary files differdeleted file mode 100644 index 9a8a586f..00000000 --- a/src/imports/controls/designer/images/todo.png +++ /dev/null diff --git a/src/imports/controls/designer/images/todo16.png b/src/imports/controls/designer/images/todo16.png Binary files differdeleted file mode 100644 index 0717d1eb..00000000 --- a/src/imports/controls/designer/images/todo16.png +++ /dev/null diff --git a/src/imports/controls/designer/images/toolbar-icon.png b/src/imports/controls/designer/images/toolbar-icon.png Binary files differnew file mode 100644 index 00000000..c65e7038 --- /dev/null +++ b/src/imports/controls/designer/images/toolbar-icon.png diff --git a/src/imports/controls/designer/images/toolbar-icon16.png b/src/imports/controls/designer/images/toolbar-icon16.png Binary files differnew file mode 100644 index 00000000..ee2d3c9c --- /dev/null +++ b/src/imports/controls/designer/images/toolbar-icon16.png diff --git a/src/imports/controls/designer/images/toolbar-icon16@2x.png b/src/imports/controls/designer/images/toolbar-icon16@2x.png Binary files differnew file mode 100644 index 00000000..4ae0f41a --- /dev/null +++ b/src/imports/controls/designer/images/toolbar-icon16@2x.png diff --git a/src/imports/controls/designer/images/toolbar-icon@2x.png b/src/imports/controls/designer/images/toolbar-icon@2x.png Binary files differnew file mode 100644 index 00000000..a41cb0bd --- /dev/null +++ b/src/imports/controls/designer/images/toolbar-icon@2x.png diff --git a/src/imports/controls/designer/images/toolbutton-icon.png b/src/imports/controls/designer/images/toolbutton-icon.png Binary files differnew file mode 100644 index 00000000..8a3cea5e --- /dev/null +++ b/src/imports/controls/designer/images/toolbutton-icon.png diff --git a/src/imports/controls/designer/images/toolbutton-icon16.png b/src/imports/controls/designer/images/toolbutton-icon16.png Binary files differnew file mode 100644 index 00000000..49c9d956 --- /dev/null +++ b/src/imports/controls/designer/images/toolbutton-icon16.png diff --git a/src/imports/controls/designer/images/toolbutton-icon16@2x.png b/src/imports/controls/designer/images/toolbutton-icon16@2x.png Binary files differnew file mode 100644 index 00000000..4d9b2684 --- /dev/null +++ b/src/imports/controls/designer/images/toolbutton-icon16@2x.png diff --git a/src/imports/controls/designer/images/toolbutton-icon@2x.png b/src/imports/controls/designer/images/toolbutton-icon@2x.png Binary files differnew file mode 100644 index 00000000..aff35c52 --- /dev/null +++ b/src/imports/controls/designer/images/toolbutton-icon@2x.png diff --git a/src/imports/controls/designer/images/tumbler-icon.png b/src/imports/controls/designer/images/tumbler-icon.png Binary files differnew file mode 100644 index 00000000..59e827b8 --- /dev/null +++ b/src/imports/controls/designer/images/tumbler-icon.png diff --git a/src/imports/controls/designer/images/tumbler-icon16.png b/src/imports/controls/designer/images/tumbler-icon16.png Binary files differnew file mode 100644 index 00000000..7c2b3a1f --- /dev/null +++ b/src/imports/controls/designer/images/tumbler-icon16.png diff --git a/src/imports/controls/designer/images/tumbler-icon16@2x.png b/src/imports/controls/designer/images/tumbler-icon16@2x.png Binary files differnew file mode 100644 index 00000000..21b70156 --- /dev/null +++ b/src/imports/controls/designer/images/tumbler-icon16@2x.png diff --git a/src/imports/controls/designer/images/tumbler-icon@2x.png b/src/imports/controls/designer/images/tumbler-icon@2x.png Binary files differnew file mode 100644 index 00000000..7a36e8c3 --- /dev/null +++ b/src/imports/controls/designer/images/tumbler-icon@2x.png diff --git a/src/imports/controls/designer/qtlabscontrols.metainfo b/src/imports/controls/designer/qtlabscontrols.metainfo index 1c005c6f..0564077a 100644 --- a/src/imports/controls/designer/qtlabscontrols.metainfo +++ b/src/imports/controls/designer/qtlabscontrols.metainfo @@ -1,12 +1,12 @@ MetaInfo { Type { name: "Qt.labs.controls.BusyIndicator" - icon: "images/todo16.png" + icon: "images/busyindicator-icon16.png" ItemLibraryEntry { name: "Busy Indicator" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/busyindicator-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" } @@ -14,12 +14,12 @@ MetaInfo { Type { name: "Qt.labs.controls.Button" - icon: "images/todo16.png" + icon: "images/button-icon16.png" ItemLibraryEntry { name: "Button" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/button-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -29,12 +29,12 @@ MetaInfo { Type { name: "Qt.labs.controls.CheckBox" - icon: "images/todo16.png" + icon: "images/checkbox-icon16.png" ItemLibraryEntry { name: "Check Box" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/checkbox-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -44,12 +44,12 @@ MetaInfo { Type { name: "Qt.labs.controls.ComboBox" - icon: "images/todo16.png" + icon: "images/combobox-icon16.png" ItemLibraryEntry { name: "Combo Box" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/combobox-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" } @@ -57,12 +57,12 @@ MetaInfo { Type { name: "Qt.labs.controls.Dial" - icon: "images/todo16.png" + icon: "images/dial-icon16.png" ItemLibraryEntry { name: "Dial" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/dial-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" } @@ -70,12 +70,12 @@ MetaInfo { Type { name: "Qt.labs.controls.Frame" - icon: "images/todo16.png" + icon: "images/frame-icon16.png" ItemLibraryEntry { name: "Frame" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/frame-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -86,12 +86,12 @@ MetaInfo { Type { name: "Qt.labs.controls.GroupBox" - icon: "images/todo16.png" + icon: "images/groupbox-icon16.png" ItemLibraryEntry { name: "Group Box" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/groupbox-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -103,12 +103,12 @@ MetaInfo { Type { name: "Qt.labs.controls.ItemDelegate" - icon: "images/todo16.png" + icon: "images/itemdelegate-icon16.png" ItemLibraryEntry { name: "Item Delegate" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/itemdelegate-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -118,12 +118,12 @@ MetaInfo { Type { name: "Qt.labs.controls.Label" - icon: "images/todo16.png" + icon: "images/label-icon16.png" ItemLibraryEntry { name: "Label" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/label-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -133,12 +133,12 @@ MetaInfo { Type { name: "Qt.labs.controls.PageIndicator" - icon: "images/todo16.png" + icon: "images/pageindicator-icon16.png" ItemLibraryEntry { name: "Page Indicator" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/pageindicator-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -148,12 +148,12 @@ MetaInfo { Type { name: "Qt.labs.controls.Pane" - icon: "images/todo16.png" + icon: "images/pane-icon16.png" ItemLibraryEntry { name: "Pane" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/pane-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -164,12 +164,12 @@ MetaInfo { Type { name: "Qt.labs.controls.ProgressBar" - icon: "images/todo16.png" + icon: "images/progressbar-icon16.png" ItemLibraryEntry { name: "Progress Bar" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/progressbar-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -179,12 +179,12 @@ MetaInfo { Type { name: "Qt.labs.controls.RadioButton" - icon: "images/todo16.png" + icon: "images/radiobutton-icon16.png" ItemLibraryEntry { name: "Radio Button" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/radiobutton-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -194,12 +194,12 @@ MetaInfo { Type { name: "Qt.labs.controls.Slider" - icon: "images/todo16.png" + icon: "images/slider-icon16.png" ItemLibraryEntry { name: "Slider" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/slider-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -209,12 +209,12 @@ MetaInfo { Type { name: "Qt.labs.controls.SpinBox" - icon: "images/todo16.png" + icon: "images/spinbox-icon16.png" ItemLibraryEntry { name: "Spin Box" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/spinbox-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" } @@ -222,12 +222,12 @@ MetaInfo { Type { name: "Qt.labs.controls.Switch" - icon: "images/todo16.png" + icon: "images/switch-icon16.png" ItemLibraryEntry { name: "Switch" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/switch-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -237,12 +237,12 @@ MetaInfo { Type { name: "Qt.labs.controls.TextArea" - icon: "images/todo16.png" + icon: "images/textarea-icon16.png" ItemLibraryEntry { name: "Text Area" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/textarea-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -252,12 +252,12 @@ MetaInfo { Type { name: "Qt.labs.controls.TextField" - icon: "images/todo16.png" + icon: "images/textfield-icon16.png" ItemLibraryEntry { name: "Text Field" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/textfield-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -267,12 +267,12 @@ MetaInfo { Type { name: "Qt.labs.controls.ToolButton" - icon: "images/todo16.png" + icon: "images/toolbutton-icon16.png" ItemLibraryEntry { name: "Tool Button" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/toolbutton-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -282,12 +282,12 @@ MetaInfo { Type { name: "Qt.labs.controls.ToolBar" - icon: "images/todo16.png" + icon: "images/toolbar-icon16.png" ItemLibraryEntry { name: "Tool Bar" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/toolbar-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" @@ -297,12 +297,12 @@ MetaInfo { Type { name: "Qt.labs.controls.Tumbler" - icon: "images/todo16.png" + icon: "images/tumbler-icon16.png" ItemLibraryEntry { name: "Tumbler" category: "Qt Labs - Controls" - libraryIcon: "images/todo.png" + libraryIcon: "images/tumbler-icon.png" version: "1.0" requiredImport: "Qt.labs.controls" } diff --git a/src/imports/controls/material/Button.qml b/src/imports/controls/material/Button.qml index d0b05b2c..4dc9bfc5 100644 --- a/src/imports/controls/material/Button.qml +++ b/src/imports/controls/material/Button.qml @@ -86,6 +86,14 @@ T.Button { } } + Rectangle { + width: parent.width + height: parent.height + radius: parent.radius + visible: control.activeFocus + color: control.Material.checkBoxUncheckedRippleColor + } + layer.enabled: control.enabled layer.effect: DropShadow { verticalOffset: 1 diff --git a/src/imports/controls/material/CheckBox.qml b/src/imports/controls/material/CheckBox.qml index abaf571d..fd6ef256 100644 --- a/src/imports/controls/material/CheckBox.qml +++ b/src/imports/controls/material/CheckBox.qml @@ -86,7 +86,7 @@ T.CheckBox { height: width control: control colored: control.checked - opacity: control.pressed ? 1 : 0 + opacity: control.pressed || control.activeFocus ? 1 : 0 } // TODO: This needs to be transparent diff --git a/src/imports/controls/material/ComboBox.qml b/src/imports/controls/material/ComboBox.qml index 5529c546..ef073370 100644 --- a/src/imports/controls/material/ComboBox.qml +++ b/src/imports/controls/material/ComboBox.qml @@ -102,6 +102,14 @@ T.ComboBox { opacity: !control.enabled ? 0.5 : 1.0 source: "qrc:/qt-project.org/imports/Qt/labs/controls/material/images/drop-indicator.png" } + + Rectangle { + width: parent.width + height: parent.height + radius: parent.radius + visible: control.activeFocus + color: control.Material.checkBoxUncheckedRippleColor + } } //! [background] @@ -109,7 +117,7 @@ T.ComboBox { popup: T.Popup { y: control.height implicitWidth: control.width - implicitHeight: Math.min(396, listview.contentHeight) + implicitHeight: listview.contentHeight transformOrigin: Item.Top topMargin: 12 bottomMargin: 12 diff --git a/src/imports/controls/material/RadioButton.qml b/src/imports/controls/material/RadioButton.qml index 429e4f80..4c8831a5 100644 --- a/src/imports/controls/material/RadioButton.qml +++ b/src/imports/controls/material/RadioButton.qml @@ -71,7 +71,7 @@ T.RadioButton { height: width control: control colored: control.checked - opacity: control.pressed ? 1 : 0 + opacity: control.pressed || control.activeFocus ? 1 : 0 } Rectangle { diff --git a/src/imports/controls/material/SliderHandle.qml b/src/imports/controls/material/SliderHandle.qml index dc1a836d..6f54eaf5 100644 --- a/src/imports/controls/material/SliderHandle.qml +++ b/src/imports/controls/material/SliderHandle.qml @@ -55,7 +55,7 @@ Item { height: parent.height radius: width / 2 color: root.control.Material.accentColor - scale: root.handlePressed || root.handleHasFocus ? 1.5 : 1 + scale: root.handlePressed ? 1.5 : 1 Behavior on scale { NumberAnimation { @@ -63,4 +63,12 @@ Item { } } } + + Ripple { + width: parent.width + height: width + control: root.control + colored: true + opacity: root.handleHasFocus && !root.handlePressed ? 1 : 0 + } } diff --git a/src/imports/controls/material/Switch.qml b/src/imports/controls/material/Switch.qml index a38a643c..ca4b1ff6 100644 --- a/src/imports/controls/material/Switch.qml +++ b/src/imports/controls/material/Switch.qml @@ -67,7 +67,7 @@ T.Switch { height: width control: control colored: control.checked - opacity: control.pressed ? 1 : 0 + opacity: control.pressed || control.activeFocus ? 1 : 0 } Rectangle { diff --git a/src/imports/controls/material/qquickmaterialprogressstrip.cpp b/src/imports/controls/material/qquickmaterialprogressstrip.cpp index a3ff6c9b..34590340 100644 --- a/src/imports/controls/material/qquickmaterialprogressstrip.cpp +++ b/src/imports/controls/material/qquickmaterialprogressstrip.cpp @@ -225,6 +225,7 @@ QSGNode *QQuickMaterialProgressStrip::updatePaintNode(QSGNode *oldNode, UpdatePa transformNode->appendChildNode(rectNode); } Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType); + static_cast<QSGTransformNode *>(transformNode)->setMatrix(QMatrix4x4()); QSGRectangleNode *rectNode = static_cast<QSGRectangleNode *>(transformNode->firstChild()); Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); diff --git a/src/imports/controls/material/qquickmaterialstyle.cpp b/src/imports/controls/material/qquickmaterialstyle.cpp index 5100d01e..280acb77 100644 --- a/src/imports/controls/material/qquickmaterialstyle.cpp +++ b/src/imports/controls/material/qquickmaterialstyle.cpp @@ -634,7 +634,7 @@ QColor QQuickMaterialStyle::accentColor() const return QColor::fromRgba(m_accent); if (m_accent > BlueGrey) return QColor(); - return colors[m_accent][Shade500]; + return colors[m_accent][m_theme == Light ? Shade500 : Shade200]; } QColor QQuickMaterialStyle::backgroundColor() const @@ -744,7 +744,7 @@ QColor QQuickMaterialStyle::checkBoxCheckedRippleColor() const { QColor pressColor = accentColor(); // TODO: find out actual value - pressColor.setAlpha(30); + pressColor.setAlpha(m_theme == Light ? 30 : 50); return pressColor; } diff --git a/src/templates/qquickcontrol.cpp b/src/templates/qquickcontrol.cpp index 9dbe4181..ae6180ad 100644 --- a/src/templates/qquickcontrol.cpp +++ b/src/templates/qquickcontrol.cpp @@ -201,10 +201,15 @@ void QQuickControl::accessibilityActiveChanged(bool active) return; d->accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(this, true)); - if (d->accessibleAttached) - d->accessibleAttached->setRole(accessibleRole()); - else - qWarning() << "QQuickControl: " << this << " QQuickAccessibleAttached object creation failed!"; + + // QQuickControl relies on the existence of a QQuickAccessibleAttached object. + // However, qmlAttachedPropertiesObject(create=true) creates an instance only + // for items that have been created by a QML engine. Therefore we create the + // object by hand for items created in C++ (QQuickPopupItem, for instance). + if (!d->accessibleAttached) + d->accessibleAttached = new QQuickAccessibleAttached(this); + + d->accessibleAttached->setRole(accessibleRole()); } #endif diff --git a/src/templates/qquickmenu.cpp b/src/templates/qquickmenu.cpp index 2a45b6df..13f90546 100644 --- a/src/templates/qquickmenu.cpp +++ b/src/templates/qquickmenu.cpp @@ -518,6 +518,13 @@ bool QQuickMenu::eventFilter(QObject *object, QEvent *event) return QQuickPopup::eventFilter(object, event); } +#ifndef QT_NO_ACCESSIBILITY +QAccessible::Role QQuickMenu::accessibleRole() const +{ + return QAccessible::PopupMenu; +} +#endif // QT_NO_ACCESSIBILITY + QT_END_NAMESPACE #include "moc_qquickmenu_p.cpp" diff --git a/src/templates/qquickmenu_p.h b/src/templates/qquickmenu_p.h index ec417d16..9ed3f45c 100644 --- a/src/templates/qquickmenu_p.h +++ b/src/templates/qquickmenu_p.h @@ -89,6 +89,11 @@ protected: Q_SIGNALS: void titleChanged(); +protected: +#ifndef QT_NO_ACCESSIBILITY + QAccessible::Role accessibleRole() const override; +#endif // QT_NO_ACCESSIBILITY + private: Q_DISABLE_COPY(QQuickMenu) Q_DECLARE_PRIVATE(QQuickMenu) diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp index 4b953fc6..8e751a39 100644 --- a/src/templates/qquickpopup.cpp +++ b/src/templates/qquickpopup.cpp @@ -105,6 +105,7 @@ QQuickPopupPrivate::QQuickPopupPrivate() : QObjectPrivate() , focus(false) , modal(false) + , complete(false) , hasTopMargin(false) , hasLeftMargin(false) , hasRightMargin(false) @@ -367,6 +368,14 @@ void QQuickPopupItem::paddingChange(const QMarginsF &newPadding, const QMarginsF d->popup->paddingChange(newPadding, oldPadding); } +#ifndef QT_NO_ACCESSIBILITY +QAccessible::Role QQuickPopupItem::accessibleRole() const +{ + Q_D(const QQuickPopupItem); + return d->popup->accessibleRole(); +} +#endif // QT_NO_ACCESSIBILITY + QQuickPopupPositioner::QQuickPopupPositioner(QQuickPopupPrivate *popup) : m_x(0), m_y(0), @@ -473,6 +482,7 @@ void QQuickPopupPositioner::repositionPopup() const qreal iw = m_popup->popupItem->implicitWidth(); const qreal ih = m_popup->popupItem->implicitHeight(); + bool adjusted = false; QRectF rect(m_x, m_y, iw > 0 ? iw : w, ih > 0 ? ih : h); if (m_parentItem) { rect = m_parentItem->mapRectToScene(rect); @@ -484,6 +494,7 @@ void QQuickPopupPositioner::repositionPopup() // if the popup doesn't fit inside the window, try flipping it around (below <-> above) const QRectF flipped = m_parentItem->mapRectToScene(QRectF(m_x, m_parentItem->height() - m_y - rect.height(), rect.width(), rect.height())); if (flipped.top() >= bounds.top() && flipped.bottom() < bounds.bottom()) { + adjusted = true; rect = flipped; } else if (ih > 0) { // neither the flipped around geometry fits inside the window, choose @@ -498,13 +509,14 @@ void QQuickPopupPositioner::repositionPopup() rect.setY(secondary.y()); rect.setHeight(secondary.height()); } + adjusted = true; } } } } m_popup->popupItem->setPosition(rect.topLeft()); - if (ih > 0) + if (adjusted && ih > 0) m_popup->popupItem->setHeight(rect.height()); } @@ -1636,6 +1648,13 @@ void QQuickPopup::paddingChange(const QMarginsF &newPadding, const QMarginsF &ol emit availableHeightChanged(); } +#ifndef QT_NO_ACCESSIBILITY +QAccessible::Role QQuickPopup::accessibleRole() const +{ + return QAccessible::LayeredPane; +} +#endif // QT_NO_ACCESSIBILITY + QT_END_NAMESPACE #include "moc_qquickpopup_p.cpp" diff --git a/src/templates/qquickpopup_p.h b/src/templates/qquickpopup_p.h index 4b5d3e72..51b155f2 100644 --- a/src/templates/qquickpopup_p.h +++ b/src/templates/qquickpopup_p.h @@ -56,6 +56,10 @@ #include <QtQml/qqmllist.h> #include <QtQml/qqmlparserstatus.h> +#ifndef QT_NO_ACCESSIBILITY +#include <QtGui/qaccessible.h> +#endif + QT_BEGIN_NAMESPACE class QQuickItem; @@ -315,6 +319,10 @@ protected: virtual void marginsChange(const QMarginsF &newMargins, const QMarginsF &oldMargins); virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding); +#ifndef QT_NO_ACCESSIBILITY + virtual QAccessible::Role accessibleRole() const; +#endif + private: Q_DISABLE_COPY(QQuickPopup) Q_DECLARE_PRIVATE(QQuickPopup) diff --git a/src/templates/qquickpopup_p_p.h b/src/templates/qquickpopup_p_p.h index ba1e90a8..a6fdcd00 100644 --- a/src/templates/qquickpopup_p_p.h +++ b/src/templates/qquickpopup_p_p.h @@ -108,6 +108,10 @@ protected: void itemChange(ItemChange change, const ItemChangeData &data) override; void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override; +#ifndef QT_NO_ACCESSIBILITY + QAccessible::Role accessibleRole() const override; +#endif + private: Q_DECLARE_PRIVATE(QQuickPopupItem) }; diff --git a/src/templates/qquickrangeslider.cpp b/src/templates/qquickrangeslider.cpp index 1ca4fbed..6dcd7fcb 100644 --- a/src/templates/qquickrangeslider.cpp +++ b/src/templates/qquickrangeslider.cpp @@ -697,6 +697,24 @@ void QQuickRangeSlider::setValues(qreal firstValue, qreal secondValue) secondPrivate->updatePosition(); } +void QQuickRangeSlider::focusInEvent(QFocusEvent *event) +{ + Q_D(QQuickRangeSlider); + QQuickControl::focusInEvent(event); + + // The active focus ends up to RangeSlider when using forceActiveFocus() + // or QML KeyNavigation. We must forward the focus to one of the handles, + // because RangeSlider handles key events for the focused handle. If + // neither handle has active focus, RangeSlider doesn't do anything. + QQuickItem *handle = nextItemInFocusChain(); + // QQuickItem::nextItemInFocusChain() only works as desired with + // Qt::TabFocusAllControls. otherwise pick the first handle + if (!handle || handle == this) + handle = d->first->handle(); + if (handle) + handle->forceActiveFocus(event->reason()); +} + void QQuickRangeSlider::keyPressEvent(QKeyEvent *event) { Q_D(QQuickRangeSlider); diff --git a/src/templates/qquickrangeslider_p.h b/src/templates/qquickrangeslider_p.h index 24653b0e..d81ab98a 100644 --- a/src/templates/qquickrangeslider_p.h +++ b/src/templates/qquickrangeslider_p.h @@ -109,6 +109,7 @@ Q_SIGNALS: void trackChanged(); protected: + void focusInEvent(QFocusEvent *event) override; void keyPressEvent(QKeyEvent *event) override; void keyReleaseEvent(QKeyEvent *event) override; void mousePressEvent(QMouseEvent *event) override; |