Author: alg Date: Fri Feb 28 02:15:29 2014 New Revision: 1572807 URL: http://svn.apache.org/r1572807 Log: i87182 secured usage of LayerTabBar in Draw application, ensured initialization when used as OLE
Modified: openoffice/trunk/main/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx openoffice/trunk/main/sd/source/ui/view/drviews1.cxx openoffice/trunk/main/sd/source/ui/view/drviews3.cxx openoffice/trunk/main/sd/source/ui/view/drviews4.cxx openoffice/trunk/main/sd/source/ui/view/drviews7.cxx openoffice/trunk/main/sd/source/ui/view/drviewsb.cxx Modified: openoffice/trunk/main/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx?rev=1572807&r1=1572806&r2=1572807&view=diff ============================================================================== --- openoffice/trunk/main/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx (original) +++ openoffice/trunk/main/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx Fri Feb 28 02:15:29 2014 @@ -876,7 +876,8 @@ uno::Any SAL_CALL AccessibleDocumentView sValue += sName; sValue += String::CreateFromInt32(pDrViewSh->GetPageTabControl()->GetPageCount()) ; sValue += rtl::OUString::createFromAscii(";"); - if(pDrViewSh->IsLayerModeActive() ) + + if(pDrViewSh->IsLayerModeActive() && pDrViewSh->GetLayerTabControl()) // #87182# { sName = rtl::OUString::createFromAscii("page-name:"); sValue = sName; Modified: openoffice/trunk/main/sd/source/ui/view/drviews1.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/drviews1.cxx?rev=1572807&r1=1572806&r2=1572807&view=diff ============================================================================== --- openoffice/trunk/main/sd/source/ui/view/drviews1.cxx (original) +++ openoffice/trunk/main/sd/source/ui/view/drviews1.cxx Fri Feb 28 02:15:29 2014 @@ -401,7 +401,13 @@ void DrawViewShell::ChangeEditMode(EditM GetViewShellBase().GetDrawController().BroadcastContextChange(); meEditMode = eEMode; - mbIsLayerModeActive = bIsLayerModeActive; + + if(pLayerBar) + { + // #87182# only switch activation mode of LayerTabBar when there is one, + // else it will not get initialized with the current set of Layers as needed + mbIsLayerModeActive = bIsLayerModeActive; + } // Determine whether to show the master view toolbar. The master // page mode has to be active and the shell must not be a handout @@ -684,7 +690,11 @@ IMPL_LINK( DrawViewShell, TabSplitHdl, T aTabSize.Width() = Min(pTab->GetSplitSize(), (long)(nMax-1)); maTabControl.SetSizePixel(aTabSize); - GetLayerTabControl()->SetSizePixel(aTabSize); + + if(GetLayerTabControl()) // #87182# + { + GetLayerTabControl()->SetSizePixel(aTabSize); + } Point aPos = maTabControl.GetPosPixel(); aPos.X() += aTabSize.Width(); Modified: openoffice/trunk/main/sd/source/ui/view/drviews3.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/drviews3.cxx?rev=1572807&r1=1572806&r2=1572807&view=diff ============================================================================== --- openoffice/trunk/main/sd/source/ui/view/drviews3.cxx (original) +++ openoffice/trunk/main/sd/source/ui/view/drviews3.cxx Fri Feb 28 02:15:29 2014 @@ -222,18 +222,35 @@ void DrawViewShell::ExecCtrl(SfxRequest case SID_SWITCHLAYER: // BASIC { const SfxItemSet *pArgs = rReq.GetArgs (); - sal_uInt16 nCurPage = GetLayerTabControl()->GetCurPageId (); - if( pArgs && pArgs->Count () == 1) - { - SFX_REQUEST_ARG (rReq, pWhatLayer, SfxUInt32Item, ID_VAL_WHATLAYER, sal_False); - if( pWhatLayer ) - nCurPage = (short) pWhatLayer->GetValue (); - } + // #87182# + bool bCurPageValid(false); + sal_uInt16 nCurPage(0); + + if(GetLayerTabControl()) + { + nCurPage = GetLayerTabControl()->GetCurPageId(); + bCurPageValid = true; + } - mpDrawView->SetActiveLayer( GetLayerTabControl()->GetPageText(nCurPage) ); - Invalidate(); - rReq.Done (); + if(pArgs && 1 == pArgs->Count()) + { + SFX_REQUEST_ARG (rReq, pWhatLayer, SfxUInt32Item, ID_VAL_WHATLAYER, sal_False); + + if(pWhatLayer) + { + nCurPage = (short)pWhatLayer->GetValue(); + bCurPageValid = true; + } + } + + if(bCurPageValid) + { + mpDrawView->SetActiveLayer( GetLayerTabControl()->GetPageText(nCurPage) ); + Invalidate(); + } + + rReq.Done (); break; } Modified: openoffice/trunk/main/sd/source/ui/view/drviews4.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/drviews4.cxx?rev=1572807&r1=1572806&r2=1572807&view=diff ============================================================================== --- openoffice/trunk/main/sd/source/ui/view/drviews4.cxx (original) +++ openoffice/trunk/main/sd/source/ui/view/drviews4.cxx Fri Feb 28 02:15:29 2014 @@ -124,6 +124,12 @@ void DrawViewShell::DeleteActualPage() void DrawViewShell::DeleteActualLayer() { + if(!GetLayerTabControl()) // #87182# + { + OSL_ENSURE(false, "No LayerTabBar (!)"); + return; + } + SdrLayerAdmin& rAdmin = GetDoc()->GetLayerAdmin(); const String& rName = GetLayerTabControl()->GetPageText(GetLayerTabControl()->GetCurPageId()); String aString(SdResId(STR_ASK_DELETE_LAYER)); Modified: openoffice/trunk/main/sd/source/ui/view/drviews7.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/drviews7.cxx?rev=1572807&r1=1572806&r2=1572807&view=diff ============================================================================== --- openoffice/trunk/main/sd/source/ui/view/drviews7.cxx (original) +++ openoffice/trunk/main/sd/source/ui/view/drviews7.cxx Fri Feb 28 02:15:29 2014 @@ -911,22 +911,29 @@ void DrawViewShell::GetMenuState( SfxIte // darf der aktuelle Layer geloescht werden? if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_DELETE_LAYER ) ) { - sal_uInt16 nCurrentLayer = GetLayerTabControl()->GetCurPageId(); - const String& rName = GetLayerTabControl()->GetPageText(nCurrentLayer); - - sal_Bool bDisableIt = !IsLayerModeActive(); - bDisableIt |= (rName == String(SdResId(STR_LAYER_LAYOUT))); - bDisableIt |= (rName == String(SdResId(STR_LAYER_BCKGRND))); - bDisableIt |= (rName == String(SdResId(STR_LAYER_BCKGRNDOBJ))); - bDisableIt |= (rName == String(SdResId(STR_LAYER_CONTROLS))); - bDisableIt |= (rName == String(SdResId(STR_LAYER_MEASURELINES))); + if(GetLayerTabControl()) // #87182# + { + sal_uInt16 nCurrentLayer = GetLayerTabControl()->GetCurPageId(); + const String& rName = GetLayerTabControl()->GetPageText(nCurrentLayer); - if (bDisableIt) - { - rSet.DisableItem(SID_DELETE_LAYER); - rSet.DisableItem(SID_RENAMELAYER); - } - } + sal_Bool bDisableIt = !IsLayerModeActive(); + bDisableIt |= (rName == String(SdResId(STR_LAYER_LAYOUT))); + bDisableIt |= (rName == String(SdResId(STR_LAYER_BCKGRND))); + bDisableIt |= (rName == String(SdResId(STR_LAYER_BCKGRNDOBJ))); + bDisableIt |= (rName == String(SdResId(STR_LAYER_CONTROLS))); + bDisableIt |= (rName == String(SdResId(STR_LAYER_MEASURELINES))); + + if (bDisableIt) + { + rSet.DisableItem(SID_DELETE_LAYER); + rSet.DisableItem(SID_RENAMELAYER); + } + } + else + { + OSL_ENSURE(false, "No LayerTabBar (!)"); + } + } if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_CUT ) || SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_COPY ) || Modified: openoffice/trunk/main/sd/source/ui/view/drviewsb.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/drviewsb.cxx?rev=1572807&r1=1572806&r2=1572807&view=diff ============================================================================== --- openoffice/trunk/main/sd/source/ui/view/drviewsb.cxx (original) +++ openoffice/trunk/main/sd/source/ui/view/drviewsb.cxx Fri Feb 28 02:15:29 2014 @@ -233,6 +233,14 @@ void DrawViewShell::FuTemp02(SfxRequest& case SID_MODIFYLAYER: { + if(!GetLayerTabControl()) // #87182# + { + OSL_ENSURE(false, "No LayerTabBar (!)"); + Cancel(); + rReq.Ignore(); + break; + } + if ( mpDrawView->IsTextEdit() ) { mpDrawView->SdrEndTextEdit(); @@ -387,8 +395,14 @@ void DrawViewShell::FuTemp02(SfxRequest& mpDrawView->SdrEndTextEdit(); } - GetLayerTabControl()->StartEditMode( - GetLayerTabControl()->GetCurPageId() ); + if(GetLayerTabControl()) // #87182# + { + GetLayerTabControl()->StartEditMode(GetLayerTabControl()->GetCurPageId()); + } + else + { + OSL_ENSURE(false, "No LayerTabBar (!)"); + } Cancel(); rReq.Ignore (); @@ -825,6 +839,12 @@ void DrawViewShell::ModifyLayer ( bool bIsLocked, bool bIsPrintable) { + if(!GetLayerTabControl()) // #87182# + { + OSL_ENSURE(false, "No LayerTabBar (!)"); + return; + } + if( pLayer ) { const sal_uInt16 nPageCount = GetLayerTabControl()->GetPageCount();