sw/inc/crsrsh.hxx                           |    1 
 sw/inc/viewsh.hxx                           |   21 +++-
 sw/source/core/crsr/crsrsh.cxx              |    8 -
 sw/source/core/inc/pagefrm.hxx              |    5 -
 sw/source/core/layout/pagechg.cxx           |   22 ++++-
 sw/source/core/layout/paintfrm.cxx          |   47 ++++++----
 sw/source/core/view/viewsh.cxx              |   21 +++-
 sw/source/core/view/vnew.cxx                |    9 +-
 sw/source/ui/docvw/FrameControlsManager.cxx |    9 +-
 sw/source/ui/docvw/HeaderFooterWin.cxx      |   19 +++-
 sw/source/ui/docvw/PageBreakWin.cxx         |   19 +++-
 sw/source/ui/docvw/edtwin.cxx               |  121 ++++++++++++++--------------
 sw/source/ui/inc/FrameControl.hxx           |    4 
 sw/source/ui/inc/FrameControlsManager.hxx   |   11 --
 sw/source/ui/inc/HeaderFooterWin.hxx        |    3 
 sw/source/ui/inc/PageBreakWin.hxx           |    3 
 sw/source/ui/inc/edtwin.hxx                 |   14 +--
 sw/source/ui/inc/wrtsh.hxx                  |    2 
 sw/source/ui/wrtsh/wrtsh1.cxx               |    6 -
 19 files changed, 211 insertions(+), 134 deletions(-)

New commits:
commit cce76e658af88813e17dea4f04388a29d7e582df
Author: Jan Holesovsky <ke...@suse.cz>
Date:   Thu Dec 29 13:42:43 2011 +0100

    Header/Footer: When editing, show only the appropriate conrol.
    
    Instead of showing both the header and footer controls, show only the
    footer-related if in footer, or header-related if in header.

diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx
index fd4a3d6..85b17a4 100644
--- a/sw/inc/viewsh.hxx
+++ b/sw/inc/viewsh.hxx
@@ -92,6 +92,12 @@ namespace vcl
     class OldStylePrintAdaptor;
 }
 
+enum FrameControlType
+{
+    PageBreak,
+    Header,
+    Footer
+};
 
 // Define for flags needed in ctor or layers below.
 // Currently the PreView flag is needed for DrawPage.
@@ -156,9 +162,10 @@ class SW_DLLPUBLIC ViewShell : public Ring
     sal_Bool  bEnableSmooth    :1;  // Disable SmoothScroll, e.g. for drag
                                     // of scrollbars.
     sal_Bool  bEndActionByVirDev:1; // Paints from EndAction always via 
virtual device
-    bool      bShowHeaderFooterSeparator:1;
-    bool      bHeaderFooterEdit:1;
                                     // (e.g. when browsing).
+    bool      bShowHeaderSeparator:1; //< Flag to say that we are showing the 
header control
+    bool      bShowFooterSeparator:1; //< Flag to say that we are showing the 
footer control
+    bool      bHeaderFooterEdit:1;  //< Flag to say that we are editing header 
or footer (according to the bShow(Header|Footer)Separator above)
 
     // boolean, indicating that class in in constructor.
     bool mbInConstructor:1;
@@ -565,10 +572,12 @@ public:
     const SwPostItMgr* GetPostItMgr() const { return 
(const_cast<ViewShell*>(this))->GetPostItMgr(); }
     SwPostItMgr* GetPostItMgr();
 
-    void ToggleHeaderFooterEdit( );
+    /// Acts both for headers / footers, depending on the 
bShow(Header|Footer)Separator flags
+    void ToggleHeaderFooterEdit();
+    /// Acts both for headers / footers, depending on the 
bShow(Header|Footer)Separator flags
     bool IsHeaderFooterEdit() const { return bHeaderFooterEdit; }
-    bool IsShowHeaderFooterSeparator() { return bShowHeaderFooterSeparator; }
-    virtual void SetShowHeaderFooterSeparator( bool bShow ) { 
bShowHeaderFooterSeparator = bShow; }
+    bool IsShowHeaderFooterSeparator( FrameControlType eControl ) { return 
(eControl == Header)? bShowHeaderSeparator: bShowFooterSeparator; }
+    virtual void SetShowHeaderFooterSeparator( FrameControlType eControl, bool 
bShow ) { if ( eControl == Header ) bShowHeaderSeparator = bShow; else 
bShowFooterSeparator = bShow; }
 };
 
 //---- class CurrShell manages global ShellPointer -------------------
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index bb55f6b..0d1efa3 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -1316,7 +1316,7 @@ void SwCrsrShell::UpdateCrsr( sal_uInt16 eFlags, sal_Bool 
bIdleEnd )
     }
 
     if ( IsInHeaderFooter() != IsHeaderFooterEdit() )
-        ToggleHeaderFooterEdit( );
+        ToggleHeaderFooterEdit();
 
     // #i27301#
     SwNotifyAccAboutInvalidTextSelections aInvalidateTextSelections( *this );
diff --git a/sw/source/core/inc/pagefrm.hxx b/sw/source/core/inc/pagefrm.hxx
index 1e16a98..779c4cd 100644
--- a/sw/source/core/inc/pagefrm.hxx
+++ b/sw/source/core/inc/pagefrm.hxx
@@ -28,7 +28,7 @@
 #ifndef _PAGEFRM_HXX
 #define _PAGEFRM_HXX
 
-
+#include <viewsh.hxx>
 #include <svl/svarray.hxx>
 
 #include "ftnboss.hxx"
@@ -359,7 +359,8 @@ public:
     // in case this is am empty page, this function returns the 'reference' 
page
     const SwPageFrm& GetFormatPage() const;
 
-    bool IsOverHeaderFooterArea( const Point& rPt ) const;
+    /// If in header or footer area, it also indicates the exact area in 
rControl.
+    bool IsOverHeaderFooterArea( const Point& rPt, FrameControlType &rControl 
) const;
 
     // return font used to paint the "empty page" string
     static const Font& GetEmptyPageFont();
diff --git a/sw/source/core/layout/pagechg.cxx 
b/sw/source/core/layout/pagechg.cxx
index 7e1c34f..79d7d1b 100644
--- a/sw/source/core/layout/pagechg.cxx
+++ b/sw/source/core/layout/pagechg.cxx
@@ -2449,7 +2449,7 @@ const SwPageFrm& SwPageFrm::GetFormatPage() const
     return *pRet;
 }
 
