Files
RedBear-OS/local/recipes/kde/kwin/source/doc/coding-conventions.md
T
vasilito ff4ff35918 feat: track all source trees in git — full fork offline-first model
Red Bear OS is a full fork. All sources must be available from git clone
with zero network access. Removed gitignore rules that excluded fetched
source trees under recipes/*/source/, local/recipes/kde/*/source/,
local/recipes/qt/*/source/, and vendor source trees.

Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded.

127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt
frameworks, mesa, wayland, DRM drivers, and every other recipe source.
2026-05-14 10:55:53 +01:00

2.5 KiB

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
rect.moveRight(anotherRect.right());
rect.moveBottom(anotherRect.bottom());
rect.moveBottomRight(anotherRect.bottomRight());

// Bad
rect.moveRight(anotherRect.left() - 1); // must be rect.moveLeft(anotherRect.left() - rect.width());
rect.moveBottom(anotherRect.top() - 1); // must be rect.moveTop(anotherRect.top() - 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
rect.setRight(anotherRect.right());
rect.setBottom(anotherRect.bottom());
rect.setBottomRight(anotherRect.bottomRight());

// Bad
rect.setRight(anotherRect.left());
rect.setBottom(anotherRect.top());
rect.setBottomRight(anotherRect.topLeft());

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()) {
    return;
}
if (rect.bottom() > anotherRect.bottom()) {
    return;
}

// Bad
if (rect.right() > anotherRect.left()) {
    return;
}
if (rect.bottom() > anotherRect.top()) {
    return;
}