Summary: | On large document, merging down a layer results in different layer getting selected after the merge | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | Raghavendra kamath <raghu> |
Component: | Layer Stack | Assignee: | Dmitry Kazakov <dimula73> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | dimula73, halla |
Priority: | NOR | ||
Version: | git master (please specify the git hash!) | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/graphics/krita/commit/87d27964b5893f67c95deb03d73198a8acb6849a | Version Fixed In: | |
Sentry Crash Report: |
Description
Raghavendra kamath
2020-03-16 14:40:02 UTC
Yes, I see this happen. Git commit 8fd316da11d6ec5c8a129bc88dd042fb0bcdc659 by Dmitry Kazakov. Committed on 19/08/2020 at 22:08. Pushed by dkazakov into branch 'krita/4.3'. Fix temporary wrongly selected layer when merging down huge layers The problem happened because of our workaround for Qt's removed item avoidance algorithm. On element removal, Qt selects an item above that, but we need a reverse, below it. The previous implementation just tried to fix Qt's behavior after the removal, but that didn't seem to work correctly in case of merge down. Therefore, this patch implements a special signal that is fired *before* beginRemoveRows(), that fixes the selection before Qt can lay its hands on it. Related: bug 345601 M +15 -0 libs/ui/kis_node_filter_proxy_model.cpp M +4 -0 libs/ui/kis_node_filter_proxy_model.h M +1 -0 libs/ui/kis_node_model.cpp M +1 -0 libs/ui/kis_node_model.h M +9 -9 plugins/dockers/layerdocker/LayerBox.cpp M +1 -1 plugins/dockers/layerdocker/LayerBox.h https://invent.kde.org/graphics/krita/commit/8fd316da11d6ec5c8a129bc88dd042fb0bcdc659 Git commit 87d27964b5893f67c95deb03d73198a8acb6849a by Dmitry Kazakov. Committed on 19/08/2020 at 22:09. Pushed by dkazakov into branch 'master'. Fix temporary wrongly selected layer when merging down huge layers The problem happened because of our workaround for Qt's removed item avoidance algorithm. On element removal, Qt selects an item above that, but we need a reverse, below it. The previous implementation just tried to fix Qt's behavior after the removal, but that didn't seem to work correctly in case of merge down. Therefore, this patch implements a special signal that is fired *before* beginRemoveRows(), that fixes the selection before Qt can lay its hands on it. Related: bug 345601 M +15 -0 libs/ui/kis_node_filter_proxy_model.cpp M +4 -0 libs/ui/kis_node_filter_proxy_model.h M +1 -0 libs/ui/kis_node_model.cpp M +1 -0 libs/ui/kis_node_model.h M +9 -9 plugins/dockers/layerdocker/LayerBox.cpp M +1 -1 plugins/dockers/layerdocker/LayerBox.h https://invent.kde.org/graphics/krita/commit/87d27964b5893f67c95deb03d73198a8acb6849a |