[Libreoffice-commits] .: sc/source

Eike Rathke erack at kemper.freedesktop.org
Tue Apr 17 11:57:48 PDT 2012


 sc/source/ui/inc/mvtabdlg.hxx      |    2 ++
 sc/source/ui/miscdlgs/mvtabdlg.cxx |   27 +++++++++++++++++----------
 2 files changed, 19 insertions(+), 10 deletions(-)

New commits:
commit e1ca72ca9f783a2f956f1445ce82cd3eacffe4a2
Author: Eike Rathke <erack at redhat.com>
Date:   Tue Apr 17 20:57:34 2012 +0200

    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.

diff --git a/sc/source/ui/inc/mvtabdlg.hxx b/sc/source/ui/inc/mvtabdlg.hxx
index c53a59f..f9c63a3 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 4287e20..b3f30c4 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 ) );
             }


More information about the Libreoffice-commits mailing list