diff options
author | Pranam Lashkari <lpranam@collabora.com> | 2021-08-19 18:49:59 +0530 |
---|---|---|
committer | Pranam Lashkari <lpranam@collabora.com> | 2021-08-20 10:16:35 +0200 |
commit | 549dd4b3849435b4f4331e33fe056fb9832b6c6c (patch) | |
tree | b253371bc76a4b1e44495b7f46ab2f815663481c /sw | |
parent | 0d1540f6007e0839199cab72bdff77077f25ef65 (diff) |
LOK make sure single row/column table are resizable
First row/column are treated as heading in the table,
that's why need some special case handling for it
First row/column are not counted in regular row/column
Change-Id: If67b759911ea87f2b166a69243b85e98d90c4d22
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120672
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/uibase/uiview/viewtab.cxx | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/sw/source/uibase/uiview/viewtab.cxx b/sw/source/uibase/uiview/viewtab.cxx index d4f34c04d7cb..3da5f0d8ad0d 100644 --- a/sw/source/uibase/uiview/viewtab.cxx +++ b/sw/source/uibase/uiview/viewtab.cxx @@ -1105,24 +1105,30 @@ void SwView::ExecTabWin( SfxRequest const & rReq ) if (sType == "column-left") { - auto & rEntry = aTabCols.GetEntry(0); - tools::Long nNewPosition = aTabCols.GetLeft() + tools::Long(nOffset); - tools::Long nPosition = std::min(nNewPosition, rEntry.nPos - constDistanceOffset); - aTabCols.SetLeft(nPosition); + tools::Long nNewPosition = aTabCols.GetLeft() + nOffset; + if(aTabCols.Count() > 0) + { + auto & rEntry = aTabCols.GetEntry(0); + nNewPosition = std::min(nNewPosition, rEntry.nPos - constDistanceOffset); + } + aTabCols.SetLeft(nNewPosition); } else if (sType == "column-right") { - auto & rEntry = aTabCols.GetEntry(aTabCols.Count() - 1); - tools::Long nNewPosition = aTabCols.GetRight() + tools::Long(nOffset); - tools::Long nPosition = std::max(nNewPosition, rEntry.nPos + constDistanceOffset); - aTabCols.SetRight(nPosition); + tools::Long nNewPosition = aTabCols.GetRight() + nOffset; + if(aTabCols.Count() > 0) + { + auto & rEntry = aTabCols.GetEntry(aTabCols.Count() - 1); + nNewPosition = std::max(nNewPosition, rEntry.nPos + constDistanceOffset); + } + aTabCols.SetRight(nNewPosition); } else if (sType == "column-middle" && nIndex < aTabCols.Count()) { auto & rEntry = aTabCols.GetEntry(nIndex); - tools::Long nNewPosition = rEntry.nPos + tools::Long(nOffset); - tools::Long nPosition = std::clamp(nNewPosition, rEntry.nMin, rEntry.nMax - constDistanceOffset); - rEntry.nPos = nPosition; + tools::Long nNewPosition = rEntry.nPos + nOffset; + nNewPosition = std::clamp(nNewPosition, rEntry.nMin, rEntry.nMax - constDistanceOffset); + rEntry.nPos = nNewPosition; } rSh.SetTabCols(aTabCols, false); @@ -1135,23 +1141,26 @@ void SwView::ExecTabWin( SfxRequest const & rReq ) if (sType == "row-left") { auto & rEntry = aTabRows.GetEntry(0); - tools::Long nNewPosition = aTabRows.GetLeft() + tools::Long(nOffset); - tools::Long nPosition = std::min(nNewPosition, rEntry.nPos - constDistanceOffset); - aTabRows.SetLeft(nPosition); + tools::Long nNewPosition = aTabRows.GetLeft() + nOffset; + nNewPosition = std::min(nNewPosition, rEntry.nPos - constDistanceOffset); + aTabRows.SetLeft(nNewPosition); } else if (sType == "row-right") { - auto & rEntry = aTabRows.GetEntry(aTabRows.Count() - 1); - tools::Long nNewPosition = aTabRows.GetRight() + tools::Long(nOffset); - tools::Long nPosition = std::max(nNewPosition, rEntry.nPos + constDistanceOffset); - aTabRows.SetRight(nPosition); + tools::Long nNewPosition = aTabRows.GetRight() + nOffset; + if(aTabRows.Count() > 0) + { + auto & rEntry = aTabRows.GetEntry(aTabRows.Count() - 1); + nNewPosition = std::max(nNewPosition, rEntry.nPos + constDistanceOffset); + } + aTabRows.SetRight(nNewPosition); } else if (sType == "row-middle" && nIndex < aTabRows.Count()) { auto & rEntry = aTabRows.GetEntry(nIndex); - tools::Long nNewPosition = rEntry.nPos + tools::Long(nOffset); - tools::Long nPosition = std::clamp(nNewPosition, rEntry.nMin, rEntry.nMax - constDistanceOffset); - rEntry.nPos = nPosition; + tools::Long nNewPosition = rEntry.nPos + nOffset; + nNewPosition = std::clamp(nNewPosition, rEntry.nMin, rEntry.nMax - constDistanceOffset); + rEntry.nPos = nNewPosition; } rSh.SetTabRows(aTabRows, false); |