Commit Graph

37 Commits (bae9aeacbeb2d05aaec5e9dd7d1656ff929eb5db)

Author SHA1 Message Date
Allan Sandfeld Jensen f61f8bb966 Replace qt_make_unique with std::make_unique
We can depend on C++14 now.

Change-Id: Iee9796cd22dbfbb70d4bdb25f0eee1662a026d6d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-23 09:50:21 +01:00
Dimitrios Apostolou 14a8fb2321 Rename local variables masking parameters
As found by LGTM.com.

Change-Id: I9a237899dc50009da5643c49c590f3b15bb817bf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-07-10 02:37:11 +02:00
Jarek Kobus 2a6cdec718 Use QList instead of QVector in widgets
Task-number: QTBUG-84469
Change-Id: I3007734f8e4f164ece9dd8850ef007cbef9e12ef
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-07-02 21:57:06 +02:00
Tor Arne Vestbø 45fe7adcb8 widgets: Clarify backingstore resize logic by removing cruft
Change-Id: I0a449068a0d4557b7bd6581ddf71c590b72d76a1
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-03-19 15:14:29 +01:00
Tor Arne Vestbø 5f3c071ee3 widgets: Remove unused member QTLWExtra::inTopLevelResize
It was introduced in Qt 4.4 (e150f6a6e619) to work around slow resizes
on Windows and X11 due to excessive painting, but has since been removed
when old dead code never ported to QPA was removed in a2337f79ff.

Change-Id: Ic14e714a02edb4194a445a6bb0759b601799fdc6
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2020-03-19 15:14:29 +01:00
Allan Sandfeld Jensen ece0c0a5e7 Tidy nullptr usage
Move away from using 0 as pointer literal.

Done using clang-tidy. This is not complete as
run-clang-tidy can't handle all of qtbase in one go.

Change-Id: I1076a21f32aac0dab078af6f175f7508145eece0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-12-06 12:13:20 +01:00
Friedemann Kleint f00e326656 Fix some qdoc warnings in 5.14
Mark QCalendarBackend as internal since it is in a private header
and fix some issues in the QCalendar related classes.

src/corelib/time/qcalendar.cpp:201: (qdoc) warning: clang found diagnostics parsing \fn int QCalendarBackend::daysInMonth(int month, int year) const
    error: incomplete type 'QCalendarBackend' named in nested name specifier
(repeats)
src/corelib/time/qdatetime.cpp:1426: (qdoc) warning: Unknown command '\override' (repeats)
src/corelib/time/qcalendar.cpp:642: (qdoc) warning: Undocumented enum item 'Last' in QCalendar::System
src/corelib/time/qcalendar.cpp:642: (qdoc) warning: Undocumented enum item 'User' in QCalendar::System
src/corelib/time/qcalendar.cpp:744: (qdoc) warning: Undocumented parameter 'year' in QCalendar::isLeapYear()
src/corelib/time/qcalendar.cpp:923: (qdoc) warning: Can't link to 'dateTimeString()' (repeats)
src/corelib/time/qcalendar.cpp:893: (qdoc) warning: No such parameter 'year' in QCalendar::partsFromDate()
src/corelib/time/qcalendar.cpp:893: (qdoc) warning: No such parameter 'month' in QCalendar::partsFromDate()
src/corelib/time/qcalendar.cpp:893: (qdoc) warning: No such parameter 'day' in QCalendar::partsFromDate()
src/corelib/time/qdatetime.cpp:1425: (qdoc) warning: Undocumented parameter 'nmonths' in QDate::addMonths()
src/corelib/time/qdatetime.cpp:1467: (qdoc) warning: Undocumented parameter 'nyears' in QDate::addYears()
src/corelib/statemachine/qstatemachine.cpp:2522: (qdoc) warning: Undocumented enum item 'StateMachineChildModeSetToParallelError' in QStateMachine::Error
src/corelib/kernel/qtimer.cpp:602: (qdoc) warning: Undocumented parameter 'connectionType' in QTimer::callOnTimeout()
src/corelib/time/qcalendar.cpp:159: (qdoc) warning: Undocumented parameter 'name' in QCalendarBackend::QCalendarBackend()
src/corelib/time/qcalendar.cpp:159: (qdoc) warning: Undocumented parameter 'id' in QCalendarBackend::QCalendarBackend()
src/corelib/time/qcalendar.cpp:529: (qdoc) warning: Can't link to 'registerCalendar()'
src/corelib/time/qcalendar.cpp:529: (qdoc) warning: Can't link to 'fromName()'
src/corelib/time/qcalendar.cpp:178: (qdoc) warning: Can't link to 'QCalendar::fromEnum()'
src/corelib/time/qcalendar.cpp:405: (qdoc) warning: Undocumented parameter 'jd' in QCalendarBackend::dayOfWeek()
src/corelib/time/qcalendar.cpp:405: (qdoc) warning: Can't link to 'weekDayName()'
src/corelib/time/qcalendar.cpp:405: (qdoc) warning: Can't link to 'standaloneWeekDayName()'
src/corelib/time/qcalendar.cpp:268: (qdoc) warning: Can't link to 'daysInMonth()'
src/corelib/time/qcalendar.cpp:268: (qdoc) warning: Can't link to 'isLeapYear()'
src/corelib/time/qcalendar.cpp:295: (qdoc) warning: Can't link to 'daysInMonth()'
src/corelib/time/qcalendar.cpp:313: (qdoc) warning: Can't link to 'isLuniSolar()'
src/corelib/time/qcalendar.cpp:313: (qdoc) warning: Can't link to 'isSolar()'
src/corelib/time/qcalendar.cpp:313: (qdoc) warning: Can't link to 'isLunar()'
src/corelib/time/qcalendar.cpp:340: (qdoc) warning: Can't link to 'daysInMonth()'
src/corelib/time/qcalendar.cpp:357: (qdoc) warning: Can't link to 'daysInMonth()'
src/corelib/time/qcalendar.cpp:544: (qdoc) warning: Can't link to 'fromName()'