-bool SwPageFrm::IsOverHeaderFooterArea( const Point& rPt ) const
+bool SwPageFrm::IsOverHeaderFooterArea( const Point& rPt, FrameControlType 
&rControl ) const
 {
     long nUpperLimit = 0;
     long nLowerLimit = 0;
@@ -2470,10 +2470,24 @@ bool SwPageFrm::IsOverHeaderFooterArea( const Point& 
rPt ) const
     SwRect aHeaderArea( Frm().TopLeft(),
            Size( Frm().Width(), nUpperLimit - Frm().Top() ) );
 
-    SwRect aFooterArea( Point( Frm().Left(), nLowerLimit ),
-           Size( Frm().Width(), Frm().Bottom() - nLowerLimit ) );
+    if ( aHeaderArea.IsInside( rPt ) )
+    {
+        rControl = Header;
+        return true;
+    }
+    else
+    {
+        SwRect aFooterArea( Point( Frm().Left(), nLowerLimit ),
+                Size( Frm().Width(), Frm().Bottom() - nLowerLimit ) );
+
+        if ( aFooterArea.IsInside( rPt ) )
+        {
+            rControl = Footer;
+            return true;
+        }
+    }
 
-    return aHeaderArea.IsInside( rPt ) || aFooterArea.IsInside( rPt );
+    return false;
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/core/layout/paintfrm.cxx 
b/sw/source/core/layout/paintfrm.cxx
index 387d8a3..dd0c0a7 100755
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -3376,7 +3376,8 @@ void SwColumnFrm::PaintBreak( ) const
                 //      header/footer marker
                 //    * Non-printing characters are shown, as this is more 
consistent
                 //      with other formatting marks
-                if ( !pGlobalShell->IsShowHeaderFooterSeparator() &&
+                if ( !pGlobalShell->IsShowHeaderFooterSeparator( Header ) &&
+                     !pGlobalShell->IsShowHeaderFooterSeparator( Footer ) &&
                       pGlobalShell->GetViewOptions( )->IsLineBreak( ) )
                 {
                     SwRect aRect( pCnt->Prt() );
@@ -3468,36 +3469,42 @@ void SwPageFrm::PaintDecorators( ) const
             if ( pGlobalShell->GetOut()->GetOutDevType() != OUTDEV_PRINTER &&
                  !pGlobalShell->GetViewOptions()->IsPDFExport() &&
                  !pGlobalShell->IsPreView() &&
-                 pGlobalShell->IsShowHeaderFooterSeparator( ) )
+                 ( pGlobalShell->IsShowHeaderFooterSeparator( Header ) ||
+                   pGlobalShell->IsShowHeaderFooterSeparator( Footer ) ) )
             {
                 bool bRtl = Application::GetSettings().GetLayoutRTL();
-
-                // Header
-                const SwFrm* pHeaderFrm = Lower();
-                if ( !pHeaderFrm->IsHeaderFrm() )
-                    pHeaderFrm = NULL;
-
                 const SwRect& rVisArea = pGlobalShell->VisArea();
                 long nXOff = std::min( aBodyRect.Right(), rVisArea.Right() );
                 if ( bRtl )
                     nXOff = std::max( aBodyRect.Left(), rVisArea.Left() );
 
-                long nHeaderYOff = aBodyRect.Top();
-                Point nOutputOff = rEditWin.LogicToPixel( Point( nXOff, 
nHeaderYOff ) );
-                rEditWin.GetFrameControlsManager().SetHeaderFooterControl( 
this, true, nOutputOff );
+                // Header
+                if ( pGlobalShell->IsShowHeaderFooterSeparator( Header ) )
+                {
+                    const SwFrm* pHeaderFrm = Lower();
+                    if ( !pHeaderFrm->IsHeaderFrm() )
+                        pHeaderFrm = NULL;
+
+                    long nHeaderYOff = aBodyRect.Top();
+                    Point nOutputOff = rEditWin.LogicToPixel( Point( nXOff, 
nHeaderYOff ) );
+                    rEditWin.GetFrameControlsManager().SetHeaderFooterControl( 
this, Header, nOutputOff );
+                }
 
                 // Footer
-                const SwFrm* pFtnContFrm = Lower();
-                while ( pFtnContFrm )
+                if ( pGlobalShell->IsShowHeaderFooterSeparator( Footer ) )
                 {
-                    if ( pFtnContFrm->IsFtnContFrm() )
-                        aBodyRect.AddBottom( pFtnContFrm->Frm().Bottom() - 
aBodyRect.Bottom() );
-                    pFtnContFrm = pFtnContFrm->GetNext();
-                }
+                    const SwFrm* pFtnContFrm = Lower();
+                    while ( pFtnContFrm )
+                    {
+                        if ( pFtnContFrm->IsFtnContFrm() )
+                            aBodyRect.AddBottom( pFtnContFrm->Frm().Bottom() - 
aBodyRect.Bottom() );
+                        pFtnContFrm = pFtnContFrm->GetNext();
+                    }
 
-                long nFooterYOff = aBodyRect.Bottom();
-                nOutputOff = rEditWin.LogicToPixel( Point( nXOff, nFooterYOff 
) );
-                rEditWin.GetFrameControlsManager().SetHeaderFooterControl( 
this, false, nOutputOff );
+                    long nFooterYOff = aBodyRect.Bottom();
+                    Point nOutputOff = rEditWin.LogicToPixel( Point( nXOff, 
nFooterYOff ) );
+                    rEditWin.GetFrameControlsManager().SetHeaderFooterControl( 
this, Footer, nOutputOff );
+                }
             }
         }
     }
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 9e3bb9b..0413382 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -97,10 +97,20 @@ using namespace ::com::sun::star;
 void ViewShell::ToggleHeaderFooterEdit()
 {
     bHeaderFooterEdit = !bHeaderFooterEdit;
-    if ( bHeaderFooterEdit != IsShowHeaderFooterSeparator() )
-        SetShowHeaderFooterSeparator( bHeaderFooterEdit );
+    if ( !bHeaderFooterEdit )
+    {
+        SetShowHeaderFooterSeparator( Header, false );
+        SetShowHeaderFooterSeparator( Footer, false );
+    }
+
+    // Avoid corner case
+    if ( !IsShowHeaderFooterSeparator( Header ) &&
+         !IsShowHeaderFooterSeparator( Footer ) )
+    {
+        bHeaderFooterEdit = false;
+    }
 
-    // Repaint everything to update the colors of the selected area
+    // Repaint everything
     GetWin()->Invalidate();
 }
 
