[Development] [Interest] 5.7 feature freeze

Rutledge Shawn Shawn.Rutledge at theqtcompany.com
Wed Jan 27 17:15:29 CET 2016

> On 27 Jan 2016, at 13:34, mark diener <rpzrpzrpz at gmail.com> wrote:
> The other major problem is that QQuickItem does not allow for
> QSGTextRect, so updatePaintNode CANNOT have text rendering
> in coordination with QSGGeometry.  The current recommendation is to
> try to coordinate using signals between 2 different QQuickItems, 1
> with text, the other
> with graphical geometry.  This is a restriction that appears to have
> occurred by chance.

That’s not the right class name AFAICT, but you mean you want public C++ API to populate text nodes into the scene graph, right?  Following the pattern that QSGSimpleRectNode and QSGSimpleTextureNode are public.  Yes this has been a sore thumb for quite some time.

Meanwhile, you can use private API.  If we make it public, then we are committed to keeping it compatible from now on, so I think that’s why the text-related nodes have not been made public so far: fear of losing flexibility to evolve.

We know that text rendering in Qt Quick needs to be more efficient.  What if that involves some refactoring?

And text rendering is complex, more or less depending on how fancy layout you need.  So I think in the long term we need some lower-level stuff, like a Glyph object in some QtQuick module (for putting FontAwesome icons [and future color-font icons!] on tool buttons, and selecting them by name rather than by unicode ID), and a PlainText item restricted to left-to-right rendering in a single font and color (no character spans, no markup, no harfbuzz, no RTL, but maybe with tab stops), as long as such an approach actually speeds up the common case.  Maybe such simple classes will be easier to make public, too, because they will have thin API.  (And then I would like to use the PlainText item to build a wicked-fast plain-text TableView.)

But, I did this https://codereview.qt-project.org/#/c/125753/ because in addition to being private, QQuickTextNode wasn’t even exported from the module; that must have been an oversight.  But that’s for 5.7.  So at least you can work at the level of Items rather than scene-graph nodes, using private C++ API.  And there is also private API for manipulating the scene graph nodes.  This came up for me when I wanted to label the tick marks on the axes of a line graph.  (I didn’t want to use bindings to position individual Text items.)  I tried adding

#include <private/qsgdistancefieldglyphnode_p.h>

and managed to spit out a few glyphs, but realized that our layout API is a little cumbersome (and I found a bug while I was at it, which has since been fixed if memory serves), and figured I’d need more time than I thought to get it working well.  So then I tried using QQuickTextNode instead, which works now (on 5.7 branch).  But it’s not the fastest possible way to do simple left-to-right labelling, so I should probably go back to the first way at some point.  And if you haven’t, you should try it too, and then be careful what kind of public API you wish for.  ;-)

> This cripples custom controls capabilities and forces me to explain to
> customers about Qt limitations.
> So how can we get the header file for QQmlEngine changed for 5.7

What is that about?

> feature freeze to add those 3 function declarations and un-sandbox
> QSGTextRect
> and still pass maintainer acceptance all by Monday?

If nobody started that yet, that means it’s potentially 5.8 material, right?  And as soon as dev is branched for 5.7, it implies that any further development on dev branch is actually for 5.8.  So someone could potentially have a full half-year cycle to make the existing private APIs decent, and/or write the new stuff, debug it, document it, do API review, use it in some pet application(s), and catch all the gotcha’s.  Assuming that everyone involved can be persuaded that it actually ought to be public at all, within that time frame, or assuming that somebody finds the time to implement APIs which are definitely good enough to make public and support over the long term.  (I would like to actually, but my main goal for 5.8 is the set of new pointer handlers, which is notoriously time-consuming stuff: it’s hard to get reviewers to be interested and have sufficient attention span, autotests take a lot of work, etc.)

> Cheers,
> md
> On Wed, Jan 27, 2016 at 2:30 AM, Knoll Lars <Lars.Knoll at theqtcompany.com> wrote:
>> Hi everybody,
>> we’re slightly past the originally planned date for the feature freeze, for various reasons (new stuff being open sourced, license change and being late with 5.6). But I believe most things should be in place now to do the feature freeze for 5.7 next Monday.
>> There are currently three exceptions to the freeze:
>> * ok to finish the printing support in web engine
>> * ok for BTLE support for Linux in qtconnectivity (merge neard branch)
>> * Modules that are flagged as TP can also have some more time
>> If anybody else has a feature he believes absolutely has to make it to 5.7, get it done until Monday or talk to me :)
>> Cheers,
>> Lars
>> _______________________________________________
>> Development mailing list
>> Development at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/development
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest

More information about the Development mailing list