summaryrefslogtreecommitdiff
path: root/src/layout/algorithm
diff options
context:
space:
mode:
authorItsOhen <TNordfeldt@gmail.com>2026-03-17 17:43:53 +0100
committerGitHub <noreply@github.com>2026-03-17 12:43:53 -0400
commit9f599e316504943eec5d2fa854f7c99c575616b7 (patch)
tree58041f7feb19ca8e022ae3639524b7c51ef05427 /src/layout/algorithm
parent35ef8dc1f7abb3e7139de5f8831ca2b0d81da78c (diff)
window/rules: add scrolling_width (#13754)
Diffstat (limited to 'src/layout/algorithm')
-rw-r--r--src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp13
-rw-r--r--src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp4
2 files changed, 9 insertions, 8 deletions
diff --git a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp
index 5de27b97..8a5b2d59 100644
--- a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp
+++ b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp
@@ -304,22 +304,22 @@ SScrollingData::SScrollingData(CScrollingAlgorithm* algo) : algorithm(algo) {
controller = makeUnique<CScrollTapeController>(SCROLL_DIR_RIGHT);
}
-SP<SColumnData> SScrollingData::add() {
+SP<SColumnData> SScrollingData::add(std::optional<float> width) {
auto col = columns.emplace_back(makeShared<SColumnData>(self.lock()));
col->self = col;
- size_t stripIdx = controller->addStrip(algorithm->defaultColumnWidth());
+ size_t stripIdx = controller->addStrip(width.value_or(algorithm->defaultColumnWidth()));
controller->getStrip(stripIdx).userData = col;
return col;
}
-SP<SColumnData> SScrollingData::add(int after) {
+SP<SColumnData> SScrollingData::add(int after, std::optional<float> width) {
auto col = makeShared<SColumnData>(self.lock());
col->self = col;
columns.insert(columns.begin() + after + 1, col);
- controller->insertStrip(after, algorithm->defaultColumnWidth());
+ controller->insertStrip(after, width.value_or(algorithm->defaultColumnWidth()));
controller->getStrip(after + 1).userData = col;
return col;
@@ -594,9 +594,10 @@ void CScrollingAlgorithm::newTarget(SP<ITarget> target) {
SP<SScrollingTargetData> droppingData = droppingOn ? dataFor(droppingOn->layoutTarget()) : nullptr;
SP<SColumnData> droppingColumn = droppingData ? droppingData->column.lock() : nullptr;
+ const auto width = target->window()->m_ruleApplicator->static_.scrollingWidth;
if (!droppingColumn) {
- auto col = m_scrollingData->add();
+ auto col = m_scrollingData->add(width);
col->add(target);
m_scrollingData->fitCol(col);
} else {
@@ -610,7 +611,7 @@ void CScrollingAlgorithm::newTarget(SP<ITarget> target) {
m_scrollingData->fitCol(droppingColumn);
} else {
auto idx = m_scrollingData->idx(droppingColumn);
- auto col = idx == -1 ? m_scrollingData->add() : m_scrollingData->add(idx);
+ auto col = idx == -1 ? m_scrollingData->add(width) : m_scrollingData->add(idx, width);
col->add(target);
m_scrollingData->fitCol(col);
}
diff --git a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp
index d95b3197..1b2b1d1e 100644
--- a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp
+++ b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.hpp
@@ -68,8 +68,8 @@ namespace Layout::Tiled {
UP<CScrollTapeController> controller;
- SP<SColumnData> add();
- SP<SColumnData> add(int after);
+ SP<SColumnData> add(std::optional<float> width = std::nullopt);
+ SP<SColumnData> add(int after, std::optional<float> width = std::nullopt);
int64_t idx(SP<SColumnData> c);
void remove(SP<SColumnData> c);
double maxWidth();