diff --git a/sw/source/core/view/vnew.cxx b/sw/source/core/view/vnew.cxx
index 647e649..1234c4d 100644
--- a/sw/source/core/view/vnew.cxx
+++ b/sw/source/core/view/vnew.cxx
@@ -151,8 +151,9 @@ ViewShell::ViewShell( SwDoc& rDocument, Window *pWindow,
     mpTmpRef( 0 ),
     pOpt( 0 ),
     pAccOptions( new SwAccessibilityOptions ),
-    bShowHeaderFooterSeparator( sal_False ),
-    bHeaderFooterEdit( sal_False ),
+    bShowHeaderSeparator( false ),
+    bShowFooterSeparator( false ),
+    bHeaderFooterEdit( false ),
     mpTargetPaintWindow(0),
     mpBufferedOut(0),
     pDoc( &rDocument ),
@@ -219,7 +220,9 @@ ViewShell::ViewShell( ViewShell& rShell, Window *pWindow,
     mpTmpRef( 0 ),
     pOpt( 0 ),
     pAccOptions( new SwAccessibilityOptions ),
-    bHeaderFooterEdit( sal_False ),
+    bShowHeaderSeparator( false ),
+    bShowFooterSeparator( false ),
+    bHeaderFooterEdit( false ),
     mpTargetPaintWindow(0),
     mpBufferedOut(0),
     pDoc( rShell.GetDoc() ),
diff --git a/sw/source/ui/docvw/FrameControlsManager.cxx 
b/sw/source/ui/docvw/FrameControlsManager.cxx
index 7267104..40527a6 100644
--- a/sw/source/ui/docvw/FrameControlsManager.cxx
+++ b/sw/source/ui/docvw/FrameControlsManager.cxx
@@ -149,11 +149,13 @@ void SwFrameControlsManager::SetReadonlyControls( bool 
bReadonly )
     }
 }
 
-void SwFrameControlsManager::SetHeaderFooterControl( const SwPageFrm* 
pPageFrm, bool bHeader, Point aOffset )
+void SwFrameControlsManager::SetHeaderFooterControl( const SwPageFrm* 
pPageFrm, FrameControlType eType, Point aOffset )
 {
+    OSL_ASSERT( eType == Header || eType == Footer );
+
     // Check if we already have the control
     SwFrameControlPtr pControl;
-    FrameControlType eType = bHeader? Header: Footer;
+    const bool bHeader = ( eType == Header );
 
     vector< SwFrameControlPtr >& aControls = m_aControls[eType];
 
diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx
index 729c4c8..4246c2c 100644
--- a/sw/source/ui/docvw/edtwin.cxx
+++ b/sw/source/ui/docvw/edtwin.cxx
@@ -3808,9 +3808,12 @@ void SwEditWin::MouseMove(const MouseEvent& _rMEvt)
             // Are we moving from or to header / footer area?
             if ( !rSh.IsHeaderFooterEdit() )
             {
-                bool bIsInHF = IsInHeaderFooter( aDocPt );
-                if ( rSh.IsShowHeaderFooterSeparator() != bIsInHF )
-                    ShowHeaderFooterSeparator( bIsInHF );
+                FrameControlType eControl;
+                bool bIsInHF = IsInHeaderFooter( aDocPt, eControl );
+                if ( !bIsInHF )
+                    ShowHeaderFooterSeparator( false, false );
+                else
+                    ShowHeaderFooterSeparator( eControl == Header, eControl == 
Footer );
             }
         }
         // no break;
@@ -5647,37 +5650,51 @@ void SwEditWin::ShowAutoTextCorrectQuickHelp(
         pQuickHlpData->Start( rSh, rWord.Len() );
 }
 
-void SwEditWin::ShowHeaderFooterSeparator( bool bShow )
+void SwEditWin::ShowHeaderFooterSeparator( bool bShowHeader, bool bShowFooter )
 {
     SwWrtShell& rSh = rView.GetWrtShell();
 
-    if ( rSh.IsShowHeaderFooterSeparator() != bShow )
+    if ( ( rSh.IsShowHeaderFooterSeparator( Header ) != bShowHeader ) ||
+         ( rSh.IsShowHeaderFooterSeparator( Footer ) != bShowFooter ) )
     {
-        rSh.SetShowHeaderFooterSeparator( bShow );
+        rSh.SetShowHeaderFooterSeparator( Header, bShowHeader );
+        rSh.SetShowHeaderFooterSeparator( Footer, bShowFooter );
         Invalidate();
     }
 }
 
