summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2012-04-17 20:57:34 +0200
committerEike Rathke <erack@redhat.com>2012-04-17 20:57:34 +0200
commite1ca72ca9f783a2f956f1445ce82cd3eacffe4a2 (patch)
treecbe670274cb6ededb899e64a1d6bae685cd89eb3 /sc
parentfe4f272a385ee4fe5f541ff37eb710956a0ad38b (diff)
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.
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/inc/mvtabdlg.hxx2
-rw-r--r--sc/source/ui/miscdlgs/mvtabdlg.cxx27
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 4287e20fcbe1..b3f30c43fe65 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<ScDocument*>(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 ) );
}