From 5295dc9ae9b218c3f3774a49d42f7eadbeef1c30 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Thu, 4 Mar 2021 00:06:27 +0200 Subject: [PATCH] fixes for FastLayoutManager.insertAtCoordinates --consider start and end layouts only when the alignment is set to Justify --- CMakeLists.txt | 3 +++ containment/CMakeLists.txt | 1 + containment/plugin/layoutmanager.cpp | 30 ++++++++++++++++++---------- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7efc4c29a..495a2ea63 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,6 +87,9 @@ set(CORETYPESHEADER "LIBCORETYPES_H") configure_file(declarativeimports/coretypes.h.in declarativeimports/core/types.h) set(CORETYPESHEADER "APPCORETYPES_H") configure_file(declarativeimports/coretypes.h.in app/coretypes.h) +set(CORETYPESHEADER "LATTEGENERALCONTAINMENTTYPES_H") +configure_file(declarativeimports/coretypes.h.in containment/plugin/lattetypes.h) + # subdirectories add_subdirectory(declarativeimports) diff --git a/containment/CMakeLists.txt b/containment/CMakeLists.txt index dfda88af9..77a35d840 100644 --- a/containment/CMakeLists.txt +++ b/containment/CMakeLists.txt @@ -4,6 +4,7 @@ configure_file(metadata.desktop.cmake ${CMAKE_CURRENT_SOURCE_DIR}/package/metada plasma_install_package(package org.kde.latte.containment) set(containment_SRCS + plugin/lattetypes.h plugin/types.cpp plugin/layoutmanager.cpp plugin/lattecontainmentplugin.cpp diff --git a/containment/plugin/layoutmanager.cpp b/containment/plugin/layoutmanager.cpp index c464728d2..24e9cd66a 100644 --- a/containment/plugin/layoutmanager.cpp +++ b/containment/plugin/layoutmanager.cpp @@ -20,7 +20,10 @@ #include "layoutmanager.h" -//! Plasma +// local +#include + +// Plasma #include const int CHILDFOUNDID = 11; @@ -138,6 +141,7 @@ void LayoutManager::insertBefore(QQuickItem *hoveredItem, QQuickItem *item) item->setParentItem(hoveredItem->parentItem()); item->stackBefore(hoveredItem); + } void LayoutManager::insertAfter(QQuickItem *hoveredItem, QQuickItem *item) @@ -220,13 +224,11 @@ bool LayoutManager::insertAtLayoutCoordinates(QQuickItem *layout, QQuickItem *it } } - item->setParentItem(layout); - if ((vertical && y < (hovered->y() + hovered->height()/2)) || (horizontal && x < hovered->x() + hovered->width()/2)) { - item->stackBefore(hovered); + insertBefore(hovered, item); } else { - item->stackAfter(hovered); + insertAfter(hovered, item); } return true; @@ -234,14 +236,22 @@ bool LayoutManager::insertAtLayoutCoordinates(QQuickItem *layout, QQuickItem *it void LayoutManager::insertAtCoordinates(QQuickItem *item, const int &x, const int &y) { + if (!m_configuration) { + return; + } + + Latte::Types::Alignment alignment = static_cast((*m_configuration)["alignment"].toInt()); + bool result{false}; - QPointF startPos = m_startLayout->mapFromItem(m_rootItem, QPointF(x, y)); - result = insertAtLayoutCoordinates(m_startLayout, item, startPos.x(), startPos.y()); + if (alignment == Latte::Types::Justify) { + QPointF startPos = m_startLayout->mapFromItem(m_rootItem, QPointF(x, y)); + result = insertAtLayoutCoordinates(m_startLayout, item, startPos.x(), startPos.y()); - if (!result) { - QPointF endPos = m_endLayout->mapFromItem(m_rootItem, QPointF(x, y)); - result = insertAtLayoutCoordinates(m_endLayout, item, endPos.x(), endPos.y()); + if (!result) { + QPointF endPos = m_endLayout->mapFromItem(m_rootItem, QPointF(x, y)); + result = insertAtLayoutCoordinates(m_endLayout, item, endPos.x(), endPos.y()); + } } if (!result) {