-bool SwEditWin::IsInHeaderFooter( const Point &rDocPt ) const
+bool SwEditWin::IsInHeaderFooter( const Point &rDocPt, FrameControlType 
&rControl ) const
 {
     SwWrtShell &rSh = rView.GetWrtShell();
     const SwPageFrm* pPageFrm = rSh.GetLayout()->GetPageAtPos( rDocPt );
 
-    if ( pPageFrm && pPageFrm->IsOverHeaderFooterArea( rDocPt ) )
+    if ( pPageFrm && pPageFrm->IsOverHeaderFooterArea( rDocPt, rControl ) )
         return true;
 
-    if ( rSh.IsShowHeaderFooterSeparator() )
+    if ( rSh.IsShowHeaderFooterSeparator( Header ) || 
rSh.IsShowHeaderFooterSeparator( Footer ) )
     {
         SwFrameControlsManager &rMgr = 
rSh.GetView().GetEditWin().GetFrameControlsManager();
         Point aPoint( LogicToPixel( rDocPt ) );
 
-        SwFrameControlPtr pControl = rMgr.GetControl( Header, pPageFrm );
-        if ( pControl.get() && pControl->Contains( aPoint ) )
-            return true;
+        if ( rSh.IsShowHeaderFooterSeparator( Header ) )
+        {
+            SwFrameControlPtr pControl = rMgr.GetControl( Header, pPageFrm );
+            if ( pControl.get() && pControl->Contains( aPoint ) )
+            {
+                rControl = Header;
+                return true;
+            }
+        }
 
-        pControl = rMgr.GetControl( Footer, pPageFrm );
-        if ( pControl.get() && pControl->Contains( aPoint ) )
-            return true;
+        if ( rSh.IsShowHeaderFooterSeparator( Footer ) )
+        {
+            SwFrameControlPtr pControl = rMgr.GetControl( Footer, pPageFrm );
+            if ( pControl.get() && pControl->Contains( aPoint ) )
+            {
+                rControl = Footer;
+                return true;
+            }
+        }
     }
 
     return false;
diff --git a/sw/source/ui/inc/FrameControlsManager.hxx 
b/sw/source/ui/inc/FrameControlsManager.hxx
index ddfaaa0..ec78b1d 100644
--- a/sw/source/ui/inc/FrameControlsManager.hxx
+++ b/sw/source/ui/inc/FrameControlsManager.hxx
@@ -28,6 +28,7 @@
 #ifndef _FRAMECONTROLSMANAGER_HXX
 #define _FRAMECONTROLSMANAGER_HXX
 
+#include <viewsh.hxx>
 #include <FrameControl.hxx>
 
 #include <boost/shared_ptr.hpp>
@@ -39,13 +40,6 @@
 class SwPageFrm;
 class SwEditWin;
 
-enum FrameControlType
-{
-    PageBreak,
-    Header,
-    Footer
-};
-
 typedef boost::shared_ptr< SwFrameControl > SwFrameControlPtr;
 
 /** A container for the Header/Footer, or PageBreak controls.
@@ -71,7 +65,7 @@ class SwFrameControlsManager
         void SetReadonlyControls( bool bReadonly );
 
         // Helper methods
-        void SetHeaderFooterControl( const SwPageFrm* pPageFrm, bool bHeader, 
Point aOffset );
+        void SetHeaderFooterControl( const SwPageFrm* pPageFrm, 
FrameControlType eType, Point aOffset );
         void SetPageBreakControl( const SwPageFrm* pPageFrm );
 };
 
diff --git a/sw/source/ui/inc/edtwin.hxx b/sw/source/ui/inc/edtwin.hxx
index ca87b89..1f03374 100644
--- a/sw/source/ui/inc/edtwin.hxx
+++ b/sw/source/ui/inc/edtwin.hxx
@@ -229,10 +229,10 @@ protected:
                                 SvxAutoCorrect* pACorr, sal_Bool bFromIME = 
sal_False );
 
     /// Shows or hides the header & footer separators; only if there is a 
change.
-    void    ShowHeaderFooterSeparator( bool bShow );
+    void    ShowHeaderFooterSeparator( bool bShowHeader, bool bShowFooter );
 
     /// Returns true if in header/footer area, or in the header/footer control.
-    bool    IsInHeaderFooter( const Point &rDocPt ) const;
+    bool    IsInHeaderFooter( const Point &rDocPt, FrameControlType &rControl 
) const;
 public:
 
     void            UpdatePointer(const Point &, sal_uInt16 nButtons = 0);
diff --git a/sw/source/ui/inc/wrtsh.hxx b/sw/source/ui/inc/wrtsh.hxx
index 408da88..90e6296 100644
--- a/sw/source/ui/inc/wrtsh.hxx
+++ b/sw/source/ui/inc/wrtsh.hxx
@@ -491,7 +491,7 @@ typedef sal_Bool (SwWrtShell:: *FNSimpleMove)();
     const SwRedline* GotoRedline( sal_uInt16 nArrPos, sal_Bool bSelect = 
sal_False);
 
     void ChangeHeaderOrFooter(const String& rStyleName, sal_Bool bHeader, 
sal_Bool bOn, sal_Bool bShowWarning);
-    virtual void SetShowHeaderFooterSeparator( bool bShow );
+    virtual void SetShowHeaderFooterSeparator( FrameControlType eControl, bool 
bShow );
 
 private:
 
diff --git a/sw/source/ui/wrtsh/wrtsh1.cxx b/sw/source/ui/wrtsh/wrtsh1.cxx
index b67e433..d042c4d 100644
--- a/sw/source/ui/wrtsh/wrtsh1.cxx
+++ b/sw/source/ui/wrtsh/wrtsh1.cxx
@@ -1889,14 +1889,11 @@ void SwWrtShell::ChangeHeaderOrFooter(
     EndAllAction();
 }
 
-void SwWrtShell::SetShowHeaderFooterSeparator( bool bShow )
+void SwWrtShell::SetShowHeaderFooterSeparator( FrameControlType eControl, bool 
bShow )
 {
-    ViewShell::SetShowHeaderFooterSeparator( bShow );
+    ViewShell::SetShowHeaderFooterSeparator( eControl, bShow );
     if ( !bShow )
-    {
-        GetView().GetEditWin().GetFrameControlsManager().HideControls( Header 
);
-        GetView().GetEditWin().GetFrameControlsManager().HideControls( Footer 
);
-    }
+        GetView().GetEditWin().GetFrameControlsManager().HideControls( 
eControl );
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 64e08fd3c5980b74bb958dc566c229d92db18726
Author: Jan Holesovsky <ke...@suse.cz>
Date:   Wed Dec 28 20:01:57 2011 +0100

    Header/Footer: Show / hide the control immediately.
    
    - When the mouse pointer enters or leaves the headers / footers, show or 
hide
      the header / footer control immediately.  Waiting for that to appear is
      annoying; and similarly for disappearing - one usually ended up clicking 
the
      header / footer area to speed that up, and had a feeling of misbehaving.
    
    - Few related re-paint improvements

diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
index fac84b4..fba2e68 100644
--- a/sw/inc/crsrsh.hxx
+++ b/sw/inc/crsrsh.hxx
@@ -495,6 +495,7 @@ public:
     void SetReadOnlyAvailable( sal_Bool bFlag );
     sal_Bool IsOverReadOnlyPos( const Point& rPt ) const;
 
+    /// Is the rPt point in the header or footer area?
     sal_Bool IsOverHeaderFooterPos( const Point& rPt ) const;
 
     // Methods for aFlyMacroLnk.
diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx
index 241fb17..fd4a3d6 100644
--- a/sw/inc/viewsh.hxx
+++ b/sw/inc/viewsh.hxx
@@ -156,8 +156,8 @@ class SW_DLLPUBLIC ViewShell : public Ring
     sal_Bool  bEnableSmooth    :1;  // Disable SmoothScroll, e.g. for drag
                                     // of scrollbars.
     sal_Bool  bEndActionByVirDev:1; // Paints from EndAction always via 
virtual device
-    sal_Bool  bShowHeaderFooterSeparator;
-    sal_Bool  bHeaderFooterEdit;
+    bool      bShowHeaderFooterSeparator:1;
+    bool      bHeaderFooterEdit:1;
                                     // (e.g. when browsing).
 
     // boolean, indicating that class in in constructor.
@@ -566,9 +566,9 @@ public:
     SwPostItMgr* GetPostItMgr();
 
     void ToggleHeaderFooterEdit( );
-    sal_Bool IsHeaderFooterEdit( ) const { return bHeaderFooterEdit; }
-    sal_Bool IsShowHeaderFooterSeparator( ) { return 
bShowHeaderFooterSeparator; }
-    virtual void SetShowHeaderFooterSeparator( sal_Bool bShow ) { 
bShowHeaderFooterSeparator = bShow; }
+    bool IsHeaderFooterEdit() const { return bHeaderFooterEdit; }
+    bool IsShowHeaderFooterSeparator() { return bShowHeaderFooterSeparator; }
+    virtual void SetShowHeaderFooterSeparator( bool bShow ) { 
bShowHeaderFooterSeparator = bShow; }
 };
 
 //---- class CurrShell manages global ShellPointer -------------------
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index 5617665..bb55f6b 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -674,7 +674,7 @@ int SwCrsrShell::SetCrsr( const Point &rLPt, sal_Bool 
bOnlyText, bool bBlock )
 
     // Toggle the Header/Footer mode if needed
     bool bInHeaderFooter = pFrm && ( pFrm->IsHeaderFrm() || 
pFrm->IsFooterFrm() );
-    if ( bInHeaderFooter ^ (bool) IsHeaderFooterEdit() )
+    if ( bInHeaderFooter != IsHeaderFooterEdit() )
         ToggleHeaderFooterEdit();
 
     if( pBlockCrsr && bBlock )
@@ -1315,9 +1315,7 @@ void SwCrsrShell::UpdateCrsr( sal_uInt16 eFlags, sal_Bool 
bIdleEnd )
         return;             // wenn nicht, dann kein Update !!
     }
 
-    bool bInHeaderFooter = IsInHeaderFooter( );
-    if ( ( bInHeaderFooter && !IsHeaderFooterEdit( ) ) ||
-       ( !bInHeaderFooter && IsHeaderFooterEdit( ) ) )
+    if ( IsInHeaderFooter() != IsHeaderFooterEdit() )
         ToggleHeaderFooterEdit( );
 
     // #i27301#
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 41f1443..9e3bb9b 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -94,11 +94,14 @@ TYPEINIT0(ViewShell);
 
 using namespace ::com::sun::star;
 
-void ViewShell::ToggleHeaderFooterEdit( ) {
+void ViewShell::ToggleHeaderFooterEdit()
+{
     bHeaderFooterEdit = !bHeaderFooterEdit;
-    SetShowHeaderFooterSeparator( bHeaderFooterEdit );
+    if ( bHeaderFooterEdit != IsShowHeaderFooterSeparator() )
+        SetShowHeaderFooterSeparator( bHeaderFooterEdit );
+
     // Repaint everything to update the colors of the selected area
-    Paint( VisArea().SVRect() );
+    GetWin()->Invalidate();
 }
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/sw/source/ui/docvw/FrameControlsManager.cxx 
b/sw/source/ui/docvw/FrameControlsManager.cxx
index 2ee4886..7267104 100644
--- a/sw/source/ui/docvw/FrameControlsManager.cxx
+++ b/sw/source/ui/docvw/FrameControlsManager.cxx
@@ -153,8 +153,9 @@ void SwFrameControlsManager::SetHeaderFooterControl( const 
SwPageFrm* pPageFrm,
 {
     // Check if we already have the control
     SwFrameControlPtr pControl;
+    FrameControlType eType = bHeader? Header: Footer;
 
-    vector< SwFrameControlPtr >& aControls = m_aControls[HeaderFooter];
+    vector< SwFrameControlPtr >& aControls = m_aControls[eType];
 
     vector< SwFrameControlPtr >::iterator pIt = aControls.begin();
     while ( pIt != aControls.end() && !pControl.get() )
@@ -171,7 +172,7 @@ void SwFrameControlsManager::SetHeaderFooterControl( const 
SwPageFrm* pPageFrm,
         SwFrameControlPtr pNewControl( new SwHeaderFooterWin( m_pEditWin, 
pPageFrm, bHeader ) );
         const SwViewOption* pViewOpt = 
m_pEditWin->GetView().GetWrtShell().GetViewOptions();
         pNewControl->SetReadonly( pViewOpt->IsReadonly() );
-        AddControl( HeaderFooter, pNewControl );
+        AddControl( eType, pNewControl );
         pControl.swap( pNewControl );
     }
 
diff --git a/sw/source/ui/docvw/HeaderFooterWin.cxx 
b/sw/source/ui/docvw/HeaderFooterWin.cxx
index 64e75e4..b5a3c70 100644
--- a/sw/source/ui/docvw/HeaderFooterWin.cxx
+++ b/sw/source/ui/docvw/HeaderFooterWin.cxx
@@ -78,7 +78,7 @@ using namespace drawinglayer::primitive2d;
 
 namespace
 {
-    basegfx::BColor lcl_GetFillColor( basegfx::BColor aLineColor )
+    static basegfx::BColor lcl_GetFillColor( basegfx::BColor aLineColor )
     {
         basegfx::BColor aHslLine = basegfx::tools::rgb2hsl( aLineColor );
         double nLuminance = aHslLine.getZ() * 2.5;
@@ -90,7 +90,7 @@ namespace
         return basegfx::tools::hsl2rgb( aHslLine );
     }
 
-    basegfx::BColor lcl_GetLighterGradientColor( basegfx::BColor aDarkColor )
+    static basegfx::BColor lcl_GetLighterGradientColor( basegfx::BColor 
aDarkColor )
     {
         basegfx::BColor aHslDark = basegfx::tools::rgb2hsl( aDarkColor );
         double nLuminance = aHslDark.getZ() * 255 + 20;
@@ -98,7 +98,7 @@ namespace
         return basegfx::tools::hsl2rgb( aHslDark );
     }
 
-    B2DPolygon lcl_GetPolygon( const Rectangle& rRect, bool bHeader )
+    static B2DPolygon lcl_GetPolygon( const Rectangle& rRect, bool bHeader )
     {
         const double nRadius = 3;
         const double nKappa((M_SQRT2 - 1.0) * 4.0 / 3.0);
@@ -250,6 +250,19 @@ void SwHeaderFooterWin::ShowAll( bool bShow )
     }
 }
 
+bool SwHeaderFooterWin::Contains( const Point &rDocPt ) const
+{
+    Rectangle aRect( GetPosPixel(), GetSizePixel() );
+    if ( aRect.IsInside( rDocPt ) )
+        return true;
+
+    Rectangle aLineRect( m_pLine->GetPosPixel(), m_pLine->GetSizePixel() );
+    if ( aLineRect.IsInside( rDocPt ) )
+        return true;
+
+    return false;
+}
+
 void SwHeaderFooterWin::Paint( const Rectangle& )
 {
     const Rectangle aRect( Rectangle( Point( 0, 0 ), PixelToLogic( 
GetSizePixel() ) ) );
diff --git a/sw/source/ui/docvw/PageBreakWin.cxx 
b/sw/source/ui/docvw/PageBreakWin.cxx
index 7c1f00e..7e6232d 100644
--- a/sw/source/ui/docvw/PageBreakWin.cxx
+++ b/sw/source/ui/docvw/PageBreakWin.cxx
@@ -173,9 +173,8 @@ namespace
         if ( rMEvt.IsLeaveWindow() )
         {
             // don't fade if we just move to the 'button'
-            Rectangle aRect( m_pWin->GetPosPixel(), m_pWin->GetSizePixel() );
             Point aEventPos( GetPosPixel() + rMEvt.GetPosPixel() );
-            if ( !aRect.IsInside( aEventPos ) )
+            if ( !m_pWin->Contains( aEventPos ) )
                 m_pWin->Fade( false );
         }
         else if ( !m_pWin->IsVisible() )
@@ -402,9 +401,8 @@ void SwPageBreakWin::MouseMove( const MouseEvent& rMEvt )
     if ( rMEvt.IsLeaveWindow() )
     {
         // don't fade if we just move to the 'line', or the popup menu is open
-        Rectangle aRect( m_pLine->GetPosPixel(), m_pLine->GetSizePixel() );
         Point aEventPos( GetPosPixel() + rMEvt.GetPosPixel() );
-        if ( !aRect.IsInside( aEventPos ) && !PopupMenu::IsInExecute() )
+        if ( !Contains( aEventPos ) && !PopupMenu::IsInExecute() )
             Fade( false );
     }
     else if ( !IsVisible() )
@@ -504,6 +502,19 @@ void SwPageBreakWin::ShowAll( bool bShow )
     m_pLine->Show( bShow );
 }
 
+bool SwPageBreakWin::Contains( const Point &rDocPt ) const
+{
+    Rectangle aRect( GetPosPixel(), GetSizePixel() );
+    if ( aRect.IsInside( rDocPt ) )
+        return true;
+
+    Rectangle aLineRect( m_pLine->GetPosPixel(), m_pLine->GetSizePixel() );
+    if ( aLineRect.IsInside( rDocPt ) )
+        return true;
+
+    return false;
+}
+
 const SwPageFrm* SwPageBreakWin::GetPageFrame( )
 {
     return static_cast< const SwPageFrm * >( GetFrame( ) );
diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx
index 78d18fa..729c4c8 100644
--- a/sw/source/ui/docvw/edtwin.cxx
+++ b/sw/source/ui/docvw/edtwin.cxx
@@ -188,17 +188,17 @@ DBG_NAME(edithdl)
 
 namespace
 {
-    bool lcl_CheckHeaderFooterClick( SwWrtShell& rSh, const Point aDocPos, 
sal_uInt16 nClicks )
+    static bool lcl_CheckHeaderFooterClick( SwWrtShell& rSh, const Point 
&rDocPos, sal_uInt16 nClicks )
     {
         bool bRet = false;
 
-        sal_Bool bOverHdrFtr = rSh.IsOverHeaderFooterPos( aDocPos );
+        sal_Bool bOverHdrFtr = rSh.IsOverHeaderFooterPos( rDocPos );
         if ( ( rSh.IsHeaderFooterEdit( ) && !bOverHdrFtr ) ||
              ( !rSh.IsHeaderFooterEdit() && bOverHdrFtr ) )
         {
             bRet = true;
             // Check if there we are in a FlyFrm
-            Point aPt( aDocPos );
+            Point aPt( rDocPos );
             SwPaM aPam( *rSh.GetCurrentShellCursor().GetPoint() );
             rSh.GetLayout()->GetCrsrOfst( aPam.GetPoint(), aPt );
 
@@ -209,7 +209,7 @@ namespace
 
             if ( nClicks == nNbClicks )
             {
-                rSh.SwCrsrShell::SetCrsr( aDocPos );
+                rSh.SwCrsrShell::SetCrsr( rDocPos );
                 bRet = false;
             }
         }
@@ -1289,13 +1289,6 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt)
 {
     SwWrtShell &rSh = rView.GetWrtShell();
 
-    // Hide the header/footer separator if not editing a header of footer
-    if ( rSh.IsShowHeaderFooterSeparator( ) && !rSh.IsHeaderFooterEdit() )
-    {
-        rSh.SetShowHeaderFooterSeparator( sal_False );
-        aOverHeaderFooterTimer.Stop();
-    }
-
     if( rKEvt.GetKeyCode().GetCode() == KEY_ESCAPE &&
         pApplyTempl && pApplyTempl->pFormatClipboard )
     {
@@ -2624,23 +2617,6 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt)
 {
     SwWrtShell &rSh = rView.GetWrtShell();
 
-    // Hide the header/footer separator if not editing a header of footer
-    if ( rSh.IsShowHeaderFooterSeparator( ) && !rSh.IsHeaderFooterEdit() )
-    {
-        const Point aDocPt( PixelToLogic( _rMEvt.GetPosPixel() ) );
-        const SwPageFrm* pPageFrm = rSh.GetLayout()->GetPageAtPos( aDocPt );
-        if ( pPageFrm )
-        {
-            bool bOverHeadFoot = pPageFrm->IsOverHeaderFooterArea( aDocPt );
-
-            if ( !bOverHeadFoot )
-            {
-                rSh.SetShowHeaderFooterSeparator( sal_False );
-                aOverHeaderFooterTimer.Stop();
-            }
-        }
-    }
-
     // We have to check if a context menu is shown and we have an UI
     // active inplace client. In that case we have to ignore the mouse
     // button down event. Otherwise we would crash (context menu has been
@@ -3436,10 +3412,6 @@ void SwEditWin::MouseMove(const MouseEvent& _rMEvt)
 {
     MouseEvent rMEvt(_rMEvt);
 
-    // Mouse went out of the edit window: don't show the header/footer marker
-    if ( rMEvt.IsLeaveWindow() )
-        aOverHeaderFooterTimer.Stop();
-
     //ignore key modifiers for format paintbrush
     {
         sal_Bool bExecFormatPaintbrush = pApplyTempl && 
pApplyTempl->pFormatClipboard
@@ -3832,23 +3804,16 @@ void SwEditWin::MouseMove(const MouseEvent& _rMEvt)
             }
             else
                 rView.GetPostItMgr()->SetShadowState(0,false);
-                // no break;
 
-            // Are we over a header or footer area?
-            const SwPageFrm* pPageFrm = rSh.GetLayout()->GetPageAtPos( aDocPt 
);
-            if ( pPageFrm )
+            // Are we moving from or to header / footer area?
+            if ( !rSh.IsHeaderFooterEdit() )
             {
-                bool bOverHeadFoot = pPageFrm->IsOverHeaderFooterArea( aDocPt 
);
-                if ( bOverHeadFoot )
-                    aOverHeaderFooterTimer.Start();
-                else
-                {
-                    aOverHeaderFooterTimer.Stop();
-                    if ( !rSh.IsHeaderFooterEdit() && 
rSh.IsShowHeaderFooterSeparator() )
-                        aOverHeaderFooterTimer.Start();
-                }
+                bool bIsInHF = IsInHeaderFooter( aDocPt );
+                if ( rSh.IsShowHeaderFooterSeparator() != bIsInHF )
+                    ShowHeaderFooterSeparator( bIsInHF );
             }
         }
+        // no break;
         case KEY_SHIFT:
         case KEY_MOD2:
         case KEY_MOD1:
@@ -4608,9 +4573,6 @@ SwEditWin::SwEditWin(Window *pParent, SwView &rMyView):
     aKeyInputFlushTimer.SetTimeout( 200 );
     aKeyInputFlushTimer.SetTimeoutHdl(LINK(this, SwEditWin, 
KeyInputFlushHandler));
 
-    aOverHeaderFooterTimer.SetTimeout( 1000 );
-    aOverHeaderFooterTimer.SetTimeoutHdl(LINK(this, SwEditWin, 
OverHeaderFooterHandler));
-
     // TemplatePointer for colors should be resetted without
     // selection after single click
     aTemplateTimer.SetTimeout(400);
@@ -5431,18 +5393,6 @@ IMPL_LINK( SwEditWin, KeyInputTimerHandler, Timer *, 
EMPTYARG )
     return 0;
 }
 
-IMPL_LINK( SwEditWin, OverHeaderFooterHandler, Timer *, EMPTYARG )
-{
-    if ( !GetView().GetWrtShell().IsHeaderFooterEdit() && IsMouseOver() )
-    {
-        // Toggle the Header/Footer separator
-        sal_Bool bShown = GetView().GetWrtShell().IsShowHeaderFooterSeparator( 
);
-        GetView().GetWrtShell().SetShowHeaderFooterSeparator( !bShown );
-        Invalidate();
-    }
-    return 0;
-}
-
 void SwEditWin::_InitStaticData()
 {
     pQuickHlpData = new QuickHelpData();
@@ -5697,6 +5647,42 @@ void SwEditWin::ShowAutoTextCorrectQuickHelp(
         pQuickHlpData->Start( rSh, rWord.Len() );
 }
 
+void SwEditWin::ShowHeaderFooterSeparator( bool bShow )
+{
+    SwWrtShell& rSh = rView.GetWrtShell();
+
+    if ( rSh.IsShowHeaderFooterSeparator() != bShow )
+    {
+        rSh.SetShowHeaderFooterSeparator( bShow );
+        Invalidate();
+    }
+}
+
+bool SwEditWin::IsInHeaderFooter( const Point &rDocPt ) const
+{
+    SwWrtShell &rSh = rView.GetWrtShell();
+    const SwPageFrm* pPageFrm = rSh.GetLayout()->GetPageAtPos( rDocPt );
+
+    if ( pPageFrm && pPageFrm->IsOverHeaderFooterArea( rDocPt ) )
+        return true;
+
+    if ( rSh.IsShowHeaderFooterSeparator() )
+    {
+        SwFrameControlsManager &rMgr = 
rSh.GetView().GetEditWin().GetFrameControlsManager();
+        Point aPoint( LogicToPixel( rDocPt ) );
+
+        SwFrameControlPtr pControl = rMgr.GetControl( Header, pPageFrm );
+        if ( pControl.get() && pControl->Contains( aPoint ) )
+            return true;
+
+        pControl = rMgr.GetControl( Footer, pPageFrm );
+        if ( pControl.get() && pControl->Contains( aPoint ) )
+            return true;
+    }
+
+    return false;
+}
+
 void SwEditWin::SetUseInputLanguage( sal_Bool bNew )
 {
     if ( bNew || bUseInputLanguage )
diff --git a/sw/source/ui/inc/FrameControl.hxx 
b/sw/source/ui/inc/FrameControl.hxx
index 4e52918..cf887a9 100644
--- a/sw/source/ui/inc/FrameControl.hxx
+++ b/sw/source/ui/inc/FrameControl.hxx
@@ -30,6 +30,7 @@
 
 class SwEditWin;
 class SwFrm;
+struct Point;
 
 /** Class representing a control linked to a SwFrm.
   */
@@ -61,6 +62,9 @@ public:
 
     virtual void SetReadonly( bool bReadonly ) = 0;
     virtual void ShowAll( bool bShow ) = 0;
+
+    /// Returns true if the point is inside the control.
+    virtual bool Contains( const Point &rDocPt ) const = 0;
 };
 
 #endif
