From cafe54fc6b8ae195a87c77499f63ddb4e0de2d4e Mon Sep 17 00:00:00 2001
Message-Id: <cafe54fc6b8ae195a87c77499f63ddb4e0de2d4e.1334751575.git.erack@redhat.com>
From: Eike Rathke <erack@redhat.com>
Date: Tue, 17 Apr 2012 21:31:50 +0200
Subject: [PATCH] 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.
---
sc/source/ui/inc/mvtabdlg.hxx | 4 +++-
sc/source/ui/miscdlgs/mvtabdlg.cxx | 27 +++++++++++++++++----------
2 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/sc/source/ui/inc/mvtabdlg.hxx b/sc/source/ui/inc/mvtabdlg.hxx
index a4b03ed..4a15a66 100644
--- a/sc/source/ui/inc/mvtabdlg.hxx
+++ b/sc/source/ui/inc/mvtabdlg.hxx
@@ -61,6 +61,7 @@ private:
void ResetRenameInput();
void CheckNewTabName();
ScDocument* GetSelectedDoc();
+ bool IsCurrentDocSelected() const;
private:
FixedLine aFlAction;
@@ -85,7 +86,8 @@ private:
const String& mrDefaultName;
- sal_uInt16 nDocument;
+ sal_uInt16 mnCurrentDocPos;
+ sal_uInt16 nDocument;
SCTAB nTable;
bool bCopyTable:1;
bool bRenameTable:1;
diff --git a/sc/source/ui/miscdlgs/mvtabdlg.cxx b/sc/source/ui/miscdlgs/mvtabdlg.cxx
index f50cdd0..e640feb 100644
--- a/sc/source/ui/miscdlgs/mvtabdlg.cxx
+++ b/sc/source/ui/miscdlgs/mvtabdlg.cxx
@@ -82,6 +82,7 @@ ScMoveTableDlg::ScMoveTableDlg( Window* pParent,
maStrTabNameInvalid( ScResId(STR_TABNAME_WARN_INVALID) ),
//
mrDefaultName( rDefault ),
+ mnCurrentDocPos( 0 ),
nDocument ( 0 ),
nTable ( 0 ),
bCopyTable ( false ),
@@ -143,8 +144,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())
{
@@ -194,19 +200,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 ( rNewName == aLbTable.GetEntry( i ) )
{
- if( ( aBtnMove.IsChecked() ) &&
- ( aLbDoc.GetSelectEntryPos() == 0 ) &&
- ( aEdTabName.GetText() == mrDefaultName) )
-
- // 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 || aEdTabName.GetText() != mrDefaultName)
bFound = true;
}
}
@@ -230,6 +232,11 @@ ScDocument* ScMoveTableDlg::GetSelectedDoc()
return static_cast<ScDocument*>(aLbDoc.GetEntryData(nPos));
}
+bool ScMoveTableDlg::IsCurrentDocSelected() const
+{
+ return aLbDoc.GetSelectEntryPos() == mnCurrentDocPos;
+}
+
//------------------------------------------------------------------------
void ScMoveTableDlg::Init()
@@ -270,7 +277,7 @@ void ScMoveTableDlg::InitDocListBox()
if ( pScSh == SfxObjectShell::Current() )
{
- nSelPos = i;
+ mnCurrentDocPos = nSelPos = i;
aEntryName += sal_Unicode( ' ' );
aEntryName += String( ScResId( STR_CURRENTDOC ) );
}
--
1.7.7.6