Commit c9c3c3ad authored by Vlad Zahorodnii's avatar Vlad Zahorodnii


Hopefully, the new document makes it clear when one can use QRect::right()
and QRect::bottom().

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision:
parent 6dd6bdb5
......@@ -91,5 +91,8 @@ KWin uses [KDE's phabricator instance]( for code rev
More complete documentation can be found in [KDE's wiki]( Please add "#KWin" as reviewers. Please run KWin's automated test suite prior to uploading a patch to ensure that the change does not break existing code.
# Coding conventions
KWin's coding conventions are explained in document [](doc/
# Coding style
KWin code follows the [Frameworks coding style](
# Coding Conventions
This document describes some of the recommended coding conventions that should be followed in KWin.
For KWin, it is recommended to follow the KDE Frameworks Coding Style.
## `auto` Keyword
Optionally, you can use the `auto` keyword in the following cases. If in doubt, for example if using
`auto` could make the code less readable, do not use `auto`. Keep in mind that code is read much more
often than written.
* When it avoids repetition of a type in the same statement.
auto something = new MyCustomType;
auto keyEvent = static_cast<QKeyEvent *>(event);
auto myList = QStringList({ "FooThing", "BarThing" });
* When assigning iterator types.
auto it = myList.const_iterator();
## `QRect::right()` and `QRect::bottom()`
For historical reasons, the `QRect::right()` and `QRect::bottom()` functions deviate from the true
bottom-right corner of the rectangle. Note that this is not the case for the `QRectF` class.
As a general rule, avoid using `QRect::right()` and `QRect::bottom()` as well methods that operate
on them. There are exceptions, though.
Exception 1: you can use `QRect::moveRight()` and `QRect::moveBottom()` to snap a `QRect` to
another `QRect` as long as the corresponding borders match, for example
// Ok
// Bad
rect.moveRight(anotherRect.left() - 1); // must be rect.moveLeft(anotherRect.left() - rect.width());
rect.moveBottom( - 1); // must be rect.moveTop( - rect.height());
rect.moveBottomRight(anotherRect.topLeft() - QPoint(1, 1));
Exception 2: you can use `QRect::setRight()` and `QRect::setBottom()` to clip a `QRect` by another
`QRect` as long as the corresponding borders match, for example
// Ok
// Bad
Exception 3: you can use `QRect::right()` and `QRect::bottom()` in conditional statements as long
as the compared borders are the same, for example
// Ok
if (rect.right() > anotherRect.right()) {
if (rect.bottom() > anotherRect.bottom()) {
// Bad
if (rect.right() > anotherRect.left()) {
if (rect.bottom() > {
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment