From 05579aa8b26f593af650d8434ff1c25c0a2702a6 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Tue, 17 Apr 2012 20:57:34 +0200 Subject: resolved rhbz#813280 the current document is not always the first in list i.e. if more than one document open and dialog invoked on any but the first document. Signed-off-by: Kohei Yoshida --- sc/source/ui/inc/mvtabdlg.hxx | 2 ++ sc/source/ui/miscdlgs/mvtabdlg.cxx | 27 +++++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/sc/source/ui/inc/mvtabdlg.hxx b/sc/source/ui/inc/mvtabdlg.hxx index c53a59fe7314..f9c63a334520 100644 --- a/sc/source/ui/inc/mvtabdlg.hxx +++ b/sc/source/ui/inc/mvtabdlg.hxx @@ -58,6 +58,7 @@ private: void ResetRenameInput(); void CheckNewTabName(); ScDocument* GetSelectedDoc(); + bool IsCurrentDocSelected() const; private: FixedLine aFlAction; @@ -82,6 +83,7 @@ private: const rtl::OUString maDefaultName; + sal_uInt16 mnCurrentDocPos; sal_uInt16 nDocument; SCTAB nTable; bool bCopyTable:1; diff --git a/sc/source/ui/miscdlgs/mvtabdlg.cxx b/sc/source/ui/miscdlgs/mvtabdlg.cxx index 831905d1ea55..ffe96af26663 100644 --- a/sc/source/ui/miscdlgs/mvtabdlg.cxx +++ b/sc/source/ui/miscdlgs/mvtabdlg.cxx @@ -70,6 +70,7 @@ ScMoveTableDlg::ScMoveTableDlg(Window* pParent, const rtl::OUString& rDefault) maStrTabNameInvalid( ResId::toString(ScResId(STR_TABNAME_WARN_INVALID)) ), // maDefaultName( rDefault ), + mnCurrentDocPos( 0 ), nDocument ( 0 ), nTable ( 0 ), bCopyTable ( false ), @@ -127,8 +128,13 @@ void ScMoveTableDlg::EnableRenameTable(sal_Bool bFlag) void ScMoveTableDlg::ResetRenameInput() { if (mbEverEdited) + { // Don't reset the name when the sheet name has ever been edited. + // But check the name, as this is also called for change of copy/move + // buttons and document listbox selection. + CheckNewTabName(); return; + } if (!aEdTabName.IsEnabled()) { @@ -178,19 +184,15 @@ void ScMoveTableDlg::CheckNewTabName() return; } - bool bFound = false; + bool bMoveInCurrentDoc = (aBtnMove.IsChecked() && IsCurrentDocSelected()); + bool bFound = false; sal_uInt16 nLast = aLbTable.GetEntryCount() - 1; - for ( sal_uInt16 i=0; i<=nLast; ++i ) + for ( sal_uInt16 i=0; i<=nLast && !bFound; ++i ) { if ( aNewName.equals(aLbTable.GetEntry(i)) ) { - if (aBtnMove.IsChecked() && - aLbDoc.GetSelectEntryPos() == 0 && - maDefaultName.equals(aEdTabName.GetText())) - - // Move inside same document, thus same name is allowed. - bFound = false; - else + // Only for move within same document the same name is allowed. + if (!bMoveInCurrentDoc || !maDefaultName.equals( aEdTabName.GetText())) bFound = true; } } @@ -214,6 +216,11 @@ ScDocument* ScMoveTableDlg::GetSelectedDoc() return static_cast(aLbDoc.GetEntryData(nPos)); } +bool ScMoveTableDlg::IsCurrentDocSelected() const +{ + return aLbDoc.GetSelectEntryPos() == mnCurrentDocPos; +} + //------------------------------------------------------------------------ void ScMoveTableDlg::Init() @@ -254,7 +261,7 @@ void ScMoveTableDlg::InitDocListBox() if ( pScSh == SfxObjectShell::Current() ) { - nSelPos = i; + mnCurrentDocPos = nSelPos = i; aEntryName += sal_Unicode( ' ' ); aEntryName += String( ScResId( STR_CURRENTDOC ) ); } -- cgit v1.2.3