summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-04-08 14:34:13 -0400
committerEike Rathke <erack@redhat.com>2014-04-09 17:47:43 +0000
commitdff90c796579f16f642d847ce70d793ebe4a89e8 (patch)
tree9cdfe43bfad94562f9ddb9b1e384359164e202ac
parent277531b0e434d2a101fc89f54128af63cc8b2772 (diff)
fdo#71729: Fill the range edit boxes after the table is fully initialized.
Otherwise the range formula expression would not be available yet. (cherry picked from commit ffaaf35206b8f049bb9e9ffd7a85c8ebd758a21c) Conflicts: sc/source/ui/namedlg/namedlg.cxx sc/source/ui/namedlg/namemgrtable.cxx Change-Id: If9c5040366f9038e8094fd5448ca5e4ee2e73edd Reviewed-on: https://gerrit.libreoffice.org/8898 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
-rw-r--r--sc/source/ui/inc/namedlg.hxx5
-rw-r--r--sc/source/ui/inc/namemgrtable.hxx12
-rw-r--r--sc/source/ui/namedlg/namedlg.cxx17
-rw-r--r--sc/source/ui/namedlg/namemgrtable.cxx14
4 files changed, 34 insertions, 14 deletions
diff --git a/sc/source/ui/inc/namedlg.hxx b/sc/source/ui/inc/namedlg.hxx
index b6ed1968fb7d..020c88f6f327 100644
--- a/sc/source/ui/inc/namedlg.hxx
+++ b/sc/source/ui/inc/namedlg.hxx
@@ -43,7 +43,7 @@ class ScDocument;
//==================================================================
//logic behind the manage names dialog
-class ScNameDlg : public ScAnyRefDlg
+class ScNameDlg : public ScAnyRefDlg, public ScRangeManagerTable::InitListener
{
private:
Edit* m_pEdName;
@@ -133,9 +133,10 @@ public:
virtual void SetActive();
virtual sal_Bool Close();
+ virtual void tableInitialized() SAL_OVERRIDE;
+
void GetRangeNames(boost::ptr_map<OUString, ScRangeName>& rRangeMap);
void SetEntry(const OUString& rName, const OUString& rScope);
-
};
diff --git a/sc/source/ui/inc/namemgrtable.hxx b/sc/source/ui/inc/namemgrtable.hxx
index 08bd36d26399..730e0b036af6 100644
--- a/sc/source/ui/inc/namemgrtable.hxx
+++ b/sc/source/ui/inc/namemgrtable.hxx
@@ -32,6 +32,14 @@ struct ScRangeNameLine
//Need some sort of a filter to handle several range names
class SC_DLLPUBLIC ScRangeManagerTable : public SvxSimpleTable
{
+public:
+ class InitListener
+ {
+ public:
+ virtual ~InitListener();
+ virtual void tableInitialized() = 0;
+ };
+
private:
OUString maGlobalString;
@@ -43,6 +51,8 @@ private:
std::map<SvTreeListEntry*, bool> maCalculatedFormulaEntries;
const ScAddress maPos;
+ InitListener* mpInitListener;
+
void GetLine(ScRangeNameLine& aLine, SvTreeListEntry* pEntry);
void Init();
void CheckForFormulaString();
@@ -57,6 +67,8 @@ public:
virtual void Resize();
virtual void StateChanged( StateChangedType nStateChange );
+ void setInitListener( InitListener* pListener );
+
void addEntry( const ScRangeNameLine& rLine, bool bSetCurEntry = true );
void DeleteSelectedEntries();
void SetEntry( const ScRangeNameLine& rLine );
diff --git a/sc/source/ui/namedlg/namedlg.cxx b/sc/source/ui/namedlg/namedlg.cxx
index d3718a05c270..51a5ff2a53b3 100644
--- a/sc/source/ui/namedlg/namedlg.cxx
+++ b/sc/source/ui/namedlg/namedlg.cxx
@@ -118,6 +118,7 @@ void ScNameDlg::Init()
pCtrl->set_height_request(pCtrl->GetTextHeight()*12);
m_pRangeManagerTable = new ScRangeManagerTable(*pCtrl, maRangeMap, maCursorPos);
+ m_pRangeManagerTable->setInitListener(this);
m_pRangeManagerTable->SetSelectHdl( LINK( this, ScNameDlg, SelectionChangedHdl_Impl ) );
m_pRangeManagerTable->SetDeselectHdl( LINK( this, ScNameDlg, SelectionChangedHdl_Impl ) );
@@ -145,15 +146,7 @@ void ScNameDlg::Init()
m_pLbScope->InsertEntry(aTabName);
}
-
-
- if (m_pRangeManagerTable->GetSelectionCount())
- {
- SelectionChanged();
- }
-
CheckForEmptyTable();
-
}
sal_Bool ScNameDlg::IsRefInputMode() const
@@ -187,6 +180,12 @@ sal_Bool ScNameDlg::Close()
return DoClose( ScNameDlgWrapper::GetChildWindowId() );
}
+void ScNameDlg::tableInitialized()
+{
+ if (m_pRangeManagerTable->GetSelectionCount())
+ SelectionChanged();
+}
+
void ScNameDlg::CheckForEmptyTable()
{
if (!m_pRangeManagerTable->GetEntryCount())
@@ -418,8 +417,6 @@ void ScNameDlg::NameModified()
void ScNameDlg::SelectionChanged()
{
-
-
//don't update if we have just modified due to user input
if (!mbNeedUpdate)
{
diff --git a/sc/source/ui/namedlg/namemgrtable.cxx b/sc/source/ui/namedlg/namemgrtable.cxx
index b0e308a83d2a..853b4c5bc76c 100644
--- a/sc/source/ui/namedlg/namemgrtable.cxx
+++ b/sc/source/ui/namedlg/namemgrtable.cxx
@@ -37,11 +37,14 @@ String createEntryString(const ScRangeNameLine& rLine)
return aRet;
}
+ScRangeManagerTable::InitListener::~InitListener() {}
+
ScRangeManagerTable::ScRangeManagerTable( SvxSimpleTableContainer& rParent, boost::ptr_map<OUString, ScRangeName>& rRangeMap, const ScAddress& rPos ):
SvxSimpleTable( rParent, WB_SORT | WB_HSCROLL | WB_CLIPCHILDREN | WB_TABSTOP ),
maGlobalString( ScGlobal::GetRscString(STR_GLOBAL_SCOPE)),
mrRangeMap( rRangeMap ),
- maPos( rPos )
+ maPos( rPos ),
+ mpInitListener(NULL)
{
static long aStaticTabs[] = {3, 0, 0, 0 };
SetTabs( &aStaticTabs[0], MAP_PIXEL );
@@ -84,6 +87,9 @@ void ScRangeManagerTable::StateChanged( StateChangedType nStateChange )
SetCurEntry(GetEntryOnPos(0));
CheckForFormulaString();
}
+
+ if (mpInitListener)
+ mpInitListener->tableInitialized();
}
}
@@ -107,6 +113,11 @@ ScRangeManagerTable::~ScRangeManagerTable()
Clear();
}
+void ScRangeManagerTable::setInitListener( InitListener* pListener )
+{
+ mpInitListener = pListener;
+}
+
void ScRangeManagerTable::addEntry(const ScRangeNameLine& rLine, bool bSetCurEntry)
{
SvTreeListEntry* pEntry = InsertEntryToColumn( createEntryString(rLine), LIST_APPEND, 0xffff);
@@ -181,7 +192,6 @@ void ScRangeManagerTable::CheckForFormulaString()
SetEntryText(aFormulaString, pEntry, 1);
maCalculatedFormulaEntries.insert( std::pair<SvTreeListEntry*, bool>(pEntry, true) );
}
-
}
}