Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


This patch converts the obsolete PTR_CAST and ISA macros (from
tools/rtti.hxx) to C++ dynamic_cast is basctl.

Uray M. János
From 88403aa50f276dcecd6aa8f62e808ba3244f8fb2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?"Uray=20M.=20J=C3=A1nos"?= <uray.janos@gmail.com>
Date: Tue, 7 Aug 2012 14:33:56 +0200
Subject: [PATCH] IDE: PTR_CAST, ISA to dynamic_cast

Change-Id: I45530d1d34d132904f812e238ee3b59b1a4f227b
---
 .../accessibility/accessibledialogwindow.cxx       |   44 ++----
 basctl/source/basicide/basicbox.cxx                |   22 +--
 basctl/source/basicide/baside2b.cxx                |   44 +++---
 basctl/source/basicide/basides1.cxx                |  164 +++++++++----------
 basctl/source/basicide/basides2.cxx                |   47 ++----
 basctl/source/basicide/basides3.cxx                |   36 ++---
 basctl/source/basicide/basidesh.cxx                |   24 +--
 basctl/source/basicide/basobj3.cxx                 |   11 +-
 basctl/source/basicide/bastype3.cxx                |   31 ++--
 basctl/source/basicide/bastypes.cxx                |   20 +--
 basctl/source/basicide/localizationmgr.cxx         |   31 ++---
 basctl/source/basicide/sbxitem.cxx                 |   16 +-
 basctl/source/basicide/tbxctl.cxx                  |    6 +-
 basctl/source/dlged/dlged.cxx                      |   20 +--
 basctl/source/dlged/dlgedfunc.cxx                  |    2 +-
 basctl/source/dlged/dlgedobj.cxx                   |   73 +++------
 basctl/source/dlged/propbrw.cxx                    |    6 +-
 basctl/source/inc/dlgedobj.hxx                     |    3 +
 18 files changed, 240 insertions(+), 360 deletions(-)

diff --git a/basctl/source/accessibility/accessibledialogwindow.cxx 
b/basctl/source/accessibility/accessibledialogwindow.cxx
index 7c40a3f..2982cda 100644
--- a/basctl/source/accessibility/accessibledialogwindow.cxx
+++ b/basctl/source/accessibility/accessibledialogwindow.cxx
@@ -121,9 +121,7 @@ AccessibleDialogWindow::AccessibleDialogWindow( DialogWindow* pDialogWindow )
 
             for ( sal_uLong i = 0; i < nCount; ++i )
             {
-                SdrObject* pObj = pSdrPage->GetObj( i );
-                DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
-                if ( pDlgEdObj )
+                if (DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pSdrPage->GetObj(i)))
                 {
                     ChildDescriptor aDesc( pDlgEdObj );
                     if ( IsChildVisible( aDesc ) )
@@ -341,16 +339,11 @@ void AccessibleDialogWindow::UpdateChildren()
 {
     if ( m_pDialogWindow )
     {
-        SdrPage* pSdrPage = m_pDialogWindow->GetPage();
-        if ( pSdrPage )
+        if (SdrPage* pSdrPage = m_pDialogWindow->GetPage())
         {
             for ( sal_uLong i = 0, nCount = pSdrPage->GetObjCount(); i < nCount; ++i )
-            {
-                SdrObject* pObj = pSdrPage->GetObj( i );
-                DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
-                if ( pDlgEdObj )
+                if (DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pSdrPage->GetObj(i)))
                     UpdateChild( ChildDescriptor( pDlgEdObj ) );
-            }
         }
     }
 }