diff --git a/sw/source/ui/inc/FrameControlsManager.hxx 
b/sw/source/ui/inc/FrameControlsManager.hxx
index 453466e..ddfaaa0 100644
--- a/sw/source/ui/inc/FrameControlsManager.hxx
+++ b/sw/source/ui/inc/FrameControlsManager.hxx
@@ -42,11 +42,14 @@ class SwEditWin;
 enum FrameControlType
 {
     PageBreak,
-    HeaderFooter
+    Header,
+    Footer
 };
 
 typedef boost::shared_ptr< SwFrameControl > SwFrameControlPtr;
 
+/** A container for the Header/Footer, or PageBreak controls.
+*/
 class SwFrameControlsManager
 {
     private:
diff --git a/sw/source/ui/inc/HeaderFooterWin.hxx 
b/sw/source/ui/inc/HeaderFooterWin.hxx
index 247678e..c895b53 100644
--- a/sw/source/ui/inc/HeaderFooterWin.hxx
+++ b/sw/source/ui/inc/HeaderFooterWin.hxx
@@ -58,7 +58,8 @@ public:
     virtual void MouseButtonDown( const MouseEvent& rMEvt );
     virtual void Select( );
 
-    void ShowAll( bool bShow );
+    virtual void ShowAll( bool bShow );
+    virtual bool Contains( const Point &rDocPt ) const;
 
     bool IsHeader() { return m_bIsHeader; };
     bool IsEmptyHeaderFooter( );
diff --git a/sw/source/ui/inc/PageBreakWin.hxx 
b/sw/source/ui/inc/PageBreakWin.hxx
index fa2631c..e1967f3 100644
--- a/sw/source/ui/inc/PageBreakWin.hxx
+++ b/sw/source/ui/inc/PageBreakWin.hxx
@@ -59,7 +59,8 @@ public:
 
     void UpdatePosition( );
 
-    void ShowAll( bool bShow );
+    virtual void ShowAll( bool bShow );
+    virtual bool Contains( const Point &rDocPt ) const;
 
     const SwPageFrm* GetPageFrame( );
 
diff --git a/sw/source/ui/inc/edtwin.hxx b/sw/source/ui/inc/edtwin.hxx
index 8cdcb1b..ca87b89 100644
--- a/sw/source/ui/inc/edtwin.hxx
+++ b/sw/source/ui/inc/edtwin.hxx
@@ -100,11 +100,6 @@ friend void     PageNumNotify(  ViewShell* pVwSh,
     Timer           aKeyInputTimer;
     // timer for ANY-KeyInut question without a following KeyInputEvent
     Timer           aKeyInputFlushTimer;
-    /*
-     * timer for showing the Header/Footer separators when the mouse
-     * stays over a header or footer area for several seconds.
-     */
-    Timer           aOverHeaderFooterTimer;
 
     String          aInBuffer;
     LanguageType    eBufferLanguage;
@@ -199,9 +194,6 @@ friend void     PageNumNotify(  ViewShell* pVwSh,
     // timer for overlapping KeyInputs (e.g. for tables)
     DECL_LINK( KeyInputTimerHandler, Timer * );
 
-    // timer for hovering header/footer areas
-    DECL_LINK( OverHeaderFooterHandler, Timer * );
-
     // timer for ApplyTemplates via mouse (in disguise Drag&Drop)
     DECL_LINK( TemplateTimerHdl, Timer* );
 
@@ -235,6 +227,12 @@ protected:
 
     void    ShowAutoTextCorrectQuickHelp( const String& rWord, SvxAutoCorrCfg* 
pACfg,
                                 SvxAutoCorrect* pACorr, sal_Bool bFromIME = 
sal_False );
+
+    /// Shows or hides the header & footer separators; only if there is a 
change.
+    void    ShowHeaderFooterSeparator( bool bShow );
+
+    /// Returns true if in header/footer area, or in the header/footer control.
+    bool    IsInHeaderFooter( const Point &rDocPt ) const;
 public:
 
     void            UpdatePointer(const Point &, sal_uInt16 nButtons = 0);
diff --git a/sw/source/ui/inc/wrtsh.hxx b/sw/source/ui/inc/wrtsh.hxx
index 879ccbe..408da88 100644
--- a/sw/source/ui/inc/wrtsh.hxx
+++ b/sw/source/ui/inc/wrtsh.hxx
@@ -491,7 +491,7 @@ typedef sal_Bool (SwWrtShell:: *FNSimpleMove)();
     const SwRedline* GotoRedline( sal_uInt16 nArrPos, sal_Bool bSelect = 
sal_False);
 
     void ChangeHeaderOrFooter(const String& rStyleName, sal_Bool bHeader, 
sal_Bool bOn, sal_Bool bShowWarning);
-    virtual void SetShowHeaderFooterSeparator( sal_Bool bShow );
+    virtual void SetShowHeaderFooterSeparator( bool bShow );
 
 private:
 
diff --git a/sw/source/ui/wrtsh/wrtsh1.cxx b/sw/source/ui/wrtsh/wrtsh1.cxx
index 9dcda67..b67e433 100644
--- a/sw/source/ui/wrtsh/wrtsh1.cxx
+++ b/sw/source/ui/wrtsh/wrtsh1.cxx
@@ -1889,11 +1889,14 @@ void SwWrtShell::ChangeHeaderOrFooter(
     EndAllAction();
 }
 
-void SwWrtShell::SetShowHeaderFooterSeparator( sal_Bool bShow )
+void SwWrtShell::SetShowHeaderFooterSeparator( bool bShow )
 {
     ViewShell::SetShowHeaderFooterSeparator( bShow );
     if ( !bShow )
-        GetView().GetEditWin().GetFrameControlsManager().HideControls( 
HeaderFooter );
+    {
+        GetView().GetEditWin().GetFrameControlsManager().HideControls( Header 
);
+        GetView().GetEditWin().GetFrameControlsManager().HideControls( Footer 
);
+    }
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
_______________________________________________
Libreoffice-commits mailing list
Libreoffice-commits@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to