diff --git sw/source/core/text/portxt.cxx sw/source/core/text/portxt.cxx index cd80a70..f5132c1 100644 --- sw/source/core/text/portxt.cxx +++ sw/source/core/text/portxt.cxx @@ -826,7 +826,7 @@ void SwFieldFormPortion::Paint( const SwTxtPaintInfo& rInf ) const { if ( pBM->GetFieldname( ).equalsAscii( ODF_FORMCHECKBOX ) ) { // a checkbox... - ICheckboxFieldmark* pCheckboxFm = dynamic_cast< ICheckboxFieldmark* >(pBM); + ICheckboxFieldmark* pCheckboxFm = reinterpret_cast< ICheckboxFieldmark* >(pBM); bool checked = pCheckboxFm->IsChecked(); rInf.DrawCheckBox(*this, checked); } diff --git sw/source/filter/ww8/wrtww8.cxx sw/source/filter/ww8/wrtww8.cxx index f8b34bb..4aab94c 100644 --- sw/source/filter/ww8/wrtww8.cxx +++ sw/source/filter/ww8/wrtww8.cxx @@ -3517,7 +3517,9 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark ) return; const ::sw::mark::IFieldmark* pFieldmark = &rFieldmark; - const ::sw::mark::ICheckboxFieldmark* pAsCheckbox = dynamic_cast< const ::sw::mark::ICheckboxFieldmark* >( pFieldmark ); + const ::sw::mark::ICheckboxFieldmark* pAsCheckbox = NULL; + if ( rFieldmark.GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMCHECKBOX ) ) ) + pAsCheckbox = reinterpret_cast< const ::sw::mark::ICheckboxFieldmark* >( pFieldmark ); OSL_ENSURE(rFieldmark.GetFieldname().equalsAscii( ODF_FORMTEXT ) || rFieldmark.GetFieldname().equalsAscii( ODF_FORMDROPDOWN ) || rFieldmark.GetFieldname().equalsAscii( ODF_FORMCHECKBOX ), "Unknown field type!!!"); diff --git sw/source/filter/ww8/ww8par3.cxx sw/source/filter/ww8/ww8par3.cxx index ce066fc..ba636b3 100644 --- sw/source/filter/ww8/ww8par3.cxx +++ sw/source/filter/ww8/ww8par3.cxx @@ -227,7 +227,7 @@ eF_ResT SwWW8ImplReader::Read_F_FormCheckBox( WW8FieldDesc* pF, String& rStr ) OSL_ENSURE(pFieldmark!=NULL, "hmmm; why was the bookmark not created?"); if (pFieldmark!=NULL) { IFieldmark::parameter_map_t* const pParameters = pFieldmark->GetParameters(); - ICheckboxFieldmark* pCheckboxFm = dynamic_cast(pFieldmark); + ICheckboxFieldmark* pCheckboxFm = reinterpret_cast(pFieldmark); (*pParameters)[::rtl::OUString::createFromAscii(ODF_FORMCHECKBOX_NAME)] = uno::makeAny(::rtl::OUString(aFormula.sTitle)); (*pParameters)[::rtl::OUString::createFromAscii(ODF_FORMCHECKBOX_HELPTEXT)] = uno::makeAny(::rtl::OUString(aFormula.sToolTip)); if(pCheckboxFm) diff --git sw/source/ui/docvw/edtwin.cxx sw/source/ui/docvw/edtwin.cxx index 4fa1c49..7f35b9a 100644 --- sw/source/ui/docvw/edtwin.cxx +++ sw/source/ui/docvw/edtwin.cxx @@ -2291,8 +2291,9 @@ KEYINPUT_CHECKTABLE_INSDEL: case KS_InsChar: if (rSh.GetChar(FALSE)==CH_TXT_ATR_FORMELEMENT) { - ::sw::mark::ICheckboxFieldmark* pFieldmark = - dynamic_cast< ::sw::mark::ICheckboxFieldmark* > + ::sw::mark::ICheckboxFieldmark* pFieldmark = NULL; + if ( rSh.GetCurrentFieldmark() && rSh.GetCurrentFieldmark()->GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMCHECKBOX ) ) ) + pFieldmark = reinterpret_cast< ::sw::mark::ICheckboxFieldmark* > (rSh.GetCurrentFieldmark()); OSL_ENSURE(pFieldmark, "Where is my FieldMark??"); @@ -4297,7 +4298,7 @@ void SwEditWin::MouseButtonUp(const MouseEvent& rMEvt) //SwDoc *pDoc=pDocSh->GetDoc(); if (fieldBM->GetFieldname( ).equalsAscii( ODF_FORMCHECKBOX ) ) { - ICheckboxFieldmark* pCheckboxFm = dynamic_cast(fieldBM); + ICheckboxFieldmark* pCheckboxFm = reinterpret_cast(fieldBM); pCheckboxFm->SetChecked(!pCheckboxFm->IsChecked()); pCheckboxFm->Invalidate(); rSh.InvalidateWindows( rView.GetVisArea() );