[Development] Proposal: Make QML's Rectangle border be inner instead of centered on the outline

Tor Arne Vestbø tor.arne.vestbo at digia.com
Thu Oct 18 12:06:24 CEST 2012


Hi,

The border of a Rectangle in QtQuick 1 was drawn as an outline, 
resulting in the bottom and right borders to be drawn outside of the 
rectangle's width/height. This caused issues such as:

  - Unintuitive manual margin calculations required if you wanted to 
center an item inside a Rectangle with a border.

For example, in the following snippet:

   https://gist.github.com/3910706

Which has the following output:

   http://tinyurl.com/sad-qml-kitten

The first kitten (red border) has too much right/bottom margin, if using 
the intuitive approach. The second kitten looks correct (green border), 
but needs manual adjustments to the border.

  - Clipping away the bottom and right borders if an item was clipped to 
its parent based on its width/height.

This issue is described in the documentation, here:

http://doc-snapshot.qt-project.org/5.0/qml-qtquick2-rectangle.html#border.width-prop

Neither of these issues are very good experiences/selling point for 
first time Qt Quick users.

At some point I filed a task to add a border.type property, to allow us 
to extend the border with inner/outer variants:

   https://bugreports.qt-project.org/browse/QTBUG-21341

But I think we can do one better for Qt Quick 2, by changing the 
default. Of course this does not prevent us from introducing border.type 
at a later stage. If we don't change the default now, we'll be stuck 
with the same issue for Qt Quick2 as we had for Qt Quick 1.

Samuel has kindly already provided a patch that does this, and it's up 
for review at:

   https://codereview.qt-project.org/#change,37389

The patch is surprisingly simple, and largely consists of nice red 
blocks of removing logic that's no longer needed, thanks to the 
simplified logic and Kim's forward-thinking when implementing the 
drawing code.

So, anyone against making the kittens happy? :)

Cheers,
Tor Arne






More information about the Development mailing list