This isn't a nice fix but the least evil version of a hack i could come
up. The source of the flickering is: We have a deeply nested structure
of widgets on the project pane. If we call hide() on such a deeply
nested widget, it will activate() it's parent layout synchronously.
That will then post an event (via updateGeometries() ) to its parent
layout that it needs relayouting. Which then will post to its parent
layout the same. And for each LayoutRequested, there's a painting in
between. The fix instead calls activate() up the chain until we are at
the viewport. This immediately relayouts everything. This adds a non
obvoius potentially for breakeage if the widgets are embedded in a
different widget hierarchy. But well, that's life.
Make sure that we give the QMainWindow always a valid layout before
restoring settings, so if something goes wrong with that, we don't end
up with a broken layout.
This covers 'Y' in novisual, char and line mode and 'y' in char mode.
Visual block mode is still missing. It also fixes an off-by-one error
when displaying selection in visual char mode.
Reviewed-by: hjk
Merge-request: 1149
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
- Give the controls a tooltip listing file details (date)
- Make building a QtConcurrent task
- Make log window scroll to bottom and pop up on error
- Make the build code pass on error messages about copying the
source files to the log file
- Clean up the building code string-wise, use QLatin1String and
translate messages, cache the icons. Use a QSharedPointer for
the QtVersions in the settings page since they are passed to
the BuildTask, which may outlive the dialog.
- Give the controls a tooltip listing file details (date)
- Make building a QtConcurrent task
- Make log window scroll to bottom and pop up on error
- Make the build code pass on error messages about copying the
source files to the log file
- Clean up the building code string-wise, use QLatin1String and
translate messages, cache the icons
This may happen if a process exits after we got the /proc listing. If
we fail to open the file, readAll() returns empty, which means split()
returns an empty list, which means you can't do at(1).