Change-Id: Ia2fabefb917f8e4cfa361044d9b754717276f4aa
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-09-03 12:52:55 +02:00
Tor Arne Vestbø 79bf1b7e34 widgets: Mark widgets as needing flush during painting
Except for the case of syncing in response to an expose event,
where the platform asked us to flush a specific region, we
should strive to only flush parts that have been repainted.

And we should flush those parts to their nearest native child,
instead of unconditionally flushing the root/top level widget
as well.

By allowing drawWidget to schedule the flush we automatically
flush the minimal region, to the right widgets.

Change-Id: I73c143761d4a0da6991433b41dea0a0bc83a448a
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-28 13:22:59 +02:00
Tor Arne Vestbø 984df39c79 widgets: Add logging for widget painting
Change-Id: I551ec290812369e3848c1096fed7e813cd9e1cd6
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-28 13:22:50 +02:00
Tor Arne Vestbø 3542fc4958 widgets: Simplify QWidgetRepaintManager::flush
Change-Id: Icba88fa068aac2ac5d8bb04e46a3e3f34e279a48
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-28 10:41:29 +02:00
Tor Arne Vestbø 25026defdc widgets: Clarify QWidgetRepaintManager::sync of specific widget
Change-Id: Ifa2a8245decfcb2b36c1952a39ec60b7eeca6e43
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-28 00:46:36 +02:00
Tor Arne Vestbø e8c70fb07f widgets: Rename QWidgetPrivate::repaint_sys to paintOnScreen
Change-Id: Ic853e42cbed9b770bef0e1d7c7376c861bceb891
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:52 +02:00
Tor Arne Vestbø 6dd5cb40ef widgets: Handle all flush tracking via markNeedsFlush
Change-Id: I3652c09012e36468ef90870637988b3fe8c5e735
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:48 +02:00
Tor Arne Vestbø 10e8faa72c widgets: Merge QWidgetRepaintManager::topLevelRect into callsite
Change-Id: Ia9bb0c396b8175f644e337ca73086208c637ed2d
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:44 +02:00
Tor Arne Vestbø 9b3935492b widgets: Remove unused QWidgetRepaintManager::dirtyRegion
It is no longer needed after qt_dirtyRegion was removed in e2a1fb901.

Change-Id: I120df76b08808842b304cb8de10de23ccd0e2845
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:40 +02:00
Tor Arne Vestbø 74be54684c widgets: Clarify how widgets needing flush is tracked
Change-Id: Ia2c2c4b830e4441e50c66dd3fef5bc060f76551e
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:36 +02:00
Tor Arne Vestbø 787314c230 widgets: Clarify top level flush region in QWidgetRepaintManager
Change-Id: I9a8d11569d33bf580bd50b710cf072952ea3626b
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:32 +02:00
Tor Arne Vestbø dbab68a127 widgets: Use single return in QWidgetRepaintManager::markNeedsFlush
Change-Id: Ia21c5c57e4c642af2aa87b0539c4af51500a4827
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:28 +02:00
Tor Arne Vestbø 0af7e5564c widgets: Simplify QWidgetRepaintManager::sync
Change-Id: Ifd0cdcd7f4c03112fd93c24707e43273e211f688
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:24 +02:00
Tor Arne Vestbø 36d734b3f8 widgets: Rename markDirtyOnScreen to markNeedsFlush
Including renaming the member touched by this function. This leaves the
logic for appendDirtyOnScreenWidget, which still needs investigating.

