Kaydet (Commit) ea572a4f authored tarafından Eike Rathke's avatar Eike Rathke

Resolves: tdf#99477 freeze first col/row always set a freeze

The previous implementation had the odd behavior that Freeze First
Column and Freeze First Row removed any frozen state (column or row) if
there was one, instead of freezing the actually selected choice.

Changed to
* Freeze First Column
  * always freezes the first column
    * removes another column freeze if there was one
    * keeps a row freeze if there is one
    * checks the Freeze Rows and Columns toggle box
* Freeze First Row
  * always freezes the first row
    * removes another row freeze if there was one
    * keeps a column freeze if there is one
    * checks the Freeze Rows and Columns toggle box
* Freeze Rows and Columns
  * freezes at the current cell cursor position if there was no freeze
    (toggle box was unchecked)
  * removes any freeze if there was one (toggle box was checked)

Change-Id: I38c4b6f0486ef8e93da0bb3a69a99e5c7709a21e
Reviewed-on: https://gerrit.libreoffice.org/41908Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarEike Rathke <erack@redhat.com>
üst ecdf8f28
...@@ -1962,9 +1962,13 @@ void ScTabView::FreezeSplitters( bool bFreeze, SplitMethod eSplitMetod) ...@@ -1962,9 +1962,13 @@ void ScTabView::FreezeSplitters( bool bFreeze, SplitMethod eSplitMetod)
bool bLeft; bool bLeft;
bool bTop; bool bTop;
aViewData.GetMouseQuadrant( aSplit, ePos, nPosX, nPosY, bLeft, bTop ); aViewData.GetMouseQuadrant( aSplit, ePos, nPosX, nPosY, bLeft, bTop );
if (!bLeft) if (eSplitMetod == SC_SPLIT_METHOD_FIRST_COL)
nPosX = 1;
else if (!bLeft)
++nPosX; ++nPosX;
if (!bTop) if (eSplitMetod == SC_SPLIT_METHOD_FIRST_ROW)
nPosY = 1;
else if (!bTop)
++nPosY; ++nPosY;
} }
else else
......
...@@ -945,23 +945,31 @@ void ScTabViewShell::Execute( SfxRequest& rReq ) ...@@ -945,23 +945,31 @@ void ScTabViewShell::Execute( SfxRequest& rReq )
break; break;
case SID_WINDOW_FIX: case SID_WINDOW_FIX:
case SID_WINDOW_FIX_COL:
case SID_WINDOW_FIX_ROW:
{ {
SplitMethod eSplitMethod = SC_SPLIT_METHOD_CURSOR;
if (nSlot == SID_WINDOW_FIX_COL)
eSplitMethod = SC_SPLIT_METHOD_FIRST_COL;
else if (nSlot == SID_WINDOW_FIX_ROW)
eSplitMethod = SC_SPLIT_METHOD_FIRST_ROW;
ScSplitMode eHSplit = GetViewData().GetHSplitMode(); ScSplitMode eHSplit = GetViewData().GetHSplitMode();
ScSplitMode eVSplit = GetViewData().GetVSplitMode(); ScSplitMode eVSplit = GetViewData().GetVSplitMode();
if ( eHSplit == SC_SPLIT_FIX || eVSplit == SC_SPLIT_FIX ) // remove if ( eHSplit == SC_SPLIT_FIX || eVSplit == SC_SPLIT_FIX ) // remove
RemoveSplit(); RemoveSplit();
else else
FreezeSplitters( true, eSplitMethod); // create or fixate FreezeSplitters( true, SC_SPLIT_METHOD_CURSOR); // create or fixate
rReq.Done(); rReq.Done();
InvalidateSplit();
}
break;
case SID_WINDOW_FIX_COL:
{
FreezeSplitters( true, SC_SPLIT_METHOD_FIRST_COL);
rReq.Done();
InvalidateSplit();
}
break;
case SID_WINDOW_FIX_ROW:
{
FreezeSplitters( true, SC_SPLIT_METHOD_FIRST_ROW);
rReq.Done();
InvalidateSplit(); InvalidateSplit();
} }
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment