summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Schoenheit [fs] <frank.schoenheit@sun.com>2009-12-18 12:34:33 +0100
committerFrank Schoenheit [fs] <frank.schoenheit@sun.com>2009-12-18 12:34:33 +0100
commit2dc2be789dceecfddf91aa182d3a47f5c421c6b3 (patch)
treed2bafbb653af6b8d622745e9644b93d3bb71a76d
parent73005868eed0fe2c59bdc115f7f5af89411a4dbe (diff)
autorecovery: ensure that unsaved XML forms are properly recovered, by properly respecting the 'Hidden' load parameter
-rw-r--r--sfx2/inc/frmload.hxx3
-rw-r--r--sfx2/inc/sfx2/viewfrm.hxx2
-rw-r--r--sfx2/sdi/sfx.sdi10
-rw-r--r--sfx2/source/view/frmload.cxx7
-rw-r--r--sfx2/source/view/viewfrm.cxx16
5 files changed, 23 insertions, 15 deletions
diff --git a/sfx2/inc/frmload.hxx b/sfx2/inc/frmload.hxx
index 32217b786da8..0dedd89b3773 100644
--- a/sfx2/inc/frmload.hxx
+++ b/sfx2/inc/frmload.hxx
@@ -100,7 +100,8 @@ private:
sal_Bool impl_createNewDocWithSlotParam(
const USHORT _nSlotID,
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rxFrame
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rxFrame,
+ const bool i_bHidden
);
void impl_determineFilter(
diff --git a/sfx2/inc/sfx2/viewfrm.hxx b/sfx2/inc/sfx2/viewfrm.hxx
index d1f3d18b501b..23ff0e4c7d43 100644
--- a/sfx2/inc/sfx2/viewfrm.hxx
+++ b/sfx2/inc/sfx2/viewfrm.hxx
@@ -169,8 +169,8 @@ public:
static SfxViewFrame* LoadHiddenDocument( SfxObjectShell& i_rDoc, const USHORT i_nViewId );
static SfxViewFrame* LoadDocument( SfxObjectShell& i_rDoc, const USHORT i_nViewId );
static SfxViewFrame* LoadDocumentIntoFrame( SfxObjectShell& i_rDoc, const SfxFrameItem* i_pFrameItem, const USHORT i_nViewId = 0 );
- static SfxViewFrame* LoadDocumentIntoFrame( SfxObjectShell& i_rDoc, const SfxUnoFrameItem* i_pFrameItem, const USHORT i_nViewId = 0 );
static SfxViewFrame* LoadDocumentIntoFrame( SfxObjectShell& i_rDoc, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrameItem, const USHORT i_nViewId = 0 );
+ static SfxViewFrame* DisplayNewDocument( SfxObjectShell& i_rDoc, const SfxRequest& i_rCreateDocRequest, const USHORT i_nViewId = 0 );
static SfxViewFrame* Current();
static SfxViewFrame* GetFirst( const SfxObjectShell* pDoc = 0, BOOL bOnlyVisible = TRUE );
diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi
index e415c4d7287b..643389259e84 100644
--- a/sfx2/sdi/sfx.sdi
+++ b/sfx2/sdi/sfx.sdi
@@ -7489,7 +7489,7 @@ SfxVoidItem AutoPilotAddressDataSource SID_ADDRESS_DATA_SOURCE
//--------------------------------------------------------------------------
SfxVoidItem InsertBusinessCard FN_BUSINESS_CARD
-( SfxUnoFrameItem Frame SID_FILLFRAME )
+( SfxUnoFrameItem Frame SID_FILLFRAME, SfxBoolItem Hidden SID_HIDDEN )
[
/* flags: */
AutoUpdate = FALSE,
@@ -7514,7 +7514,7 @@ SfxVoidItem InsertBusinessCard FN_BUSINESS_CARD
//--------------------------------------------------------------------------
SfxVoidItem InsertLabels FN_LABEL
-( SfxUnoFrameItem Frame SID_FILLFRAME )
+( SfxUnoFrameItem Frame SID_FILLFRAME, SfxBoolItem Hidden SID_HIDDEN )
[
/* flags: */
AutoUpdate = FALSE,
@@ -7539,7 +7539,7 @@ SfxVoidItem InsertLabels FN_LABEL
//--------------------------------------------------------------------------
SfxVoidItem NewXForms FN_XFORMS_INIT
-( SfxUnoFrameItem Frame SID_FILLFRAME )
+( SfxUnoFrameItem Frame SID_FILLFRAME, SfxBoolItem Hidden SID_HIDDEN )
[
/* flags: */
AutoUpdate = FALSE,
@@ -7564,7 +7564,7 @@ SfxVoidItem NewXForms FN_XFORMS_INIT
//--------------------------------------------------------------------------
SfxVoidItem AutoPilotPresentations SID_SD_AUTOPILOT
-( SfxUnoFrameItem Frame SID_FILLFRAME )
+( SfxUnoFrameItem Frame SID_FILLFRAME, SfxBoolItem Hidden SID_HIDDEN )
[
/* flags: */
AutoUpdate = FALSE,
@@ -7589,7 +7589,7 @@ SfxVoidItem AutoPilotPresentations SID_SD_AUTOPILOT
//--------------------------------------------------------------------------
SfxVoidItem NewPresentation SID_NEWSD
-( SfxUnoFrameItem Frame SID_FILLFRAME )
+( SfxUnoFrameItem Frame SID_FILLFRAME, SfxBoolItem Hidden SID_HIDDEN )
[
/* flags: */
AutoUpdate = FALSE,
diff --git a/sfx2/source/view/frmload.cxx b/sfx2/source/view/frmload.cxx
index 956cef506201..761772a87cd1 100644
--- a/sfx2/source/view/frmload.cxx
+++ b/sfx2/source/view/frmload.cxx
@@ -256,10 +256,13 @@ namespace
}
// --------------------------------------------------------------------------------------------------------------------
-sal_Bool SfxFrameLoader_Impl::impl_createNewDocWithSlotParam( const USHORT _nSlotID, const Reference< XFrame >& i_rxFrame )
+sal_Bool SfxFrameLoader_Impl::impl_createNewDocWithSlotParam( const USHORT _nSlotID, const Reference< XFrame >& i_rxFrame,
+ const bool i_bHidden )
{
SfxRequest aRequest( _nSlotID, SFX_CALLMODE_SYNCHRON, SFX_APP()->GetPool() );
aRequest.AppendItem( SfxUnoFrameItem( SID_FILLFRAME, i_rxFrame ) );
+ if ( i_bHidden )
+ aRequest.AppendItem( SfxBoolItem( SID_HIDDEN, TRUE ) );
return lcl_getDispatchResult( SFX_APP()->ExecuteSlot( aRequest ) );
}
@@ -575,7 +578,7 @@ sal_Bool SAL_CALL SfxFrameLoader_Impl::load( const Sequence< PropertyValue >& rA
const USHORT nSlotParam = impl_findSlotParam( sFactory );
if ( nSlotParam != 0 )
{
- return impl_createNewDocWithSlotParam( nSlotParam, _rTargetFrame );
+ return impl_createNewDocWithSlotParam( nSlotParam, _rTargetFrame, aDescriptor.getOrDefault( "Hidden", false ) );
}
const bool bDescribesValidTemplate = impl_determineTemplateDocument( aDescriptor );
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index b22d60de46d7..17d5deb5fb1b 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -1998,10 +1998,6 @@ SfxViewFrame* SfxViewFrame::GetActiveChildFrame_Impl() const
SfxViewFrame* SfxViewFrame::LoadViewIntoFrame_Impl_NoThrow( const SfxObjectShell& i_rDoc, const Reference< XFrame >& i_rFrame,
const USHORT i_nViewId, const bool i_bHidden )
{
- OSL_PRECOND( !i_bHidden || !i_rFrame.is(),
- "SfxViewFrame::LoadViewIntoFrame_Impl_NoThrow: loading *hidden* into an *existing* frame is not supported!" );
- // Care for this frame's visibility yourself, please
-
Reference< XFrame > xFrame( i_rFrame );
bool bOwnFrame = false;
SfxViewShell* pSuccessView = NULL;
@@ -2112,9 +2108,17 @@ SfxViewFrame* SfxViewFrame::LoadDocumentIntoFrame( SfxObjectShell& i_rDoc, const
}
//--------------------------------------------------------------------
-SfxViewFrame* SfxViewFrame::LoadDocumentIntoFrame( SfxObjectShell& i_rDoc, const SfxUnoFrameItem* i_pFrameItem, const USHORT i_nViewId )
+SfxViewFrame* SfxViewFrame::DisplayNewDocument( SfxObjectShell& i_rDoc, const SfxRequest& i_rCreateDocRequest, const USHORT i_nViewId )
{
- return LoadViewIntoFrame_Impl_NoThrow( i_rDoc, i_pFrameItem ? i_pFrameItem->GetFrame() : NULL, i_nViewId, false );
+ SFX_REQUEST_ARG( i_rCreateDocRequest, pFrameItem, SfxUnoFrameItem, SID_FILLFRAME, FALSE );
+ SFX_REQUEST_ARG( i_rCreateDocRequest, pHiddenItem, SfxBoolItem, SID_HIDDEN, FALSE );
+
+ return LoadViewIntoFrame_Impl_NoThrow(
+ i_rDoc,
+ pFrameItem ? pFrameItem->GetFrame() : NULL,
+ i_nViewId,
+ pHiddenItem ? pHiddenItem->GetValue() : false
+ );
}
//--------------------------------------------------------------------