Change-Id: I405a5e3757f0a79992f88d9f70867aeb7b9764d8
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:21 +02:00
Tor Arne Vestbø ca3b48539d widgets: Share more code in appendDirtyOnScreenWidget
Change-Id: I0ed936c7d8b004d498a8956b1ba246ade41ce43d
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:17 +02:00
Tor Arne Vestbø 655e8b6eab widgets: Class initialize QWidgetRepaintManager members
Change-Id: Icc06ae8f5f542810d651e4834055cbcd1c1a4e2e
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:13 +02:00
Tor Arne Vestbø 1c2bcdb57a widgets: Rename a few missed uses of QWidgetRepaintManager
Change-Id: Ie28d5dea6fdf1c8728a68d419b487bc5e3e3ee16
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-25 23:14:09 +02:00
Tor Arne Vestbø 5bcfe771a5 widgets: Merge QPlatformTextureListWatcher into implementation file
Change-Id: Icf177a5b559bd1c108a66ee14a51fb23cd36e083
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-08-25 23:13:43 +02:00
Tor Arne Vestbø 16868bd6a2 widgets: Clean up and reorder QWidgetRepaintManager implementation
Group functions by related areas and order them roughly by their
flow in a normal app repaint cycle.

Change-Id: I7a963f612134b3fdbaf748e0432606825b8db64e
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-22 12:10:13 +02:00
Tor Arne Vestbø a8cc4cea92 widgets: Merge QWidgetRepaintManager::begin/endPaint into callsite
Change-Id: Iff5f78dcc8124bcecf53d42d920e74467937412a
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-22 09:44:53 +02:00
Tor Arne Vestbø a0484b8277 widgets: Rename QWidgetRepaintManager::doSync to paintAndFlush
Change-Id: Ie41bb76d33d59f70eb418f845defc212396d3915
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-22 09:44:42 +02:00
Tor Arne Vestbø c937f80fe5 widgets: Simplify QWidgetRepaintManager::qt_flush
No longer static, so we can access the members directly instead of
passing them as arguments. Renamed to flush() while we're at it.
Otherwise no changes to the code, just moved the function.

Change-Id: Id491a8628c8cecf7cf3b33d3458e7427f5bcd22e
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-22 09:44:08 +02:00
Tor Arne Vestbø 44fc2914be Goodbye showYellowThing
The code hasn't been working for at least 5 years, and is just making
the repaint manager more complex. We can always re-introduce the feature
at a later point.

Change-Id: Ib07c782c821f3e653f9452f6fbfe2f87effccc92
Fixes: QTBUG-36435
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-22 09:43:48 +02:00
Tor Arne Vestbø 4dab6184f5 widgets: Remove stale documentation of QWidgetRepaintManager::flush
Change-Id: I5c4df4a8694bc56014beaec34a81219d91332fec
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-20 21:09:15 +02:00
Tor Arne Vestbø 5085f8e211 widgets: Remove unused arguments from QWidgetRepaintManager::beginPaint
Change-Id: I3720d8ef31e623e514fc2e382192d3c4f99fb4ed
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-20 21:09:04 +02:00
Tor Arne Vestbø e2a1fb9015 widgets: Remove unused function qt_dirtyRegion
Change-Id: I7e6dbc4fb777a2323d65b73164d8645d6efc95a4
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-08-20 21:08:48 +02:00
Tor Arne Vestbø 38e55a26a4 widgets: Remove dead members from BeginPaintInfo
The flags haven't been used since 2011 (6ce6b8a37) and is dead code.

Change-Id: Ic5c47b30326ff70534bbf1aa37b25bae666b6b96
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-20 21:08:32 +02:00
Tor Arne Vestbø 8f083bade0 Remove dead macOS specific code from QWidgetPaintManager
Change-Id: I8fdde17d32f20407aed44e4708f30db21555b81a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-08-20 11:34:44 +02:00
Tor Arne Vestbø 380dd8cde9 Widgets: Simplify discardSyncRequest
Change-Id: I3bc66a0f958fed44eac5fee6642ef1b00d45a2c4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-08-20 11:34:20 +02:00
Tor Arne Vestbø 14fc3f4b0d Upgrade QWidgetPrivate::DrawWidgetFlag to QFlags
Allows for easier debugging of the paint cycle.

Change-Id: Iab85bccb99198a02f33c0beeccd4e3914375358d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-08-20 11:34:04 +02:00
Tor Arne Vestbø 6d9d4e6817 Rename QWidgetBackingStore to QWidgetRepaintManager
Quoting a blog from 2009, "this class is responsible for figuring out which parts
of the window surface needs to be updated prior to showing it to screen, so it's
really a repaint manager."

https://blog.qt.io/blog/2009/12/16/qt-graphics-and-performance-an-overview/

What better time to do the rename than 10 years later!

Change-Id: Ibf3c3bc8c7df64ac03d72e1f71d296b62d832fee
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-08-20 11:33:47 +02:00