@@ -368,17 +361,15 @@ void AccessibleDialogWindow::SortChildren()
 IMPL_LINK( AccessibleDialogWindow, WindowEventListener, VclSimpleEvent*, pEvent )
 {
     DBG_CHKTHIS( AccessibleDialogWindow, 0 );
-    DBG_ASSERT( pEvent && pEvent->ISA( VclWindowEvent ), 
"AccessibleDialogWindow::WindowEventListener: unknown window event!" );
 
-    if ( pEvent && pEvent->ISA( VclWindowEvent ) )
+    if (VclWindowEvent* pWinEvent = dynamic_cast<VclWindowEvent*>(pEvent))
     {
-        DBG_ASSERT( ((VclWindowEvent*)pEvent)->GetWindow(), 
"AccessibleDialogWindow::WindowEventListener: no window!" );
-        if ( !((VclWindowEvent*)pEvent)->GetWindow()->IsAccessibilityEventsSuppressed() || ( 
pEvent->GetId() == VCLEVENT_OBJECT_DYING ) )
-        {
-            ProcessWindowEvent( *(VclWindowEvent*)pEvent );
-        }
+        DBG_ASSERT(pWinEvent->GetWindow(), "AccessibleDialogWindow::WindowEventListener: no 
window!");
+        if (!pWinEvent->GetWindow()->IsAccessibilityEventsSuppressed() || pEvent->GetId() == 
VCLEVENT_OBJECT_DYING)
+            ProcessWindowEvent(*pWinEvent);
     }
-
+    else
+        DBG_ASSERT(false, "AccessibleDialogWindow::WindowEventListener: unknown window event!");
     return 0;
 }
 
@@ -522,16 +513,13 @@ awt::Rectangle AccessibleDialogWindow::implGetBounds() throw 
(RuntimeException)
 
 void AccessibleDialogWindow::Notify( SfxBroadcaster&, const SfxHint& rHint )
 {
-    if ( rHint.ISA( SdrHint ) )
+    if (SdrHint* pSdrHint = dynamic_cast<SdrHint*>(&rHint))
     {
-        SdrHint* pSdrHint = (SdrHint*)&rHint;
         switch ( pSdrHint->GetKind() )
         {
             case HINT_OBJINSERTED:
             {
-                SdrObject* pObj = (SdrObject*)pSdrHint->GetObject();
-                DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
-                if ( pDlgEdObj )
+                if (DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pSdrHint->GetObject()))
                 {
                     ChildDescriptor aDesc( pDlgEdObj );
                     if ( IsChildVisible( aDesc ) )
@@ -541,18 +529,15 @@ void AccessibleDialogWindow::Notify( SfxBroadcaster&, const SfxHint& rHint )
             break;
             case HINT_OBJREMOVED:
             {
-                SdrObject* pObj = (SdrObject*)pSdrHint->GetObject();
-                DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
-                if ( pDlgEdObj )
+                if (DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pSdrHint->GetObject()))
                     RemoveChild( ChildDescriptor( pDlgEdObj ) );
             }
             break;
             default: ;
         }
     }
-    else if ( rHint.ISA( DlgEdHint ) )
+    else if (DlgEdHint* pDlgEdHint = dynamic_cast<DlgEdHint*>(&rHint))
     {
-        DlgEdHint* pDlgEdHint = (DlgEdHint*)&rHint;
         switch ( pDlgEdHint->GetKind() )
         {
             case DLGED_HINT_WINDOWSCROLLED:
@@ -563,8 +548,7 @@ void AccessibleDialogWindow::Notify( SfxBroadcaster&, const SfxHint& rHint )
             break;
             case DLGED_HINT_LAYERCHANGED:
             {
-                DlgEdObj* pDlgEdObj = pDlgEdHint->GetObject();
-                if ( pDlgEdObj )
+                if (DlgEdObj* pDlgEdObj = pDlgEdHint->GetObject())
                     UpdateChild( ChildDescriptor( pDlgEdObj ) );
             }
             break;
diff --git a/basctl/source/basicide/basicbox.cxx b/basctl/source/basicide/basicbox.cxx
index 99ffa23..34158fc 100644
--- a/basctl/source/basicide/basicbox.cxx
+++ b/basctl/source/basicide/basicbox.cxx
@@ -69,11 +69,7 @@ void LibBoxControl::StateChanged( sal_uInt16, SfxItemState eState, const SfxPool
     else
     {
         pBox->Enable();
-
-        if ( pState->ISA(SfxStringItem) )
-            pBox->Update( (const SfxStringItem*)pState );
-        else
-            pBox->Update( NULL );
+        pBox->Update(dynamic_cast<SfxStringItem const*>(pState));
     }
 }
 
@@ -357,23 +353,17 @@ LanguageBoxControl::~LanguageBoxControl()
 {
 }
 
-void LanguageBoxControl::StateChanged( sal_uInt16 _nID, SfxItemState _eState, const SfxPoolItem* 
_pItem )
+void LanguageBoxControl::StateChanged( sal_uInt16 nID, SfxItemState eState, const SfxPoolItem* 
pItem )
 {
-    (void)_nID;
-
-    BasicLanguageBox* pBox = (BasicLanguageBox*)( GetToolBox().GetItemWindow( GetId() ) );
-
-    if ( pBox )
+    (void)nID;
+    if (BasicLanguageBox* pBox = 
static_cast<BasicLanguageBox*>(GetToolBox().GetItemWindow(GetId())))
     {
-        if ( _eState != SFX_ITEM_AVAILABLE )
+        if (eState != SFX_ITEM_AVAILABLE)
             pBox->Disable();
         else
         {
             pBox->Enable();
-            if ( _pItem->ISA(SfxStringItem) )
-                pBox->Update( (const SfxStringItem*)_pItem );
-            else
-                pBox->Update( NULL );
+            pBox->Update(dynamic_cast<SfxStringItem const*>(pItem));
         }
     }
 }
diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx
index 9577c65..dee5e00 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -49,8 +49,19 @@ using namespace ::com::sun::star::uno;
 
 namespace
 {
+
 long nVirtToolBoxHeight;    // inited in WatchWindow, used in Stackwindow
 long nHeaderBarHeight;
+
+// Returns pBase converted to SbxVariable if valid and is not an SbxMethod.
+SbxVariable const* IsSbxVariable (SbxBase const* pBase)
+{
+    if (SbxVariable const* pVar = dynamic_cast<SbxVariable const*>(pBase))
+        if (!dynamic_cast<SbxMethod const*>(pVar))
+            return pVar;
+    return 0;
+}
+
 } // namespace
 
 #define SCROLL_LINE     12
@@ -297,9 +308,8 @@ void EditorWindow::RequestHelp( const HelpEvent& rHEvt )
                     if ( strchr( cSuffixes, aWord.GetChar( nLastChar ) ) )
                         aWord.Erase( nLastChar, 1 );
                     SbxBase* pSBX = StarBASIC::FindSBXInCurrentScope( aWord );
-                    if ( pSBX && pSBX->ISA( SbxVariable ) && !pSBX->ISA( SbxMethod ) )
+                    if (SbxVariable const* pVar = IsSbxVariable(pSBX))
                     {
-                        SbxVariable* pVar = (SbxVariable*)pSBX;
                         SbxDataType eType = pVar->GetType();
                         if ( (sal_uInt8)eType == (sal_uInt8)SbxOBJECT )
                             // might cause a crash e. g. at the selections-object
@@ -673,9 +683,9 @@ void EditorWindow::DataChanged(DataChangedEvent const & rDCEvt)
 
 void EditorWindow::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
 {
-    if ( rHint.ISA( TextHint ) )
+    if (TextHint const* pTextHint = dynamic_cast<TextHint const*>(&rHint))
     {
-        const TextHint& rTextHint = (const TextHint&)rHint;
+        TextHint const& rTextHint = *pTextHint;
         if( rTextHint.GetId() == TEXT_HINT_VIEWSCROLLED )
         {
             if ( pModulWindow->GetHScrollBar() )
@@ -1891,10 +1901,7 @@ SbxBase* WatchTreeListBox::ImplGetSBXForEntry( SvLBoxEntry* pEntry, bool& 
rbArra
         if( pObj )
         {
             pSBX = pObj->Find( aVName, SbxCLASS_DONTCARE );
-
-            SbxVariable* pVar;
-            if ( pSBX && (pVar = PTR_CAST( SbxVariable, pSBX )) != NULL
-                        && !pSBX->ISA( SbxMethod ) )
+            if (SbxVariable const* pVar = IsSbxVariable(pSBX))
             {
                 // Force getting value
                 SbxValues aRes;
@@ -1926,8 +1933,8 @@ sal_Bool WatchTreeListBox::EditingEntry( SvLBoxEntry* pEntry, Selection& )
     {
         // No out of scope entries
         bool bArrayElement;
-        SbxBase* pSBX = ImplGetSBXForEntry( pEntry, bArrayElement );
-        if ( ( pSBX && pSBX->ISA( SbxVariable ) && !pSBX->ISA( SbxMethod ) ) || bArrayElement )
+        SbxBase const* pSbx = ImplGetSBXForEntry( pEntry, bArrayElement );
+        if (IsSbxVariable(pSbx) || bArrayElement)
         {
             // Accept no objects and only end nodes of arrays for editing
             if( !pItem->mpObject && (pItem->mpArray == NULL || pItem->nDimLevel == 
pItem->nDimCount) )
@@ -1963,9 +1970,8 @@ bool WatchTreeListBox::ImplBasicEntryEdited( SvLBoxEntry* pEntry, const 
String&
     bool bArrayElement;
     SbxBase* pSBX = ImplGetSBXForEntry( pEntry, bArrayElement );
 
-    if ( pSBX && pSBX->ISA( SbxVariable ) && !pSBX->ISA( SbxMethod ) )
+    if (SbxVariable const* pVar = IsSbxVariable(pSBX))
     {
-        SbxVariable* pVar = (SbxVariable*)pSBX;
         SbxDataType eType = pVar->GetType();
         if ( (sal_uInt8)eType != (sal_uInt8)SbxOBJECT
              && ( eType & SbxARRAY ) == 0 )
@@ -2082,18 +2088,15 @@ void WatchTreeListBox::UpdateWatches( bool bBasicStopped )
             }
 
             bool bCollapse = false;
-            if ( pSBX && pSBX->ISA( SbxVariable ) && !pSBX->ISA( SbxMethod ) )
+            if (SbxVariable const* pVar = IsSbxVariable(pSBX))
             {
-                SbxVariable* pVar = (SbxVariable*)pSBX;
                 // extra treatment of arrays
                 SbxDataType eType = pVar->GetType();
                 if ( eType & SbxARRAY )
                 {
                     // consider multidimensinal arrays!
-                    SbxBase* pBase = pVar->GetObject();
-                    if ( pBase && pBase->ISA( SbxDimArray ) )
+                    if (SbxDimArray* pNewArray = dynamic_cast<SbxDimArray*>(pVar->GetObject()))
                     {
-                        SbxDimArray* pNewArray = (SbxDimArray*)pBase;
                         SbxDimArray* pOldArray = pItem->mpArray;
 
                         bool bArrayChanged = false;
@@ -2154,12 +2157,7 @@ void WatchTreeListBox::UpdateWatches( bool bBasicStopped )
                 }
                 else if ( (sal_uInt8)eType == (sal_uInt8)SbxOBJECT )
                 {
-                    SbxObject* pObj = NULL;
-                    SbxBase* pBase = pVar->GetObject();
-                    if( pBase && pBase->ISA( SbxObject ) )
-                        pObj = (SbxObject*)pBase;
-
-                    if( pObj )
+                    if (SbxObject* pObj = dynamic_cast<SbxObject*>(pVar->GetObject()))
                     {
                         // Check if member list has changed
                         bool bObjChanged = false;
diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx
index f48d56b..d85e382 100644
--- a/basctl/source/basicide/basides1.cxx
+++ b/basctl/source/basicide/basides1.cxx
@@ -80,14 +80,10 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
         case SID_SHOWLINES:
         {
             SFX_REQUEST_ARG(rReq, pItem, SfxBoolItem, rReq.GetSlot(), false);
-            bool bValue = false;
-            if ( pItem )
-                bValue = pItem->GetValue();
+            bool const bValue = pItem && pItem->GetValue();
             lcl_GetSourceLinesEnabledValue() = bValue;
-            if ( pCurWin && pCurWin->IsA( TYPE( ModulWindow ) ) )
-            {
-                dynamic_cast<ModulWindow*>(pCurWin)->SetLineNumberDisplay( bValue );
-            }
+            if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
+                pMCurWin->SetLineNumberDisplay(bValue);
         }
         break;
 
@@ -103,7 +99,7 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
             ::rtl::OUString aLibName = pCurWin->GetLibName();
             ::rtl::OUString aName = pCurWin->GetName();
 
-            if ( pCurWin->ISA( ModulWindow ) )
+            if (dynamic_cast<ModulWindow*>(pCurWin))
             {
                 if ( QueryDelModule( aName, pCurWin ) )
                 {
@@ -133,7 +129,7 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
         break;
         case FID_SEARCH_NOW:
         {
-            if ( pCurWin->ISA( ModulWindow ) )
+            if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
             {
                 DBG_ASSERT( rReq.GetArgs(), "arguments expected" );
                 const SfxItemSet* pArgs = rReq.GetArgs();
@@ -141,35 +137,35 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
                 sal_uInt16 nWhich = pArgs->GetWhichByPos( 0 );
                 DBG_ASSERT( nWhich, "Wich fuer SearchItem ?" );
                 const SfxPoolItem& rItem = pArgs->Get( nWhich );
-                DBG_ASSERT( rItem.ISA( SvxSearchItem ), "Kein Searchitem!" );
                 IDEWindowTable::const_iterator it;
-                if ( rItem.ISA( SvxSearchItem ) )
+                if (SvxSearchItem const* pSearchItem = dynamic_cast<SvxSearchItem const*>(&rItem))
                 {
                     // memorize item because of the adjustments...
-                    BasicIDEGlobals::GetExtraData()->SetSearchItem( (const SvxSearchItem&)rItem );
+                    BasicIDEGlobals::GetExtraData()->SetSearchItem(*pSearchItem);
                     sal_Int32 nFound = 0;
                     bool bCanceled = false;
-                    if ( ((const SvxSearchItem&)rItem).GetCommand() == SVX_SEARCHCMD_REPLACE_ALL )
+                    if (pSearchItem->GetCommand() == SVX_SEARCHCMD_REPLACE_ALL)
                     {
                         sal_uInt16 nActModWindows = 0;
                         for( it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
                         {
                             IDEBaseWindow* pWin = it->second;
-                            if ( !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow ) ) )
+                            if (!pWin->IsSuspended() && dynamic_cast<ModulWindow*>(pWin))
                                 nActModWindows++;
                         }
 
-                        if ( ( nActModWindows <= 1 ) || ( !((const 
SvxSearchItem&)rItem).GetSelection() && QueryBox( pCurWin, WB_YES_NO|WB_DEF_YES, String( IDEResId( 
RID_STR_SEARCHALLMODULES ) ) ).Execute() == RET_YES ) )
+                        if ( ( nActModWindows <= 1 ) || ( !pSearchItem->GetSelection() && 
QueryBox( pCurWin, WB_YES_NO|WB_DEF_YES, String( IDEResId( RID_STR_SEARCHALLMODULES ) ) ).Execute() 
== RET_YES ) )
                         {
                             for( it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); ++it )
                             {
                                 IDEBaseWindow* pWin = it->second;
-                                if ( !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow ) ) )
-                                    nFound = nFound + ((ModulWindow*)pWin)->StartSearchAndReplace( 
(const SvxSearchItem&)rItem );
+                                if (!pWin->IsSuspended())
+                                    if (pModulWindow* pMWin = dynamic_cast<ModulWindow*>(pWin))
+                                        nFound += pMWin->StartSearchAndReplace(*pSearchItem);
                             }
                         }
                         else
-                            nFound = ((ModulWindow*)pCurWin)->StartSearchAndReplace( (const 
SvxSearchItem&)rItem );
+                            nFound = pMCurWin->StartSearchAndReplace(*pSearchItem);
 
                         ::rtl::OUString aReplStr(IDE_RESSTR(RID_STR_SEARCHREPLACES));
                         aReplStr = aReplStr.replaceAll("XX", rtl::OUString::valueOf(nFound));
@@ -177,8 +173,8 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
                     }
                     else
                     {
-                        nFound = ((ModulWindow*)pCurWin)->StartSearchAndReplace( (const 
SvxSearchItem&)rItem );
-                        if ( !nFound && !((const SvxSearchItem&)rItem).GetSelection() )
+                        nFound = pMCurWin->StartSearchAndReplace(*pSearchItem);
+                        if ( !nFound && !pSearchItem->GetSelection() )
                         {
                             // search other modules...
                             bool bChangeCurWindow = false;
@@ -211,20 +207,21 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
                                         bCanceled = true;
                                 }
 
-                                if ( pWin && !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow 
) ) )
-                                {
-                                    if ( pWin != pCurWin )
-                                    {
-                                        if ( pCurWin )
-                                            pWin->SetSizePixel( pCurWin->GetSizePixel() );
-                                        nFound = ((ModulWindow*)pWin)->StartSearchAndReplace( 
(const SvxSearchItem&)rItem, true );
-                                    }
-                                    if ( nFound )
+                                if (ModulWindow* pMWin = dynamic_cast<ModulWindow*>(pWin))
+                                    if (!pWin->IsSuspended())
                                     {
-                                        bChangeCurWindow = true;
-                                        break;
+                                        if ( pWin != pCurWin )
+                                        {
+                                            if ( pCurWin )
+                                                pWin->SetSizePixel( pCurWin->GetSizePixel() );
+                                            nFound = pMWin->StartSearchAndReplace(*pSearchItem, 
true);
+                                        }
+                                        if ( nFound )
+                                        {
+                                            bChangeCurWindow = true;
+                                            break;
+                                        }
                                     }
-                                }
                                 if ( pWin && ( pWin != pCurWin ) )
                                 {
                                     if ( it != aIDEWindowTable.end() )
@@ -238,7 +235,7 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
                                     pWin = 0;
                             }
                             if ( !nFound && bSearchedFromStart )
-                                nFound = ((ModulWindow*)pCurWin)->StartSearchAndReplace( (const 
SvxSearchItem&)rItem, true );
+                                nFound = pMCurWin->StartSearchAndReplace(*pSearchItem, true);
                             if ( bChangeCurWindow )
                                 SetCurWindow( pWin, true );
                         }
@@ -248,12 +245,14 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
 
                     rReq.Done();
                 }
+                else
+                    DBG_ASSERT(false, "no searchitem!");
             }
         }
         break;
         case FID_SEARCH_OFF:
         {
-            if ( pCurWin && pCurWin->ISA( ModulWindow ) )
+            if (dynamic_cast<ModulWindow*>(pCurWin))
                 pCurWin->GrabFocus();
         }
         break;
@@ -268,7 +267,7 @@ void BasicIDEShell::ExecuteCurrent( SfxRequest& rReq )
         break;
         case SID_GOTOLINE:
         {
-            if ( pCurWin && pCurWin->IsA( TYPE( ModulWindow ) ) )
+            if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
             {
                 std::auto_ptr< GotoLineDialog > xGotoDlg( new GotoLineDialog( pCurWin ) );
                 if ( xGotoDlg->Execute() )
@@ -298,8 +297,8 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
         case SID_BASICSTOP:
         {
             // maybe do not simply stop if on breakpoint!
-            if ( pCurWin && pCurWin->IsA( TYPE( ModulWindow ) ) )
-                ((ModulWindow*)pCurWin)->BasicStop();
+            if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
+                pMCurWin->BasicStop();
             BasicIDE::StopBasic();
         }
         break;
@@ -461,13 +460,12 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
                 if ( aNewName != aOldName )
                 {
                     bool bRenameOk = false;
-                    if ( pWin->IsA( TYPE( ModulWindow ) ) )
+                    if (ModulWindow* pModWin = dynamic_cast<ModulWindow*>(pWin))
                     {
-                        ModulWindow* pModWin = (ModulWindow*)pWin;
-                        ::rtl::OUString aLibName = ( pModWin->GetLibName() );
+                        rtl::OUString aLibName = pModWin->GetLibName();
                         ScriptDocument aDocument( pWin->GetDocument() );
 
-                        if ( BasicIDE::RenameModule( pModWin, aDocument, aLibName,  aOldName, 
aNewName ) )
+                        if ( BasicIDE::RenameModule( pModWin, aDocument, aLibName, aOldName, 
aNewName ) )
                         {
                             bRenameOk = true;
                             // Because we listen for container events for script
@@ -477,9 +475,8 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
                         }
 
                     }
-                    else if ( pWin->IsA( TYPE( DialogWindow ) ) )
+                    else if (DialogWindow* pDlgWin = dynamic_cast<DialogWindow*>(pWin))
                     {
-                        DialogWindow* pDlgWin = (DialogWindow*)pWin;
                         bRenameOk = pDlgWin->RenameDialog( aNewName );
                     }
                     if ( bRenameOk )
@@ -525,7 +522,7 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
             for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin(); it != 
aIDEWindowTable.end(); ++it )
             {
                 IDEBaseWindow* pWin = it->second;
-                if ( !pWin->IsSuspended() && pWin->IsA( TYPE( ModulWindow ) ) )
+                if (!pWin->IsSuspended() && dynamic_cast<ModulWindow*>(pWin))
                 {
                     if ( rReq.GetSlot() == SID_BASICIDE_STOREALLMODULESOURCES )
                         pWin->StoreData();
@@ -728,9 +725,8 @@ void BasicIDEShell::ExecuteGlobal( SfxRequest& rReq )
                     if ( pTabBar )
                         pTabBar->MakeVisible( pTabBar->GetCurPageId() );
 
-                    if ( pWin->ISA( ModulWindow ) )
+                    if (ModulWindow* pModWin = dynamic_cast<ModulWindow*>(pWin))
                     {
-                        ModulWindow* pModWin = (ModulWindow*)pWin;
                         SFX_REQUEST_ARG( rReq, pLineItem, SfxUInt32Item, SID_BASICIDE_ARG_LINE, 
false );
                         if ( pLineItem )
                         {
@@ -817,7 +813,7 @@ void BasicIDEShell::GetState(SfxItemSet &rSet)
                 // if this is not a module window hide the
                 // setting, doesn't make sense for example if the
                 // dialog editor is open
-                if( pCurWin && !pCurWin->IsA( TYPE( ModulWindow ) ) )
+                if(pCurWin && !dynamic_cast<ModulWindow*>(pCurWin))
                 {
                     rSet.DisableItem( nWh );
                     rSet.Put(SfxVisibilityItem(nWh, false));
@@ -881,7 +877,7 @@ void BasicIDEShell::GetState(SfxItemSet &rSet)
             {
                 // FIXME: hide Object Catalog icon from the toolbar,
                 // when window type is not macro editor.
-                if( pCurWin && !pCurWin->IsA( TYPE( ModulWindow ) ) )
+                if(pCurWin && !dynamic_cast<ModulWindow*>(pCurWin))
                 {
                     rSet.DisableItem( nWh );
                     rSet.Put(SfxVisibilityItem(nWh, false));
@@ -910,7 +906,7 @@ void BasicIDEShell::GetState(SfxItemSet &rSet)
             case SID_BASICSAVEAS:
             case SID_BASICIDE_MATCHGROUP:
             {
-                if ( !pCurWin || !pCurWin->IsA( TYPE( ModulWindow ) ) )
+                if (!dynamic_cast<ModulWindow*>(pCurWin))
                     rSet.DisableItem( nWh );
                 else if ( ( nWh == SID_BASICLOAD ) && ( StarBASIC::IsRunning() || ( pCurWin && 
pCurWin->IsReadOnly() ) ) )
                     rSet.DisableItem( nWh );
@@ -923,22 +919,25 @@ void BasicIDEShell::GetState(SfxItemSet &rSet)
             case SID_BASICIDE_TOGGLEBRKPNT:
             case SID_BASICIDE_MANAGEBRKPNTS:
             {
-                if ( !pCurWin || !pCurWin->IsA( TYPE( ModulWindow ) ) )
-                    rSet.DisableItem( nWh );
-                else if ( StarBASIC::IsRunning() && 
!((ModulWindow*)pCurWin)->GetBasicStatus().bIsInReschedule )
+                if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
+                {
+                    if (StarBASIC::IsRunning() && !pMCurWin->GetBasicStatus().bIsInReschedule)
+                        rSet.DisableItem(nWh);
+                }
+                else
                     rSet.DisableItem( nWh );
             }
             break;
             case SID_BASICCOMPILE:
             {
-                if ( !pCurWin || !pCurWin->IsA( TYPE( ModulWindow ) ) || StarBASIC::IsRunning() )
+                if (StarBASIC::IsRunning() || !dynamic_cast<ModulWindow*>(pCurWin))
                     rSet.DisableItem( nWh );
             }
             break;
             case SID_BASICSTOP:
             {
                 // stop is always possible when some Basic is running...
-                if ( !StarBASIC::IsRunning() )
+                if (!StarBASIC::IsRunning())
                     rSet.DisableItem( nWh );
             }
             break;
@@ -952,7 +951,7 @@ void BasicIDEShell::GetState(SfxItemSet &rSet)
             case SID_INSERT_FORM_HSCROLL:
             case SID_INSERT_FORM_SPIN:
             {
-                if( !pCurWin || !pCurWin->IsA( TYPE( DialogWindow ) ) )
+                if (!dynamic_cast<DialogWindow*>(pCurWin))
                     rSet.DisableItem( nWh );
             }
             break;
@@ -1092,7 +1091,7 @@ void BasicIDEShell::GetState(SfxItemSet &rSet)
                 // if this is not a module window hide the
                 // setting, doesn't make sense for example if the
                 // dialog editor is open
-                if( pCurWin && !pCurWin->IsA( TYPE( ModulWindow ) ) )
+                if (pCurWin && !dynamic_cast<ModulWindow*>(pCurWin))
                 {
                     rSet.DisableItem( nWh );
                     rSet.Put(SfxVisibilityItem(nWh, false));
@@ -1112,7 +1111,7 @@ sal_Bool BasicIDEShell::HasUIFeature( sal_uInt32 nFeature )
     if ( (nFeature & BASICIDE_UI_FEATURE_SHOW_BROWSER) == BASICIDE_UI_FEATURE_SHOW_BROWSER )
     {
         // fade out (in) property browser in module (dialog) windows
-        if ( pCurWin && pCurWin->IsA( TYPE( DialogWindow ) ) && !pCurWin->IsReadOnly() )
+        if (dynamic_cast<DialogWindow*>(pCurWin) && !pCurWin->IsReadOnly())
             bResult = true;
     }
 
@@ -1140,9 +1139,9 @@ void BasicIDEShell::SetCurWindow( IDEBaseWindow* pNewWin, bool bUpdateTabBar, 
bo
             pPrevCurWin->Hide();
             pPrevCurWin->Deactivating();
 //          pPrevCurWin->GetLayoutWindow()->Hide();
-            if( pPrevCurWin->IsA( TYPE( DialogWindow ) ) )
+            if (DialogWindow* pDialogWin = dynamic_cast<DialogWindow*>(pPrevCurWin))
             {
-                ((DialogWindow*)pPrevCurWin)->DisableBrowser();
+                pDialogWin->DisableBrowser();
             }
             else
             {
@@ -1152,11 +1151,11 @@ void BasicIDEShell::SetCurWindow( IDEBaseWindow* pNewWin, bool 
bUpdateTabBar, bo
         if ( pCurWin )
         {
             AdjustPosSizePixel( Point( 0, 0 ), GetViewFrame()->GetWindow().GetOutputSizePixel() );
-            if( pCurWin->IsA( TYPE( ModulWindow ) ) )
+            if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
             {
-                dynamic_cast<ModulWindow*>(pCurWin)->SetLineNumberDisplay(SourceLinesDisplayed());
+                pMCurWin->SetLineNumberDisplay(SourceLinesDisplayed());
                 GetViewFrame()->GetWindow().SetHelpId( HID_BASICIDE_MODULWINDOW );
-                pModulLayout->SetModulWindow( (ModulWindow*)pCurWin );
+                pModulLayout->SetModulWindow(pMCurWin);
                 pModulLayout->Show();
             }
             else
@@ -1170,7 +1169,8 @@ void BasicIDEShell::SetCurWindow( IDEBaseWindow* pNewWin, bool bUpdateTabBar, 
bo
                 BasicIDEData* pData = BasicIDEGlobals::GetExtraData();
                 if ( pData )
                 {
-                    sal_uInt16 nCurrentType = pCurWin->IsA( TYPE( ModulWindow ) ) ? 
BASICIDE_TYPE_MODULE : BASICIDE_TYPE_DIALOG;
+                    sal_uInt16 nCurrentType = dynamic_cast<ModulWindow*>(pCurWin) ?
+                        BASICIDE_TYPE_MODULE : BASICIDE_TYPE_DIALOG;
                     LibInfoItem* pLibInfoItem = new LibInfoItem( pCurWin->GetDocument(), 
pCurWin->GetLibName(), pCurWin->GetName(), nCurrentType );
                     pData->GetLibInfos().InsertInfo( pLibInfoItem );
                 }
@@ -1190,8 +1190,8 @@ void BasicIDEShell::SetCurWindow( IDEBaseWindow* pNewWin, bool bUpdateTabBar, 
bo
                 if ( pFocusWindow ) // Focus in BasicIDE
                     pNewWin->GrabFocus();
             }
-            if( pCurWin->IsA( TYPE( DialogWindow ) ) )
-                ((DialogWindow*)pCurWin)->UpdateBrowser();
+            if (DialogWindow* pDCurWin = dynamic_cast<DialogWindow*>(pCurWin))
+                pDCurWin->UpdateBrowser();
         }
         if ( bUpdateTabBar )
         {
@@ -1251,7 +1251,7 @@ void BasicIDEShell::ManageToolbars()
         if ( xLayoutManager.is() )
         {
             xLayoutManager->lock();
-            if( pCurWin->IsA( TYPE( DialogWindow ) ) )
+            if (dynamic_cast<DialogWindow*>(pCurWin))
             {
                 xLayoutManager->destroyElement( aMacroBarResName );
 
@@ -1290,8 +1290,8 @@ IDEBaseWindow* BasicIDEShell::FindWindow( const ScriptDocument& rDocument, 
const
                 return pWin;
             }
             else if ( pWin->IsDocument( rDocument ) && pWin->GetLibName() == rLibName && 
pWin->GetName() == rName &&
-                      ( ( pWin->IsA( TYPE( ModulWindow ) )  && nType == BASICIDE_TYPE_MODULE ) ||
-                        ( pWin->IsA( TYPE( DialogWindow ) ) && nType == BASICIDE_TYPE_DIALOG ) ) )
+                      ( ( dynamic_cast<ModulWindow*>(pWin)  && nType == BASICIDE_TYPE_MODULE ) ||
+                        ( dynamic_cast<DialogWindow*>(pWin) && nType == BASICIDE_TYPE_DIALOG ) ) )
             {
                 return pWin;
             }
@@ -1344,18 +1344,15 @@ ModulWindow* BasicIDEShell::ShowActiveModuleWindow( StarBASIC* pBasic )
     SetCurLib( ScriptDocument::getApplicationScriptDocument(), ::rtl::OUString(), false );
 
     SbModule* pActiveModule = StarBASIC::GetActiveModule();
-    SbClassModuleObject* pClassModuleObject = PTR_CAST(SbClassModuleObject,pActiveModule);
-    if( pClassModuleObject != NULL )
-        pActiveModule = pClassModuleObject->getClassModule();
+    if (SbClassModuleObject* pCMO = dynamic_cast<SbClassModuleObject*>(pActiveModule))
+        pActiveModule = pCMO->getClassModule();
 
     DBG_ASSERT( pActiveModule, "Kein aktives Modul im ErrorHdl?!" );
     if ( pActiveModule )
     {
         ModulWindow* pWin = 0;
         SbxObject* pParent = pActiveModule->GetParent();
-        DBG_ASSERT( pParent && pParent->ISA( StarBASIC ), "Kein BASIC!" );
-        StarBASIC* pLib = static_cast< StarBASIC* >( pParent );
-        if ( pLib )
+        if (StarBASIC* pLib = dynamic_cast<StarBASIC*>(pParent))
         {
             BasicManager* pBasMgr = BasicIDE::FindBasicManager( pLib );
             if ( pBasMgr )
@@ -1368,6 +1365,8 @@ ModulWindow* BasicIDEShell::ShowActiveModuleWindow( StarBASIC* pBasic )
                 SetCurWindow( pWin, true );
             }
         }
+        else
+            DBG_ASSERT(false, "Kein BASIC!");
         BasicManager* pBasicMgr = BasicIDE::FindBasicManager( pBasic );
         if ( pBasicMgr )
             StartListening( *pBasicMgr, true /* log on only once */ );
@@ -1407,14 +1406,8 @@ void BasicIDEShell::AdjustPosSizePixel( const Point &rPos, const Size &rSize 
)
         pTabBar->SetPosSizePixel( Point( rPos.X(), rPos.Y()+aSz.Height() ), Size( aSz.Width()/2, 
aScrollBarBoxSz.Height() ) );
     }
 
-    Window* pEdtWin = pCurWin ? pCurWin->GetLayoutWindow() : pModulLayout;
-    if ( pEdtWin )
-    {
-        if( pCurWin && pCurWin->IsA( TYPE( DialogWindow ) ) )
-            pEdtWin->SetPosSizePixel( rPos, aSz );  // without ScrollBar
-        else
-            pEdtWin->SetPosSizePixel( rPos, aOutSz );
-    }
+    if (Window* pEdtWin = pCurWin ? pCurWin->GetLayoutWindow() : pModulLayout)
+        pEdtWin->SetPosSizePixel(rPos, dynamic_cast<DialogWindow*>(pCurWin) ? aSz : aOutSz);
 }
 
 Reference< XModel > BasicIDEShell::GetCurrentDocument() const
@@ -1431,8 +1424,8 @@ void BasicIDEShell::Activate( sal_Bool bMDI )
 
     if ( bMDI )
     {
-        if( pCurWin && pCurWin->IsA( TYPE( DialogWindow ) ) )
-            ((DialogWindow*)pCurWin)->UpdateBrowser();
+        if (DialogWindow* pDCurWin = dynamic_cast<DialogWindow>(pCurWin))
+            pDCurWin->UpdateBrowser();
     }
 }
 
@@ -1442,9 +1435,8 @@ void BasicIDEShell::Deactivate( sal_Bool bMDI )
     // deactivate due to a MessageBox bMDI is false
     if ( bMDI )
     {
-        if( pCurWin && pCurWin->IsA( TYPE( DialogWindow ) ) )
+        if (DialogWindow* pXDlgWin = dynamic_cast<DialogWindow*>(pCurWin))
         {
-            DialogWindow* pXDlgWin = (DialogWindow*)pCurWin;
             pXDlgWin->DisableBrowser();
             if( pXDlgWin->IsModified() )
                 BasicIDE::MarkDocumentModified( pXDlgWin->GetDocument() );
diff --git a/basctl/source/basicide/basides2.cxx b/basctl/source/basicide/basides2.cxx
index c49e8cf..1116f7f 100644
--- a/basctl/source/basicide/basides2.cxx
+++ b/basctl/source/basicide/basides2.cxx
@@ -52,23 +52,21 @@ Reference< view::XRenderable > BasicIDEShell::GetRenderable()
 
 sal_Bool BasicIDEShell::HasSelection( sal_Bool /* bText */ ) const
 {
-    bool bSel = false;
-    if ( pCurWin && pCurWin->ISA( ModulWindow ) )
+    if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
     {
-        TextView* pEditView = ((ModulWindow*)pCurWin)->GetEditView();
+        TextView* pEditView = pMCurWin->GetEditView();
         if ( pEditView && pEditView->HasSelection() )
-            bSel = true;
+            return true;
     }
-    return bSel;
+    return false;
 }
 
 String BasicIDEShell::GetSelectionText( sal_Bool bWholeWord )
 {
     String aText;
-    if ( pCurWin && pCurWin->ISA( ModulWindow ) )
+    if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
     {
-        TextView* pEditView = ((ModulWindow*)pCurWin)->GetEditView();
-        if ( pEditView )
+        if (TextView* pEditView = pMCurWin->GetEditView())
         {
             if ( bWholeWord && !pEditView->HasSelection() )
             {
@@ -87,7 +85,7 @@ String BasicIDEShell::GetSelectionText( sal_Bool bWholeWord )
 
 SfxPrinter* BasicIDEShell::GetPrinter( sal_Bool bCreate )
 {
-    if ( pCurWin ) // && pCurWin->ISA( ModulWindow ) )
+    if ( pCurWin )
     {
         BasicDocShell* pDocShell = (BasicDocShell*)GetViewFrame()->GetObjectShell();
         DBG_ASSERT( pDocShell, "DocShell ?!" );
@@ -242,41 +240,30 @@ ModulWindow* BasicIDEShell::CreateBasWin( const ScriptDocument& rDocument, 
const
 
 ModulWindow* BasicIDEShell::FindBasWin( const ScriptDocument& rDocument, const ::rtl::OUString& 
rLibName, const ::rtl::OUString& rModName, bool bCreateIfNotExist, bool bFindSuspended )
 {
-    ModulWindow* pModWin = 0;
     for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin();
          it != aIDEWindowTable.end(); ++it )
     {
         IDEBaseWindow* pWin = it->second;
-        if ( ( !pWin->IsSuspended() || bFindSuspended ) && pWin->IsA( TYPE( ModulWindow ) ) )
-        {
-            if ( rLibName.isEmpty() )
-            {
-                pModWin = (ModulWindow*)pWin;
-                break;
-            }
-            else if ( pWin->IsDocument( rDocument ) && pWin->GetLibName() == rLibName && 
pWin->GetName() == rModName )
+        if (!pWin->IsSuspended() || bFindSuspended)
+            if (rLibName.isEmpty() || (pWin->IsDocument(rDocument) && pWin->GetLibName() == 
rLibName && pWin->GetName() == rModName))
             {
-                pModWin = (ModulWindow*)pWin;
-                break;
+                if (ModulWindow* pModWin = dynamic_cast<ModulWindow*>(pWin))
+                    return pModWin;
             }
-        }
     }
-    if ( !pModWin && bCreateIfNotExist )
-        pModWin = CreateBasWin( rDocument, rLibName, rModName );
-
-    return pModWin;
+    return bCreateIfNotExist ? CreateBasWin(rDocument, rLibName, rModName) : 0;
 }
 
 void BasicIDEShell::Move()
 {
-    if ( pCurWin && pCurWin->ISA( ModulWindow ) )
-        ((ModulWindow*)pCurWin)->FrameWindowMoved();
+    if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
+        pMCurWin->FrameWindowMoved();
 }
 
 void BasicIDEShell::ShowCursor( bool bOn )
 {
-    if ( pCurWin && pCurWin->ISA( ModulWindow ) )
-        ((ModulWindow*)pCurWin)->ShowCursor( bOn );
+    if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
+        pMCurWin->ShowCursor(bOn);
 }
 
 // Hack for #101048
@@ -285,7 +272,7 @@ sal_Int32 getBasicIDEShellCount( void );
 // only if basic window above:
 void BasicIDEShell::ExecuteBasic( SfxRequest& rReq )
 {
-    if ( !pCurWin || !pCurWin->IsA( TYPE( ModulWindow ) ) )
+    if (!dynamic_cast<ModulWindow*>(pCurWin))
         return;
 
     pCurWin->ExecuteCommand( rReq );
diff --git a/basctl/source/basicide/basides3.cxx b/basctl/source/basicide/basides3.cxx
index c0529f1..17bbddb 100644
--- a/basctl/source/basicide/basides3.cxx
+++ b/basctl/source/basicide/basides3.cxx
@@ -117,28 +117,15 @@ DialogWindow* BasicIDEShell::CreateDlgWin( const ScriptDocument& rDocument, 
cons
 
 DialogWindow* BasicIDEShell::FindDlgWin( const ScriptDocument& rDocument, const ::rtl::OUString& 
rLibName, const ::rtl::OUString& rDlgName, bool bCreateIfNotExist, bool bFindSuspended )
 {
-    DialogWindow* pDlgWin = 0;
     for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); 
++it )
     {
         IDEBaseWindow* pWin = it->second;
-        if ( ( !pWin->IsSuspended() || bFindSuspended ) && pWin->IsA( TYPE( DialogWindow ) ) )
-        {
-            if ( rLibName.isEmpty() )
-            {
-                pDlgWin = (DialogWindow*)pWin;
-                break;
-            }
-            else if ( pWin->IsDocument( rDocument ) && pWin->GetLibName() == rLibName && 
pWin->GetName() == rDlgName )
-            {
-                pDlgWin = (DialogWindow*)pWin;
-                break;
-            }
-        }
+        if (!pWin->IsSuspended() || bFindSuspended)
+            if (rLibName.isEmpty() || (pWin->IsDocument(rDocument) && pWin->GetLibName() == 
rLibName && pWin->GetName() == rDlgName))
+                if (DialogWindow* pDlgWin = dynamic_cast<DialogWindow*>(pWin))
+                    return pDlgWin;
     }
-    if ( !pDlgWin && bCreateIfNotExist )
-        pDlgWin = CreateDlgWin( rDocument, rLibName, rDlgName );
-
-    return pDlgWin;
+    return bCreateIfNotExist ? CreateDlgWin(rDocument, rLibName, rDlgName) : 0;
 }
 
 sal_uInt16 BasicIDEShell::GetIDEWindowId(const IDEBaseWindow* pWin) const
@@ -151,18 +138,17 @@ sal_uInt16 BasicIDEShell::GetIDEWindowId(const IDEBaseWindow* pWin) const
 
 SdrView* BasicIDEShell::GetCurDlgView() const
 {
-    if ( !pCurWin || !pCurWin->IsA( TYPE( DialogWindow ) ) )
-        return NULL;
-
-    DialogWindow* pWin = (DialogWindow*)pCurWin;
-    return pWin->GetView();
+    if (DialogWindow* pDCurWin = dynamic_cast<DialogWindow*>(pCurWin))
+        return pDCurWin->GetView();
+    else
+        return 0;
 }
 
 // only if dialogue window above:
 void BasicIDEShell::ExecuteDialog( SfxRequest& rReq )
 {
-    if ( pCurWin && ( pCurWin->IsA( TYPE( DialogWindow) ) ||
-        (rReq.GetSlot() == SID_IMPORT_DIALOG &&pCurWin->IsA( TYPE( ModulWindow) ) ) ) )
+    if (pCurWin && (dynamic_cast<DialogWindow*>(pCurWin) ||
+        (rReq.GetSlot() == SID_IMPORT_DIALOG && dynamic_cast<ModulWindow*>(pCurWin))))
     {
         pCurWin->ExecuteCommand( rReq );
     }
diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx
index 7a8d733..b59882c 100644
--- a/basctl/source/basicide/basidesh.cxx
+++ b/basctl/source/basicide/basidesh.cxx
@@ -251,19 +251,15 @@ BasicIDEShell::~BasicIDEShell()
 
 void BasicIDEShell::onDocumentCreated( const ScriptDocument& /*_rDocument*/ )
 {
-    if(pCurWin && pCurWin->IsA( TYPE(ModulWindow)))
-    {
-        dynamic_cast<ModulWindow*>(pCurWin)->SetLineNumberDisplay(SourceLinesDisplayed());
-    }
+    if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
+        pMCurWin->SetLineNumberDisplay(SourceLinesDisplayed());
     UpdateWindows();
 }
 
 void BasicIDEShell::onDocumentOpened( const ScriptDocument& /*_rDocument*/ )
 {
-    if(pCurWin && pCurWin->IsA( TYPE(ModulWindow)))
-    {
-        dynamic_cast<ModulWindow*>(pCurWin)->SetLineNumberDisplay(SourceLinesDisplayed());
-    }
+    if (ModulWindow* pMCurWin = dynamic_cast<ModulWindow*>(pCurWin))
+        pMCurWin->SetLineNumberDisplay(SourceLinesDisplayed());
     UpdateWindows();
 }
 
@@ -534,9 +530,9 @@ void BasicIDEShell::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId&,
 {
     if ( BasicIDEGlobals::GetShell() )
     {
-        if ( rHint.IsA( TYPE( SfxSimpleHint ) ) )
+        if (SfxSimpleHint* pSimpleHint = dynamic_cast<SfxSimpleHint*>(&rHint))
         {
-            switch ( ((SfxSimpleHint&)rHint).GetId() )
+            switch (pSimpleHint->GetId())
             {
                 case SFX_HINT_DYING:
                 {
@@ -546,15 +542,13 @@ void BasicIDEShell::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId&,
                 break;
             }
 
-            if ( rHint.IsA( TYPE( SbxHint ) ) )
+            if (SbxHint* pSbxHint = dynamic_cast<SbxHint*>(&rHint))
             {
-                SbxHint& rSbxHint = (SbxHint&)rHint;
-                sal_uLong nHintId = rSbxHint.GetId();
+                sal_uLong nHintId = pSbxHint->GetId();
                 if (    ( nHintId == SBX_HINT_BASICSTART ) ||
                         ( nHintId == SBX_HINT_BASICSTOP ) )
                 {
-                    SfxBindings* pBindings = BasicIDE::GetBindingsPtr();
-                    if ( pBindings )
+                    if (SfxBindings* pBindings = BasicIDE::GetBindingsPtr())
                     {
                         pBindings->Invalidate( SID_BASICRUN );
                         pBindings->Update( SID_BASICRUN );
diff --git a/basctl/source/basicide/basobj3.cxx b/basctl/source/basicide/basobj3.cxx
index 1479735..61d9c53 100644
--- a/basctl/source/basicide/basobj3.cxx
+++ b/basctl/source/basicide/basobj3.cxx
@@ -130,8 +130,7 @@ SbMethod* CreateMacro( SbModule* pModule, const String& rMacroName )
 
     // update module in library
     ScriptDocument aDocument( ScriptDocument::NoDocument );
-    SbxObject* pParent = pModule->GetParent();
-    StarBASIC* pBasic = PTR_CAST(StarBASIC,pParent);
+    StarBASIC* pBasic = dynamic_cast<StarBASIC*>(pModule->GetParent());
     DBG_ASSERT(pBasic, "BasicIDE::CreateMacro: No Basic found!");
     if ( pBasic )
     {
@@ -246,11 +245,9 @@ bool RemoveDialog( const ScriptDocument& rDocument, const ::rtl::OUString& 
rLibN
 StarBASIC* FindBasic( const SbxVariable* pVar )
 {
     const SbxVariable* pSbx = pVar;
-    while ( pSbx && !pSbx->ISA( StarBASIC ) )
+    while (pSbx && !dynamic_cast<StarBASIC*>(pSbx))
         pSbx = pSbx->GetParent();
-
-    DBG_ASSERT( !pSbx || pSbx->ISA( StarBASIC ), "Find Basic: Kein Basic!" );
-    return (StarBASIC*)pSbx;
+    return static_cast<StarBASIC*>(pSbx);
 }
 
 //----------------------------------------------------------------------------
@@ -486,7 +483,7 @@ SfxBindings* GetBindingsPtr()
         while ( pView )
         {
             SfxObjectShell* pObjShell = pView->GetObjectShell();
-            if ( pObjShell && pObjShell->ISA( BasicDocShell ) )
+            if (dynamic_cast<BasicDocShell*>(pObjShell))
             {
                 pFrame = pView;
                 break;
diff --git a/basctl/source/basicide/bastype3.cxx b/basctl/source/basicide/bastype3.cxx
index 3df5055..45253e1 100644
--- a/basctl/source/basicide/bastype3.cxx
+++ b/basctl/source/basicide/bastype3.cxx
@@ -183,7 +183,7 @@ SbxVariable* BasicTreeListBox::FindVariable( SvLBoxEntry* pEntry )
             break;
             case 0:
             {
-                aDocument = ((BasicDocumentEntry*)pEntry->GetUserData())->GetDocument();
+                aDocument = static_cast<BasicDocumentEntry*>(pEntry->GetUserData())->GetDocument();
             }
             break;
         }
@@ -198,7 +198,7 @@ SbxVariable* BasicTreeListBox::FindVariable( SvLBoxEntry* pEntry )
         {
             SvLBoxEntry* pLE = aEntries[n];
             DBG_ASSERT( pLE, "Can not find entry in array" );
-            BasicEntry* pBE = (BasicEntry*)pLE->GetUserData();
+            BasicEntry* pBE = static_cast<BasicEntry*>(pLE->GetUserData());
             DBG_ASSERT( pBE, "The data in the entry not found!" );
             String aName( GetEntryText( pLE ) );
 
@@ -206,27 +206,26 @@ SbxVariable* BasicTreeListBox::FindVariable( SvLBoxEntry* pEntry )
             {
                 case OBJ_TYPE_LIBRARY:
                 {
-                    BasicManager* pBasMgr = aDocument.getBasicManager();
-                    if ( pBasMgr )
+                    if (BasicManager* pBasMgr = aDocument.getBasicManager())
                         pVar = pBasMgr->GetLib( aName );
                 }
                 break;
                 case OBJ_TYPE_MODULE:
                 {
-                    DBG_ASSERT( pVar && pVar->IsA( TYPE(StarBASIC) ), "FindVariable: Ungueltiges 
Basic" );
+                    DBG_ASSERT(dynamic_cast<StarBASIC*>(pVar), "FindVariable: invalid Basic");
                     // extract the module name from the string like "Sheet1 (Example1)"
                     if( bDocumentObjects )
                     {
                         sal_uInt16 nIndex = 0;
                         aName = aName.GetToken( 0, ' ', nIndex );
                     }
-                    pVar = ((StarBASIC*)pVar)->FindModule( aName );
+                    pVar = static_cast<StarBASIC*>(pVar)->FindModule( aName );
                 }
                 break;
                 case OBJ_TYPE_METHOD:
                 {
-                    DBG_ASSERT( pVar && ( (pVar->IsA( TYPE(SbModule) )) || (pVar->IsA( 
TYPE(SbxObject) )) ), "FindVariable: Ungueltiges Modul/Objekt" );
-                    pVar = ((SbxObject*)pVar)->GetMethods()->Find( aName, SbxCLASS_METHOD );
+                    DBG_ASSERT(dynamic_cast<SbxObject*>(pVar), "FindVariable: invalid 
modul/object");
+                    pVar = static_cast<SbxObject*>(pVar)->GetMethods()->Find(aName, 
SbxCLASS_METHOD);
                 }
                 break;
                 case OBJ_TYPE_DIALOG:
@@ -288,8 +287,7 @@ BasicEntryDescriptor BasicTreeListBox::GetEntryDescriptor( SvLBoxEntry* pEntry )
             break;
             case 0:
             {
-                BasicDocumentEntry* pBasicDocumentEntry = 
(BasicDocumentEntry*)pEntry->GetUserData();
-                if ( pBasicDocumentEntry )
+                if (BasicDocumentEntry* pBasicDocumentEntry = 
static_cast<BasicDocumentEntry*>(pEntry->GetUserData()))
                 {
                     aDocument = pBasicDocumentEntry->GetDocument();
                     eLocation = pBasicDocumentEntry->GetLocation();
@@ -307,7 +305,7 @@ BasicEntryDescriptor BasicTreeListBox::GetEntryDescriptor( SvLBoxEntry* pEntry )
         {
             SvLBoxEntry* pLE = aEntries[n];
             DBG_ASSERT( pLE, "Entrie im Array nicht gefunden" );
-            BasicEntry* pBE = (BasicEntry*)pLE->GetUserData();
+            BasicEntry* pBE = static_cast<BasicEntry*>(pLE->GetUserData());
             DBG_ASSERT( pBE, "Keine Daten im Eintrag gefunden!" );
 
             switch ( pBE->GetType() )
@@ -455,10 +453,7 @@ bool BasicTreeListBox::IsValidEntry( SvLBoxEntry* pEntry )
 
 SbModule* BasicTreeListBox::FindModule( SvLBoxEntry* pEntry )
 {
-    SbxVariable* pVar = FindVariable( pEntry );
-    if ( pVar && pVar->IsA( TYPE(SbModule ) ) )
-        return (SbModule*)pVar;
-    return 0;
+    return dynamic_cast<SbModule*>(FindVariable(pEntry));
 }
 
 SvLBoxEntry* BasicTreeListBox::FindRootEntry( const ScriptDocument& rDocument, LibraryLocation 
eLocation )
@@ -468,9 +463,9 @@ SvLBoxEntry* BasicTreeListBox::FindRootEntry( const ScriptDocument& rDocument, L
     SvLBoxEntry* pRootEntry = GetEntry( nRootPos );
     while ( pRootEntry )
     {
-        DBG_ASSERT( (((BasicEntry*)pRootEntry->GetUserData())->GetType() == OBJ_TYPE_DOCUMENT ), 
"Kein Shelleintrag?" );
-        BasicDocumentEntry* pBasicDocumentEntry = (BasicDocumentEntry*)pRootEntry->GetUserData();
-        if ( pBasicDocumentEntry && ( pBasicDocumentEntry->GetDocument() == rDocument ) && 
pBasicDocumentEntry->GetLocation() == eLocation )
+        DBG_ASSERT( static_cast<BasicEntry*>(pRootEntry->GetUserData())->GetType() == 
OBJ_TYPE_DOCUMENT, "Kein Shelleintrag?" );
+        BasicDocumentEntry* pBDEntry = static_cast<BasicDocEntry*>(pRootEntry->GetUserData());
+        if (pBDEntry && pBDEntry->GetDocument() == rDocument && pBDEntry->GetLocation() == 
eLocation)
             return pRootEntry;
         pRootEntry = GetEntry( ++nRootPos );
     }
diff --git a/basctl/source/basicide/bastypes.cxx b/basctl/source/basicide/bastypes.cxx
index 7ca8c56..ded9595 100644
--- a/basctl/source/basicide/bastypes.cxx
+++ b/basctl/source/basicide/bastypes.cxx
@@ -444,15 +444,13 @@ void BasicIDETabBar::Command( const CommandEvent& rCEvt )
              if ( aDocument.isInVBAMode() )
             {
                 // disable to delete or remove object modules in IDE
-                BasicManager* pBasMgr = aDocument.getBasicManager();
-                if ( pBasMgr )
+                if (BasicManager* pBasMgr = aDocument.getBasicManager())
                 {
-                    StarBASIC* pBasic = pBasMgr->GetLib( aOULibName );
-                    if( pBasic )
+                    if (StarBASIC* pBasic = pBasMgr->GetLib(aOULibName))
                     {
                         IDEWindowTable& aIDEWindowTable = pIDEShell->GetIDEWindowTable();
                         IDEWindowTable::const_iterator it = aIDEWindowTable.find( GetCurPageId() );
-                        if( it != aIDEWindowTable.end() && it->second->ISA( ModulWindow ) )
+                        if (it != aIDEWindowTable.end() && dynamic_cast<ModulWindow*>(it->second))
                         {
                             SbModule* pActiveModule = (SbModule*)pBasic->FindModule( 
it->second->GetName() );
                             if( pActiveModule && ( pActiveModule->GetModuleType() == 
script::ModuleType::DOCUMENT ) )
@@ -467,10 +465,10 @@ void BasicIDETabBar::Command( const CommandEvent& rCEvt )
         }
 
 
-        SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
-        SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : NULL;
-        if ( pDispatcher )
-            pDispatcher->Execute( aPopup.Execute( this, aPos ) );
+        if (pIDEShell)
+            if (SfxViewFrame* pViewFrame = pIDEShell->GetViewFrame())
+                if (SfxDispatcher* pDispatcher = pViewFrame->GetDispatcher())
+                    pDispatcher->Execute(aPopup.Execute(this, aPos));
     }
 }
 
@@ -523,11 +521,11 @@ void BasicIDETabBar::Sort()
             aTabBarSortHelper.aPageText = GetPageText( nId );
             IDEBaseWindow* pWin = aIDEWindowTable[ nId ];
 
-            if ( pWin->IsA( TYPE( ModulWindow ) ) )
+            if (dynamic_cast<ModulWindow*>(pWin))
             {
                 aModuleList.push_back( aTabBarSortHelper );
             }
-            else if ( pWin->IsA( TYPE( DialogWindow ) ) )
+            else if (dynamic_cast<DialogWindow*>(pWin))
             {
                 aDialogList.push_back( aTabBarSortHelper );
             }
diff --git a/basctl/source/basicide/localizationmgr.cxx b/basctl/source/basicide/localizationmgr.cxx
index 9097531..1786e49 100644
--- a/basctl/source/basicide/localizationmgr.cxx
+++ b/basctl/source/basicide/localizationmgr.cxx
@@ -135,9 +135,8 @@ void LocalizationMgr::implEnableDisableResourceForAllLibraryDialogs( HandleResou
     {
         String aDlgName = pDlgNames[ i ];
         DialogWindow* pWin = m_pIDEShell->FindDlgWin( m_aDocument, m_aLibName, aDlgName, false );
-        if( pWin && pWin->IsA( TYPE( DialogWindow ) ) )
+        if (DialogWindow* pDialogWin = dynamic_cast<DialogWindow*>(pWin))
         {
-            DialogWindow* pDialogWin = static_cast< DialogWindow* >( pWin );
             Reference< container::XNameContainer > xDialog = pDialogWin->GetDialog();
             if( xDialog.is() )
             {
@@ -778,14 +777,10 @@ void LocalizationMgr::handleSetCurrentLocale( ::com::sun::star::lang::Locale 
aLo
         if ( pBindings )
             pBindings->Invalidate( SID_BASICIDE_CURRENT_LANG );
 
-        IDEBaseWindow* pCurWin = m_pIDEShell->GetCurWindow();
-        if ( pCurWin && !pCurWin->IsSuspended() && pCurWin->IsA( TYPE( DialogWindow ) ) )
-        {
-            DialogWindow* pDlgWin = (DialogWindow*)pCurWin;
-            DlgEditor* pWinEditor = pDlgWin->GetEditor();
-            if( pWinEditor )
-                pWinEditor->UpdatePropertyBrowserDelayed();
-        }
+        if (DialogWindow* pDlgWin = dynamic_cast<DialogWindow*>(m_pIDEShell->GetCurWindow()))
+            if (!pDlgWin->IsSuspended())
+                if (DlgEditor* pWinEditor = pDlgWin->GetEditor())
+                    pWinEditor->UpdatePropertyBrowserDelayed();
     }
 }
 
@@ -812,22 +807,18 @@ DialogWindow* FindDialogWindowForEditor( DlgEditor* pEditor )
 {
     BasicIDEShell* pIDEShell = BasicIDEGlobals::GetShell();
     IDEWindowTable& aIDEWindowTable = pIDEShell->GetIDEWindowTable();
-    DialogWindow* pFoundDlgWin = NULL;
     for( IDEWindowTable::const_iterator it = aIDEWindowTable.begin(); it != aIDEWindowTable.end(); 
++it )
     {
         IDEBaseWindow* pWin = it->second;
-        if ( !pWin->IsSuspended() && pWin->IsA( TYPE( DialogWindow ) ) )
-        {
-            DialogWindow* pDlgWin = (DialogWindow*)pWin;
-            DlgEditor* pWinEditor = pDlgWin->GetEditor();
-            if( pWinEditor == pEditor )
+        if (!pWin->IsSuspended())
+            if (DialogWindow* pDlgWin = dynamic_cast<DialogWindow*>(pWin))
             {
-                pFoundDlgWin = pDlgWin;
-                break;
+                DlgEditor* pWinEditor = pDlgWin->GetEditor();
+                if( pWinEditor == pEditor )
+                    return pFoundDlgWin;
             }
-        }
     }
-    return pFoundDlgWin;
+    return 0;
 }
 
 
diff --git a/basctl/source/basicide/sbxitem.cxx b/basctl/source/basicide/sbxitem.cxx
index 0eb52cb..ab75ee8 100644
--- a/basctl/source/basicide/sbxitem.cxx
+++ b/basctl/source/basicide/sbxitem.cxx
@@ -55,13 +55,15 @@ SfxPoolItem *SbxItem::Clone(SfxItemPool*) const
 
 int SbxItem::operator==(const SfxPoolItem& rCmp) const
 {
-    DBG_ASSERT( rCmp.ISA( SbxItem ), "==: Kein SbxItem!" );
-    return (SfxPoolItem::operator==(rCmp) &&
-           m_aDocument == ((const SbxItem&)rCmp).m_aDocument &&
-           m_aLibName == ((const SbxItem&)rCmp).m_aLibName &&
-           m_aName == ((const SbxItem&)rCmp).m_aName &&
-           m_aMethodName == ((const SbxItem&)rCmp).m_aMethodName &&
-           m_nType == ((const SbxItem&)rCmp).m_nType);
+    SbxItem const* pSbxItem = dynamic_cast<SbxItem const*>(&rCmp);
+    DBG_ASSERT(pSbxItem, "==: no SbxItem!" );
+    return
+        SfxPoolItem::operator==(rCmp) &&
+        m_aDocument == pSbxItem->m_aDocument &&
+        m_aLibName == pSbxItem->m_aLibName &&
+        m_aName == pSbxItem->m_aName &&
+        m_aMethodName == pSbxItem->m_aMethodName &&
+        m_nType == pSbxItem->m_nType;
 }
 
 const ScriptDocument& SbxItem::GetDocument() const
diff --git a/basctl/source/basicide/tbxctl.cxx b/basctl/source/basicide/tbxctl.cxx
index 171fa00..a80381b 100644
--- a/basctl/source/basicide/tbxctl.cxx
+++ b/basctl/source/basicide/tbxctl.cxx
@@ -67,12 +67,10 @@ void TbxControls::StateChanged( sal_uInt16 nSID, SfxItemState eState,
 {
     if( pState )
     {
-        SfxAllEnumItem* pItem = PTR_CAST(SfxAllEnumItem, pState);
-        if( pItem )
+        if (SfxAllEnumItem* pItem = dynamic_cast<SfxAllEnumItem*>(pState))
         {
-            sal_uInt16 nLastEnum = pItem->GetValue();
             sal_uInt16 nTemp = 0;
-            switch( nLastEnum )
+            switch (sal_uInt16 nLastEnum = pItem->GetValue())
             {
                 case SVX_SNAP_PUSHBUTTON:       nTemp = SID_INSERT_PUSHBUTTON; break;
                 case SVX_SNAP_CHECKBOX:         nTemp = SID_INSERT_CHECKBOX; break;
diff --git a/basctl/source/dlged/dlged.cxx b/basctl/source/dlged/dlged.cxx
index 3916636..bab57fb 100644
--- a/basctl/source/dlged/dlged.cxx
+++ b/basctl/source/dlged/dlged.cxx
@@ -561,12 +561,9 @@ IMPL_LINK_NOARG(DlgEditor, PaintTimeout)
                 if ( pDlgEdPage && ( ( nObjCount = pDlgEdPage->GetObjCount() ) > 0 ) )
                 {
                     for ( sal_uLong i = 0 ; i < nObjCount ; i++ )
-                    {
-                        SdrObject* pObj = pDlgEdPage->GetObj(i);
-                        DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
-                        if ( pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
-                            pDlgEdObj->SetRectFromProps();
-                    }
+                        if (DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pDlgEdPage->GetObj(i)))
+                            if (!dynamic_cast<DlgEdForm*>(pDlgEdObj))
+                                pDlgEdObj->SetRectFromProps();
                 }
             }
         }
@@ -668,8 +665,7 @@ void DlgEditor::CreateDefaultObject()
     // create object by factory
     SdrObject* pObj = SdrObjFactory::MakeNewObject( pDlgEdView->GetCurrentObjInventor(), 
pDlgEdView->GetCurrentObjIdentifier(), pDlgEdPage );
 
-    DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
-    if ( pDlgEdObj )
+    if (DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pObj))
     {
         // set position and size
         Size aSize = pWindow->PixelToLogic( Size( 96, 24 ) );
@@ -746,9 +742,9 @@ void DlgEditor::Copy()
     for( sal_uLong i = 0; i < nMark; i++ )
     {
         SdrObject* pObj = pDlgEdView->GetMarkedObjectList().GetMark(i)->GetMarkedSdrObj();
-        DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
+        DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pObj);
 
-        if (pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
+        if (pDlgEdObj && !dynamic_cast<DlgEdForm*>(pDlgEdObj))
         {
             ::rtl::OUString aName;
             Reference< beans::XPropertySet >  xMarkPSet(pDlgEdObj->GetUnoControlModel(), 
uno::UNO_QUERY);
@@ -1070,9 +1066,9 @@ void DlgEditor::Delete()
     for( sal_uLong i = 0; i < nMark; i++ )
     {
         SdrObject* pObj = pDlgEdView->GetMarkedObjectList().GetMark(i)->GetMarkedSdrObj();
-        DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
+        DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pObj);
 
-        if ( pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
+        if ( pDlgEdObj && !dynamic_cast<DlgEdForm*>(pDlgEdObj) )
         {
             // get name from property
             ::rtl::OUString aName;
diff --git a/basctl/source/dlged/dlgedfunc.cxx b/basctl/source/dlged/dlgedfunc.cxx
index 6dbcc48..4c66c99 100644
--- a/basctl/source/dlged/dlgedfunc.cxx
+++ b/basctl/source/dlged/dlgedfunc.cxx
@@ -509,7 +509,7 @@ bool DlgEdFuncSelect::MouseButtonDown( const MouseEvent& rMEvt )
             {
                 if( pView->PickObj( aMDPos, nHitLog, pObj, pPV ) )
                 {
-                    //if( pObj->ISA( DlgEdForm ) )
+                    //if (dynamic_cast<DlgEdForm*>(pObj))
                     //  pView->UnmarkAll();
                     //else
                     //  pParent->UnmarkDialog();
diff --git a/basctl/source/dlged/dlgedobj.cxx b/basctl/source/dlged/dlgedobj.cxx
index df7ed2b..41ae1cb 100644
--- a/basctl/source/dlged/dlgedobj.cxx
+++ b/basctl/source/dlged/dlgedobj.cxx
@@ -51,6 +51,14 @@ using ::rtl::OUString;
 TYPEINIT1(DlgEdObj, SdrUnoObj);
 DBG_NAME(DlgEdObj);
 
+DlgEditor* DlgEdObj::GetDialogEditor ()
+{
+    if (DlgEdForm* pFormThis = dynamic_cast<DlgEdForm*>(this))
+        return pFormThis->GetDlgEditor();
+    else
+        return pDlgEdForm->GetDlgEditor();
+}
+
 //----------------------------------------------------------------------------
 
 DlgEdObj::DlgEdObj()
@@ -512,12 +520,9 @@ void SAL_CALL DlgEdObj::NameChange( const  
::com::sun::star::beans::PropertyChan
                     xCont->removeByName( aOldName );
                     xCont->insertByName( aNewName , aAny );
 
-                    DlgEditor* pEditor;
-                    if ( ISA(DlgEdForm) )
-                        pEditor = ((DlgEdForm*)this)->GetDlgEditor();
-                    else
-                        pEditor = GetDlgEdForm()->GetDlgEditor();
-                    LocalizationMgr::renameControlResourceIDsForEditorObject( pEditor, aAny, 
aNewName );
+                    LocalizationMgr::renameControlResourceIDsForEditorObject(
+                        GetDialogEditor(), aAny, aNewName
+                    );
                 }
             }
             else
@@ -1104,12 +1109,9 @@ void DlgEdObj::SetDefaults()
                 aAny <<= xCtrl;
                 xCont->insertByName( aOUniqueName , aAny );
 
-                DlgEditor* pEditor;
-                if ( ISA(DlgEdForm) )
-                    pEditor = ((DlgEdForm*)this)->GetDlgEditor();
-                else
-                    pEditor = GetDlgEdForm()->GetDlgEditor();
-                LocalizationMgr::setControlResourceIDsForNewEditorObject( pEditor, aAny, 
aOUniqueName );
+                LocalizationMgr::setControlResourceIDsForNewEditorObject(
+                    GetDialogEditor(), aAny, aOUniqueName
+                );
 
                 // #110559#
                 pDlgEdForm->UpdateTabOrderAndGroups();
@@ -1222,20 +1224,13 @@ void SAL_CALL DlgEdObj::_propertyChange( const  
::com::sun::star::beans::Propert
             PositionAndSizeChange( evt );
 
             if ( evt.PropertyName == DLGED_PROP_DECORATION )
-            {
-                if ( ISA(DlgEdForm) )
-                    ((DlgEdForm*)this)->GetDlgEditor()->ResetDialog();
-                else
-                    GetDlgEdForm()->GetDlgEditor()->ResetDialog();
-            }
+                GetDialogEditor()->ResetDialog();
         }
         // change name of control in dialog model
         else if ( evt.PropertyName == DLGED_PROP_NAME )
         {
-            if ( !ISA(DlgEdForm) )
-            {
+            if (!dynamic_cast<DlgEdForm*>(this))
                 NameChange(evt);
-            }
         }
         // update step
         else if ( evt.PropertyName == DLGED_PROP_STEP )
@@ -1245,10 +1240,8 @@ void SAL_CALL DlgEdObj::_propertyChange( const  
::com::sun::star::beans::Propert
         // change tabindex
         else if ( evt.PropertyName == DLGED_PROP_TABINDEX )
         {
-            if ( !ISA(DlgEdForm) )
-            {
+            if (!dynamic_cast<DlgEdForm>(this))
                 TabIndexChange(evt);
-            }
         }
     }
 }
@@ -1260,14 +1253,7 @@ void SAL_CALL DlgEdObj::_elementInserted(const 
::com::sun::star::container::Cont
     if (isListening())
     {
         // dialog model changed
-        if ( ISA(DlgEdForm) )
-        {
-            ((DlgEdForm*)this)->GetDlgEditor()->SetDialogModelChanged(true);
-        }
-        else
-        {
-            GetDlgEdForm()->GetDlgEditor()->SetDialogModelChanged(true);
-        }
+        GetDialogEditor()->SetDialogModelChanged(true);
     }
 }
 
@@ -1278,14 +1264,7 @@ void SAL_CALL DlgEdObj::_elementReplaced(const 
::com::sun::star::container::Cont
     if (isListening())
     {
         // dialog model changed
-        if ( ISA(DlgEdForm) )
-        {
-            ((DlgEdForm*)this)->GetDlgEditor()->SetDialogModelChanged(true);
-        }
-        else
-        {
-            GetDlgEdForm()->GetDlgEditor()->SetDialogModelChanged(true);
-        }
+        GetDialogEditor()->SetDialogModelChanged(true);
     }
 }
 
@@ -1296,14 +1275,7 @@ void SAL_CALL DlgEdObj::_elementRemoved(const 
::com::sun::star::container::Conta
     if (isListening())
     {
         // dialog model changed
-        if ( ISA(DlgEdForm) )
-        {
-            ((DlgEdForm*)this)->GetDlgEditor()->SetDialogModelChanged(true);
-        }
-        else
-        {
-            GetDlgEdForm()->GetDlgEditor()->SetDialogModelChanged(true);
-        }
+        GetDialogEditor()->SetDialogModelChanged(true);
     }
 }
 
@@ -1567,9 +1539,8 @@ void DlgEdForm::UpdateStep()
     {
         for ( sal_uLong i = 0 ; i < nObjCount ; i++ )
         {
-            SdrObject* pObj = pSdrPage->GetObj(i);
-            DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
-            if ( pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
+            DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pSdrPage->GetObj(i));
+            if (pDlgEdObj && !dynamic_cast<DlgEdForm*>(pDlgEdObj))
                 pDlgEdObj->UpdateStep();
         }
     }
diff --git a/basctl/source/dlged/propbrw.cxx b/basctl/source/dlged/propbrw.cxx
index 673af7b..3af451b 100644
--- a/basctl/source/dlged/propbrw.cxx
+++ b/basctl/source/dlged/propbrw.cxx
@@ -281,8 +281,7 @@ Sequence< Reference< XInterface > >
 
         while (pCurrent)
         {
-            DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pCurrent);
-            if (pDlgEdObj)
+            if (DlgEdObj* pDlgEdObj = dynamic_cast<DlgEdObj*>(pCurrent))
             {
                 Reference< XInterface > xControlInterface(pDlgEdObj->GetUnoControlModel(), 
UNO_QUERY);
                 if (xControlInterface.is())
@@ -525,8 +524,7 @@ void PropBrw::ImplUpdate( const Reference< XModel >& _rxContextDocument, SdrView
         Sequence< Reference< XInterface > > aNewObjects;
         if ( nMarkCount == 1 )
         {
-            DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, rMarkList.GetMark(0)->GetMarkedSdrObj() );
-            if ( pDlgEdObj )
+            if (DlgEdObj* pDlgEdObj = 
dynamic_cast<DlgEdObj*>(rMarkList.GetMark(0)->GetMarkedSdrObj()))
             {
                 if ( pDlgEdObj->IsGroupObject() ) // group object
                     aNewObjects = CreateMultiSelectionSequence( rMarkList );
diff --git a/basctl/source/inc/dlgedobj.hxx b/basctl/source/inc/dlgedobj.hxx
index ffd7f60..7be6a2e 100644
--- a/basctl/source/inc/dlgedobj.hxx
+++ b/basctl/source/inc/dlgedobj.hxx
@@ -51,6 +51,9 @@ private:
     ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener> 
m_xPropertyChangeListener;
     ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener>  
m_xContainerListener;
 
+private:
+    DlgEditor* GetDialogEditor ();
+
 protected:
     DlgEdObj();
     DlgEdObj(const ::rtl::OUString& rModelName,
-- 
1.7.7


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.