diff options
author | Gulsah Kose <gulsah.1004@gmail.com> | 2016-01-19 16:32:18 +0200 |
---|---|---|
committer | Maxim Monastirsky <momonasmon@gmail.com> | 2016-02-17 13:02:32 +0200 |
commit | a009ba2b8ed7ead021ecc3356a477a08e72d2191 (patch) | |
tree | efb3046135e99ad3e23aa6293fdda57f08f9459a | |
parent | d562ee461735a6daa6dcdfcc559f851cad160aaf (diff) |
tdf#91013 Add new uno commands to freeze one row and column.
Added freezepanesfirstcolumn and freezepanesfirstrow commands.
FreezePanes button became a split button that includes this two new
uno commands. And this new commands added to menu.
Change-Id: Ic6958067cc98b3df50bcd06a1eac220bd9a61473
Reviewed-on: https://gerrit.libreoffice.org/21604
Signed-off-by: Gulsah Kose <gulsah.1004@gmail.com>
-rw-r--r-- | framework/Library_fwk.mk | 1 | ||||
-rw-r--r-- | framework/source/uielement/freezepanesmenucontroller.cxx | 104 | ||||
-rw-r--r-- | framework/source/uielement/popuptoolbarcontroller.cxx | 13 | ||||
-rw-r--r-- | framework/util/fwk.component | 4 | ||||
-rw-r--r-- | officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu | 16 | ||||
-rw-r--r-- | officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu | 25 | ||||
-rw-r--r-- | sc/inc/sc.hrc | 2 | ||||
-rw-r--r-- | sc/sdi/scalc.sdi | 33 | ||||
-rw-r--r-- | sc/sdi/tabvwsh.sdi | 2 | ||||
-rw-r--r-- | sc/source/ui/inc/tabview.hxx | 4 | ||||
-rw-r--r-- | sc/source/ui/view/tabview.cxx | 114 | ||||
-rw-r--r-- | sc/source/ui/view/tabvwsh3.cxx | 10 | ||||
-rw-r--r-- | sc/uiconfig/scalc/menubar/menubar.xml | 2 |
13 files changed, 283 insertions, 47 deletions
diff --git a/framework/Library_fwk.mk b/framework/Library_fwk.mk index 0c78fc460a2d..f9aed1fced13 100644 --- a/framework/Library_fwk.mk +++ b/framework/Library_fwk.mk @@ -144,6 +144,7 @@ $(eval $(call gb_Library_add_exception_objects,fwk,\ framework/source/uielement/popuptoolbarcontroller \ framework/source/uielement/progressbarwrapper \ framework/source/uielement/recentfilesmenucontroller \ + framework/source/uielement/freezepanesmenucontroller \ framework/source/uielement/resourcemenucontroller \ framework/source/uielement/saveasmenucontroller \ framework/source/uielement/spinfieldtoolbarcontroller \ diff --git a/framework/source/uielement/freezepanesmenucontroller.cxx b/framework/source/uielement/freezepanesmenucontroller.cxx new file mode 100644 index 000000000000..9d4cd1bda4f4 --- /dev/null +++ b/framework/source/uielement/freezepanesmenucontroller.cxx @@ -0,0 +1,104 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <cppuhelper/supportsservice.hxx> +#include <svtools/popupmenucontrollerbase.hxx> +#include <vcl/menu.hxx> +#include <vcl/svapp.hxx> + +using namespace css; +using namespace com::sun::star::uno; +using namespace com::sun::star::frame; + +namespace { + +class FreezePanesMenuController : public svt::PopupMenuControllerBase +{ +public: + explicit FreezePanesMenuController( const uno::Reference< uno::XComponentContext >& xContext ); + virtual ~FreezePanesMenuController(); + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() + throw (css::uno::RuntimeException, std::exception) override + { + return OUString("com.sun.star.comp.framework.FreezePanesMenuController"); + } + + virtual sal_Bool SAL_CALL supportsService(OUString const & ServiceName) + throw (css::uno::RuntimeException, std::exception) override + { + return cppu::supportsService(this, ServiceName); + } + + virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() + throw (css::uno::RuntimeException, std::exception) override + { + css::uno::Sequence< OUString > aSeq { "com.sun.star.frame.PopupMenuController" }; + return aSeq; + } + + // XStatusListener + virtual void SAL_CALL statusChanged( const frame::FeatureStateEvent& Event ) throw ( uno::RuntimeException, std::exception ) override; + +private: + virtual void impl_setPopupMenu() override; +}; + +FreezePanesMenuController::FreezePanesMenuController( const uno::Reference< uno::XComponentContext >& xContext ) : + svt::PopupMenuControllerBase( xContext ) +{ +} + +FreezePanesMenuController::~FreezePanesMenuController() +{ +} + +void FreezePanesMenuController::impl_setPopupMenu() +{ + VCLXMenu* pPopupMenu = VCLXMenu::GetImplementation( m_xPopupMenu ); + Menu* pVCLPopupMenu = nullptr; + + SolarMutexGuard aSolarMutexGuard; + + if ( pPopupMenu ) + pVCLPopupMenu = pPopupMenu->GetMenu(); + + if ( pVCLPopupMenu ) + { + pVCLPopupMenu->InsertItem( ".uno:FreezePanesFirstColumn", m_xFrame ); + pVCLPopupMenu->InsertItem( ".uno:FreezePanesFirstRow", m_xFrame ); + } +} + +// XStatusListener +void SAL_CALL FreezePanesMenuController::statusChanged( const FeatureStateEvent& /*Event*/ ) throw ( RuntimeException, std::exception ) +{ +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL +com_sun_star_comp_framework_FreezePanesMenuController_get_implementation( + css::uno::XComponentContext *context, + css::uno::Sequence<css::uno::Any> const &) +{ + return cppu::acquire(new FreezePanesMenuController(context)); +} + +} +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/uielement/popuptoolbarcontroller.cxx b/framework/source/uielement/popuptoolbarcontroller.cxx index 8296dac661c8..28f7affa0487 100644 --- a/framework/source/uielement/popuptoolbarcontroller.cxx +++ b/framework/source/uielement/popuptoolbarcontroller.cxx @@ -169,10 +169,15 @@ throw ( css::uno::Exception, css::uno::RuntimeException, std::exception ) void SAL_CALL PopupMenuToolbarController::statusChanged( const css::frame::FeatureStateEvent& rEvent ) throw ( css::uno::RuntimeException, std::exception ) { - // TODO move to base class - - svt::ToolboxController::statusChanged( rEvent ); - enable( rEvent.IsEnabled ); + ToolBox* pToolBox = nullptr; + sal_uInt16 nItemId = 0; + if ( getToolboxId( nItemId, &pToolBox ) ) + { + pToolBox->EnableItem( nItemId, rEvent.IsEnabled ); + bool bValue; + if ( rEvent.State >>= bValue ) + pToolBox->CheckItem( nItemId, bValue ); + } } css::uno::Reference< css::awt::XWindow > SAL_CALL diff --git a/framework/util/fwk.component b/framework/util/fwk.component index f14fbe4f06bc..f6ae4821979a 100644 --- a/framework/util/fwk.component +++ b/framework/util/fwk.component @@ -121,6 +121,10 @@ constructor="com_sun_star_comp_framework_SaveAsMenuController_get_implementation"> <service name="com.sun.star.frame.PopupMenuController"/> </implementation> + <implementation name="com.sun.star.comp.framework.FreezePanesMenuController" + constructor="com_sun_star_comp_framework_FreezePanesMenuController_get_implementation"> + <service name="com.sun.star.frame.PopupMenuController"/> + </implementation> <implementation name="com.sun.star.comp.framework.StatusBarControllerFactory" constructor="com_sun_star_comp_framework_StatusBarControllerFactory_get_implementation"> <service name="com.sun.star.frame.StatusbarControllerFactory"/> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu index 8f4d9115743e..df6cfe1e1b86 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu @@ -73,6 +73,22 @@ <value>1</value> </prop> </node> + <node oor:name=".uno:FreezePanesFirstColumn" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Freeze First Column</value> + </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> + </node> + <node oor:name=".uno:FreezePanesFirstRow" oor:op="replace"> + <prop oor:name="Label" oor:type="xs:string"> + <value xml:lang="en-US">Freeze First Row</value> + </prop> + <prop oor:name="Properties" oor:type="xs:int"> + <value>1</value> + </prop> + </node> <node oor:name=".uno:ShowErrors" oor:op="replace"> <prop oor:name="Label" oor:type="xs:string"> <value xml:lang="en-US">Trace ~Error</value> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu index 4df10e21867b..b994e8001d4f 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu @@ -305,6 +305,17 @@ <value>conditional</value> </prop> </node> + <node oor:name="c26" oor:op="replace"> + <prop oor:name="Command"> + <value>.uno:FreezePanesMenu</value> + </prop> + <prop oor:name="Module"> + <value/> + </prop> + <prop oor:name="Controller"> + <value>com.sun.star.comp.framework.FreezePanesMenuController</value> + </prop> + </node> </node> <node oor:name="ToolBar"> <node oor:name="ZoomToolBox" oor:op="replace"> @@ -1054,6 +1065,20 @@ <value>com.sun.star.comp.framework.SaveToolbarController</value> </prop> </node> + <node oor:name="FreezePanesToolbarController" oor:op="replace"> + <prop oor:name="Command"> + <value>.uno:FreezePanes</value> + </prop> + <prop oor:name="Module"> + <value/> + </prop> + <prop oor:name="Controller"> + <value>com.sun.star.comp.framework.GenericPopupToolbarController</value> + </prop> + <prop oor:name="Value"> + <value>.uno:FreezePanesMenu</value> + </prop> + </node> <node oor:name="org.apache.openoffice.comp.framework.NewToolbarController" oor:op="replace"> <prop oor:name="Command"> <value>.uno:AddDirect</value> diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc index 52e34cebcc67..8395c2366ff0 100644 --- a/sc/inc/sc.hrc +++ b/sc/inc/sc.hrc @@ -275,6 +275,8 @@ #define SID_ZTEST_DIALOG (SC_MESSAGE_START + 81) #define SID_CHI_SQUARE_TEST_DIALOG (SC_MESSAGE_START + 82) #define SID_SEARCH_RESULTS_DIALOG (SC_MESSAGE_START + 83) +#define SID_WINDOW_FIX_ROW (SC_MESSAGE_START + 84) +#define SID_WINDOW_FIX_COL (SC_MESSAGE_START + 85) // functions diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi index 7193916d81ec..853bc79495eb 100644 --- a/sc/sdi/scalc.sdi +++ b/sc/sdi/scalc.sdi @@ -2080,6 +2080,39 @@ SfxVoidItem FreezePanes SID_WINDOW_FIX GroupId = GID_VIEW; ] +SfxVoidItem FreezePanesFirstColumn SID_WINDOW_FIX_COL +() +[ + AutoUpdate = FALSE, + FastCall = FALSE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = TRUE, + MenuConfig = TRUE, + ToolBoxConfig = TRUE, + GroupId = GID_VIEW; +] + +SfxVoidItem FreezePanesFirstRow SID_WINDOW_FIX_ROW +() +[ + AutoUpdate = FALSE, + FastCall = FALSE, + ReadOnlyDoc = TRUE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + + AccelConfig = TRUE, + MenuConfig = TRUE, + ToolBoxConfig = TRUE, + GroupId = GID_VIEW; +] SfxVoidItem FunctionBox FID_FUNCTION_BOX diff --git a/sc/sdi/tabvwsh.sdi b/sc/sdi/tabvwsh.sdi index e2becfbddc7b..3a25e81a7b1d 100644 --- a/sc/sdi/tabvwsh.sdi +++ b/sc/sdi/tabvwsh.sdi @@ -131,6 +131,8 @@ interface TableEditView SID_CURRENTDOC [ ExecMethod = Execute; StateMethod = GetState; ] SID_WINDOW_SPLIT [ ExecMethod = Execute; StateMethod = GetState; ] SID_WINDOW_FIX [ ExecMethod = Execute; StateMethod = GetState; ] + SID_WINDOW_FIX_ROW [ ExecMethod = Execute; ] + SID_WINDOW_FIX_COL [ ExecMethod = Execute; ] SID_SAVEDOC [ ExecMethod = ExecuteSave ; diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx index 23b97ed79392..5e7d9c792fc6 100644 --- a/sc/source/ui/inc/tabview.hxx +++ b/sc/source/ui/inc/tabview.hxx @@ -229,6 +229,8 @@ public: ScTabView( vcl::Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell ); ~ScTabView(); + enum SplitMethod { SC_SPLIT_METHOD_FIRST_COL, SC_SPLIT_METHOD_FIRST_ROW, SC_SPLIT_METHOD_CURSOR }; + void MakeDrawLayer(); void HideListBox(); @@ -494,7 +496,7 @@ public: Point GetMousePosPixel(); - void FreezeSplitters( bool bFreeze ); + void FreezeSplitters( bool bFreeze, SplitMethod eSplitMethod = SC_SPLIT_METHOD_CURSOR ); void RemoveSplit(); void SplitAtCursor(); void SplitAtPixel( const Point& rPixel, bool bHor, bool bVer ); diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx index 9895bb79e14b..791851622e22 100644 --- a/sc/source/ui/view/tabview.cxx +++ b/sc/source/ui/view/tabview.cxx @@ -1931,7 +1931,7 @@ Point ScTabView::GetMousePosPixel() return aPos; } -void ScTabView::FreezeSplitters( bool bFreeze ) +void ScTabView::FreezeSplitters( bool bFreeze, SplitMethod eSplitMetod) { ScSplitMode eOldH = aViewData.GetHSplitMode(); ScSplitMode eOldV = aViewData.GetVSplitMode(); @@ -1949,19 +1949,20 @@ void ScTabView::FreezeSplitters( bool bFreeze ) aViewData.GetDocShell()->SetDocumentModified(); Point aSplit; - SCsCOL nPosX; - SCsROW nPosY; - if (eOldH != SC_SPLIT_NONE || eOldV != SC_SPLIT_NONE) + SCsCOL nPosX = 1; + SCsROW nPosY = 1; + if (eOldV != SC_SPLIT_NONE || eOldH != SC_SPLIT_NONE) { - if (eOldH != SC_SPLIT_NONE) + if ( eOldV != SC_SPLIT_NONE && (eSplitMetod == SC_SPLIT_METHOD_FIRST_ROW || eSplitMetod == SC_SPLIT_METHOD_CURSOR)) + aSplit.Y() = aViewData.GetVSplitPos() - aWinStart.Y(); + + if ( eOldH != SC_SPLIT_NONE && (eSplitMetod == SC_SPLIT_METHOD_FIRST_COL || eSplitMetod == SC_SPLIT_METHOD_CURSOR)) { long nSplitPos = aViewData.GetHSplitPos(); if ( bLayoutRTL ) nSplitPos = pFrameWin->GetOutputSizePixel().Width() - nSplitPos - 1; aSplit.X() = nSplitPos - aWinStart.X(); } - if (eOldV != SC_SPLIT_NONE) - aSplit.Y() = aViewData.GetVSplitPos() - aWinStart.Y(); aViewData.GetPosFromPixel( aSplit.X(), aSplit.Y(), ePos, nPosX, nPosY ); bool bLeft; @@ -1974,51 +1975,80 @@ void ScTabView::FreezeSplitters( bool bFreeze ) } else { - nPosX = static_cast<SCsCOL>( aViewData.GetCurX()); - nPosY = static_cast<SCsROW>( aViewData.GetCurY()); + switch(eSplitMetod) + { + case SC_SPLIT_METHOD_FIRST_ROW: + { + nPosX = 0; + nPosY = 1; + } + break; + case SC_SPLIT_METHOD_FIRST_COL: + { + nPosX = 1; + nPosY = 0; + } + break; + case SC_SPLIT_METHOD_CURSOR: + { + nPosX = static_cast<SCsCOL>( aViewData.GetCurX()); + nPosY = static_cast<SCsROW>( aViewData.GetCurY()); + } + break; + } } - SCCOL nLeftPos = aViewData.GetPosX(SC_SPLIT_LEFT); SCROW nTopPos = aViewData.GetPosY(SC_SPLIT_BOTTOM); - SCCOL nRightPos = static_cast<SCCOL>(nPosX); SCROW nBottomPos = static_cast<SCROW>(nPosY); - if (eOldH != SC_SPLIT_NONE) - if (aViewData.GetPosX(SC_SPLIT_RIGHT) > nRightPos) - nRightPos = aViewData.GetPosX(SC_SPLIT_RIGHT); - if (eOldV != SC_SPLIT_NONE) + SCCOL nLeftPos = aViewData.GetPosX(SC_SPLIT_LEFT); + SCCOL nRightPos = static_cast<SCCOL>(nPosX); + + if (eSplitMetod == SC_SPLIT_METHOD_FIRST_ROW || eSplitMetod == SC_SPLIT_METHOD_CURSOR) { - nTopPos = aViewData.GetPosY(SC_SPLIT_TOP); - if (aViewData.GetPosY(SC_SPLIT_BOTTOM) > nBottomPos) - nBottomPos = aViewData.GetPosY(SC_SPLIT_BOTTOM); + if (eOldV != SC_SPLIT_NONE) + { + nTopPos = aViewData.GetPosY(SC_SPLIT_TOP); + if (aViewData.GetPosY(SC_SPLIT_BOTTOM) > nBottomPos) + nBottomPos = aViewData.GetPosY(SC_SPLIT_BOTTOM); + } + aSplit = aViewData.GetScrPos( static_cast<SCCOL>(nPosX), static_cast<SCROW>(nPosY), ePos, true ); + if (aSplit.Y() > 0) + { + aViewData.SetVSplitMode( SC_SPLIT_FIX ); + aViewData.SetVSplitPos( aSplit.Y() + aWinStart.Y() ); + aViewData.SetFixPosY( nPosY ); + + aViewData.SetPosY(SC_SPLIT_TOP, nTopPos); + aViewData.SetPosY(SC_SPLIT_BOTTOM, nBottomPos); + } + else + aViewData.SetVSplitMode( SC_SPLIT_NONE ); } - aSplit = aViewData.GetScrPos( static_cast<SCCOL>(nPosX), static_cast<SCROW>(nPosY), ePos, true ); - if (nPosX > aViewData.GetPosX(SC_SPLIT_LEFT)) // (aSplit.X() > 0) doesn't work for RTL + if (eSplitMetod == SC_SPLIT_METHOD_FIRST_COL || eSplitMetod == SC_SPLIT_METHOD_CURSOR) { - long nSplitPos = aSplit.X() + aWinStart.X(); - if ( bLayoutRTL ) - nSplitPos = pFrameWin->GetOutputSizePixel().Width() - nSplitPos - 1; - - aViewData.SetHSplitMode( SC_SPLIT_FIX ); - aViewData.SetHSplitPos( nSplitPos ); - aViewData.SetFixPosX( nPosX ); + if (eOldH != SC_SPLIT_NONE) + { + if (aViewData.GetPosX(SC_SPLIT_RIGHT) > nRightPos) + nRightPos = aViewData.GetPosX(SC_SPLIT_RIGHT); + } + aSplit = aViewData.GetScrPos( static_cast<SCCOL>(nPosX), static_cast<SCROW>(nPosY), ePos, true ); + if (nPosX > aViewData.GetPosX(SC_SPLIT_LEFT)) // (aSplit.X() > 0) doesn't work for RTL + { + long nSplitPos = aSplit.X() + aWinStart.X(); + if ( bLayoutRTL ) + nSplitPos = pFrameWin->GetOutputSizePixel().Width() - nSplitPos - 1; - aViewData.SetPosX(SC_SPLIT_LEFT, nLeftPos); - aViewData.SetPosX(SC_SPLIT_RIGHT, nRightPos); - } - else - aViewData.SetHSplitMode( SC_SPLIT_NONE ); - if (aSplit.Y() > 0) - { - aViewData.SetVSplitMode( SC_SPLIT_FIX ); - aViewData.SetVSplitPos( aSplit.Y() + aWinStart.Y() ); - aViewData.SetFixPosY( nPosY ); + aViewData.SetHSplitMode( SC_SPLIT_FIX ); + aViewData.SetHSplitPos( nSplitPos ); + aViewData.SetFixPosX( nPosX ); - aViewData.SetPosY(SC_SPLIT_TOP, nTopPos); - aViewData.SetPosY(SC_SPLIT_BOTTOM, nBottomPos); + aViewData.SetPosX(SC_SPLIT_LEFT, nLeftPos); + aViewData.SetPosX(SC_SPLIT_RIGHT, nRightPos); + } + else + aViewData.SetHSplitMode( SC_SPLIT_NONE ); } - else - aViewData.SetVSplitMode( SC_SPLIT_NONE ); } else // unfreeze { @@ -2104,6 +2134,8 @@ void ScTabView::InvalidateSplit() SfxBindings& rBindings = aViewData.GetBindings(); rBindings.Invalidate( SID_WINDOW_SPLIT ); rBindings.Invalidate( SID_WINDOW_FIX ); + rBindings.Invalidate( SID_WINDOW_FIX_COL ); + rBindings.Invalidate( SID_WINDOW_FIX_ROW ); pHSplitter->SetFixed( aViewData.GetHSplitMode() == SC_SPLIT_FIX ); pVSplitter->SetFixed( aViewData.GetVSplitMode() == SC_SPLIT_FIX ); diff --git a/sc/source/ui/view/tabvwsh3.cxx b/sc/source/ui/view/tabvwsh3.cxx index 606755a7c42f..4ea02a9fde79 100644 --- a/sc/source/ui/view/tabvwsh3.cxx +++ b/sc/source/ui/view/tabvwsh3.cxx @@ -896,13 +896,21 @@ void ScTabViewShell::Execute( SfxRequest& rReq ) break; 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 eVSplit = GetViewData().GetVSplitMode(); if ( eHSplit == SC_SPLIT_FIX || eVSplit == SC_SPLIT_FIX ) // remove RemoveSplit(); else - FreezeSplitters( true ); // create or fixate + FreezeSplitters( true, eSplitMethod); // create or fixate rReq.Done(); InvalidateSplit(); diff --git a/sc/uiconfig/scalc/menubar/menubar.xml b/sc/uiconfig/scalc/menubar/menubar.xml index 0a7101626ff1..07592785217e 100644 --- a/sc/uiconfig/scalc/menubar/menubar.xml +++ b/sc/uiconfig/scalc/menubar/menubar.xml @@ -120,6 +120,8 @@ <menu:menuitem menu:id=".uno:ViewValueHighlighting"/> <menu:menuseparator/> <menu:menuitem menu:id=".uno:FreezePanes"/> + <menu:menuitem menu:id=".uno:FreezePanesFirstColumn"/> + <menu:menuitem menu:id=".uno:FreezePanesFirstRow"/> <menu:menuitem menu:id=".uno:SplitWindow"/> <menu:menuseparator/> <menu:menuitem menu:id=".uno:Sidebar"/> |