5#include <QLoggingCategory>
9Q_DECLARE_LOGGING_CATEGORY(gLcInputRegion)
10Q_LOGGING_CATEGORY(gLcInputRegion,
"fluid.inputregion")
35 qCWarning(gLcInputRegion,
"Unable to change InputArea::region after initialization");
118 return QRectF(m_x, m_y, m_width, m_height);
126 m_initialized =
true;
166 qCWarning(gLcInputRegion,
"Unable to change InputRegion::window after initialization");
179 return QQmlListProperty<InputArea>(
181 &InputRegion::areasCount,
188 if (!m_areas.contains(area)) {
194 m_areas.append(area);
200 if (m_areas.removeOne(area)) {
216 for (
auto *p = parent(); p !=
nullptr; p = p->parent()) {
217 if (
auto *w = qobject_cast<QWindow *>(p)) {
225 m_initialized =
true;
231qsizetype InputRegion::areasCount(QQmlListProperty<InputArea> *list)
233 return reinterpret_cast<InputRegion *
>(list->data)->m_areas.count();
236InputArea *InputRegion::areaAt(QQmlListProperty<InputArea> *list, qsizetype index)
238 return reinterpret_cast<InputRegion *
>(list->data)->m_areas.at(index);
241void InputRegion::setInputRegion()
249 for (
auto *a : std::as_const(m_areas)) {
250 if (a->isEnabled()) {
252 region += a->rect().toRect();
258 if (m_window->mask() != region) {
260 qCDebug(gLcInputRegion) <<
"Unset input region from" << m_window;
262 qCDebug(gLcInputRegion) <<
"Set" << m_window <<
"input region to:" << region;
263 m_window->setMask(region);