summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sfx2/shell.hxx4
-rw-r--r--include/sfx2/viewsh.hxx3
-rw-r--r--include/svx/fmshell.hxx4
-rw-r--r--sc/source/ui/inc/tabvwsh.hxx5
-rw-r--r--sfx2/source/view/viewfrm.cxx11
-rw-r--r--svx/source/form/fmview.cxx3
-rw-r--r--sw/source/core/uibase/app/docsh.cxx1
-rw-r--r--sw/source/core/uibase/inc/view.hxx6
8 files changed, 24 insertions, 13 deletions
diff --git a/include/sfx2/shell.hxx b/include/sfx2/shell.hxx
index 7047e4dccf46..451f120f0ec7 100644
--- a/include/sfx2/shell.hxx
+++ b/include/sfx2/shell.hxx
@@ -160,7 +160,7 @@ protected:
SfxShell();
SfxShell( SfxViewShell *pViewSh );
- SAL_DLLPRIVATE void SetViewShell_Impl( SfxViewShell* pView );
+ void SetViewShell_Impl( SfxViewShell* pView );
SAL_DLLPRIVATE void Invalidate_Impl( SfxBindings& rBindings, sal_uInt16 nId );
SAL_DLLPRIVATE SfxShellObject* GetShellObj_Impl() const;
SAL_DLLPRIVATE void SetShellObj_Impl( SfxShellObject* pObj );
@@ -202,6 +202,8 @@ public:
virtual void Invalidate(sal_uInt16 nId = 0);
+ virtual bool IsDesignMode() const { return false; };
+
bool IsActive() const;
virtual void Activate(bool bMDI);
virtual void Deactivate(bool bMDI);
diff --git a/include/sfx2/viewsh.hxx b/include/sfx2/viewsh.hxx
index 7c43c93c0c95..49099f149323 100644
--- a/include/sfx2/viewsh.hxx
+++ b/include/sfx2/viewsh.hxx
@@ -207,6 +207,9 @@ public:
void RemoveSubShell( SfxShell *pShell=NULL );
SfxShell* GetSubShell( sal_uInt16 );
+ virtual SfxShell* GetFormShell() { return 0; };
+ virtual const SfxShell* GetFormShell() const { return 0; };
+
// Focus, KeyInput, Cursor
void GotFocus() const;
inline void LostFocus() const;
diff --git a/include/svx/fmshell.hxx b/include/svx/fmshell.hxx
index b733b253d06c..40228fcd9efd 100644
--- a/include/svx/fmshell.hxx
+++ b/include/svx/fmshell.hxx
@@ -166,8 +166,8 @@ public:
const OutputDevice& i_rDevice
) const;
- bool IsDesignMode() const { return m_bDesignMode; }
- void SetDesignMode( bool _bDesignMode );
+ virtual bool IsDesignMode() const { return m_bDesignMode; }
+ void SetDesignMode( bool _bDesignMode );
protected:
void GetFormState(SfxItemSet &rSet, sal_uInt16 nWhich);
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index 9eeb6f825dfe..33c5b7ae6873 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -20,6 +20,7 @@
#ifndef INCLUDED_SC_SOURCE_UI_INC_TABVWSH_HXX
#define INCLUDED_SC_SOURCE_UI_INC_TABVWSH_HXX
+#include <svx/fmshell.hxx>
#include <svtools/htmlcfg.hxx>
#include <sfx2/viewsh.hxx>
#include <sfx2/viewfac.hxx>
@@ -33,7 +34,6 @@
#include <boost/ptr_container/ptr_map.hpp>
-class FmFormShell;
class SbxObject;
class SdrOle2Obj;
class SfxBindings;
@@ -376,7 +376,8 @@ public:
inline void SetScSbxObject( SbxObject* pOb )
{ pScSbxObject = pOb; }
- FmFormShell* GetFormShell() const { return pFormShell; }
+ virtual const FmFormShell* GetFormShell() const SAL_OVERRIDE { return pFormShell; }
+ virtual FmFormShell* GetFormShell() SAL_OVERRIDE { return pFormShell; }
void InsertURL( const OUString& rName, const OUString& rURL, const OUString& rTarget,
sal_uInt16 nMode );
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index 33e7d4c6d10a..9cb15a0f1444 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -859,8 +859,15 @@ void SfxViewFrame::StateReload_Impl( SfxItemSet& rSet )
{
case SID_EDITDOC:
{
- if ( !pSh || !pSh->HasName() || !( pSh->Get_Impl()->nLoadedFlags & SFX_LOADED_MAINDOCUMENT )
- || pSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
+ const SfxViewShell *pVSh;
+ const SfxShell *pFSh;
+ if ( !pSh ||
+ !pSh->HasName() ||
+ !( pSh->Get_Impl()->nLoadedFlags & SFX_LOADED_MAINDOCUMENT ) ||
+ ( pSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED &&
+ ( !(pVSh = pSh->GetViewShell()) ||
+ !(pFSh = pVSh->GetFormShell()) ||
+ !pFSh->IsDesignMode())))
rSet.DisableItem( SID_EDITDOC );
else
{
diff --git a/svx/source/form/fmview.cxx b/svx/source/form/fmview.cxx
index 702fd00ef0c1..c25657768961 100644
--- a/svx/source/form/fmview.cxx
+++ b/svx/source/form/fmview.cxx
@@ -130,9 +130,6 @@ void FmFormView::Init()
}
}
- if( pObjShell && pObjShell->IsReadOnly() )
- bInitDesignMode = false;
-
// dieses wird in der Shell vorgenommen
// bDesignMode = !bInitDesignMode; // erzwingt, dass SetDesignMode ausgefuehrt wird
SetDesignMode( bInitDesignMode );
diff --git a/sw/source/core/uibase/app/docsh.cxx b/sw/source/core/uibase/app/docsh.cxx
index 6272f021af8f..ab5621da9ed1 100644
--- a/sw/source/core/uibase/app/docsh.cxx
+++ b/sw/source/core/uibase/app/docsh.cxx
@@ -1076,6 +1076,7 @@ SfxStyleSheetBasePool* SwDocShell::GetStyleSheetPool()
void SwDocShell::SetView(SwView* pVw)
{
+ SetViewShell_Impl(pVw);
if ( 0 != (pView = pVw) )
pWrtShell = &pView->GetWrtShell();
else
diff --git a/sw/source/core/uibase/inc/view.hxx b/sw/source/core/uibase/inc/view.hxx
index 74e18fc16394..73c9810cda3a 100644
--- a/sw/source/core/uibase/inc/view.hxx
+++ b/sw/source/core/uibase/inc/view.hxx
@@ -29,6 +29,7 @@
#include <editeng/svxenum.hxx>
#include <sfx2/zoomitem.hxx>
#include <svx/svxids.hrc>
+#include <svx/fmshell.hxx>
#include <editeng/editstat.hxx>
#include "swdllapi.h"
#include <swtypes.hxx>
@@ -63,7 +64,6 @@ class SwEditWin;
class SwWrtShell;
class SwView_Impl;
struct SwSearchOptions;
-class FmFormShell;
class CommandEvent;
class InsCaptionOpt;
class SvGlobalName;
@@ -593,8 +593,8 @@ public:
SfxShell *GetCurShell() { return m_pShell; }
SwDocShell *GetDocShell();
inline const SwDocShell *GetDocShell() const;
- inline FmFormShell *GetFormShell() { return m_pFormShell; }
- inline const FmFormShell *GetFormShell() const { return m_pFormShell; }
+ inline virtual FmFormShell *GetFormShell() SAL_OVERRIDE { return m_pFormShell; }
+ inline virtual const FmFormShell *GetFormShell() const SAL_OVERRIDE { return m_pFormShell; }
// so that in the SubShells' DTors m_pShell can be reset if applicable
void ResetSubShell() { m_pShell = 0; }