Kaydet (Commit) aabbb0a4 authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Properly handle properties of sheet fields.

Change-Id: I549990186c23e7e560f6f584c4ad76dbbc4cc393
üst c92f5f60
...@@ -225,7 +225,6 @@ private: ...@@ -225,7 +225,6 @@ private:
boost::scoped_ptr<SvxFieldData> mpData; boost::scoped_ptr<SvxFieldData> mpData;
com::sun::star::uno::Reference<com::sun::star::text::XTextRange> mpContent; com::sun::star::uno::Reference<com::sun::star::text::XTextRange> mpContent;
sal_Int32 mnTab;
bool mbIsDate:1; bool mbIsDate:1;
private: private:
......
...@@ -699,7 +699,7 @@ SvxFieldData* ScEditFieldObj::getData() ...@@ -699,7 +699,7 @@ SvxFieldData* ScEditFieldObj::getData()
mpData.reset(new SvxPagesField); mpData.reset(new SvxPagesField);
break; break;
case Sheet: case Sheet:
mpData.reset(new SvxTableField(mnTab)); mpData.reset(new SvxTableField);
break; break;
case Time: case Time:
mpData.reset(new SvxTimeField); mpData.reset(new SvxTimeField);
...@@ -923,10 +923,51 @@ void ScEditFieldObj::setPropertyValueExtTime(const rtl::OUString& rName, const u ...@@ -923,10 +923,51 @@ void ScEditFieldObj::setPropertyValueExtTime(const rtl::OUString& rName, const u
void ScEditFieldObj::setPropertyValueSheet(const rtl::OUString& rName, const uno::Any& rVal) void ScEditFieldObj::setPropertyValueSheet(const rtl::OUString& rName, const uno::Any& rVal)
{ {
if (mpEditSource)
{
// Edit engine instance already exists for this field item. Use it.
ScEditEngineDefaulter* pEditEngine = mpEditSource->GetEditEngine();
ScUnoEditEngine aTempEngine(pEditEngine);
// Typ egal (in Zellen gibts nur URLs)
SvxFieldData* pField = aTempEngine.FindByPos( aSelection.nStartPara, aSelection.nStartPos, 0 );
OSL_ENSURE(pField,"setPropertyValue: Feld nicht gefunden");
if (!pField)
return;
if (pField->GetClassId() != SVX_TABLEFIELD)
// Make sure this is indeed a URL field.
return;
SvxTableField* p = static_cast<SvxTableField*>(pField);
if (rName == "SheetPosition")
{
sal_Int32 nTab = rVal.get<sal_Int32>();
p->SetTab(nTab);
}
else
throw beans::UnknownPropertyException();
pEditEngine->QuickInsertField(SvxFieldItem(*pField, EE_FEATURE_FIELD), aSelection);
mpEditSource->UpdateData();
return;
}
// Edit engine instance not yet present. Store the item data for later use.
SvxFieldData* pData = getData();
if (!pData)
throw uno::RuntimeException();
SvxTableField* p = static_cast<SvxTableField*>(pData);
if (rName == "SheetPosition") if (rName == "SheetPosition")
{ {
mnTab = rVal.get<sal_Int32>(); sal_Int32 nTab = rVal.get<sal_Int32>();
p->SetTab(nTab);
} }
else
throw beans::UnknownPropertyException();
} }
ScEditFieldObj::ScEditFieldObj( ScEditFieldObj::ScEditFieldObj(
...@@ -936,7 +977,7 @@ ScEditFieldObj::ScEditFieldObj( ...@@ -936,7 +977,7 @@ ScEditFieldObj::ScEditFieldObj(
pPropSet(NULL), pPropSet(NULL),
mpEditSource(pEditSrc), mpEditSource(pEditSrc),
aSelection(rSel), aSelection(rSel),
meType(eType), mpData(NULL), mpContent(rContent), mnTab(0), mbIsDate(false) meType(eType), mpData(NULL), mpContent(rContent), mbIsDate(false)
{ {
switch (meType) switch (meType)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment