sw/source/ui/app/swmodul1.cxx    |    8 ++++----
 sw/source/ui/inc/pview.hxx       |    5 ++++-
 sw/source/ui/inc/view.hxx        |    6 ++++++
 sw/source/ui/uiview/pview.cxx    |   27 +++++++++++++++++++++++++++
 sw/source/ui/uiview/view.cxx     |    4 ++--
 sw/source/ui/uiview/viewmdi.cxx  |   19 +++++++++++++++++--
 sw/source/ui/uiview/viewport.cxx |    9 +++++++++
 7 files changed, 69 insertions(+), 9 deletions(-)

New commits:
commit 28f2c6b826f1693dc5136d552e5446d3d52aa329
Author: Ivan Timofeev <timofeev....@gmail.com>
Date:   Thu Nov 8 12:47:21 2012 +0400

    fdo#35427: repair Tools > Options > Writer > View - Show Scroll Slider 
options
    
    Change-Id: I2bacd52a182a2dba3dbe6c6d63861470e87b6066

diff --git a/sw/source/ui/app/swmodul1.cxx b/sw/source/ui/app/swmodul1.cxx
index 0e5027a..b0621bd 100644
--- a/sw/source/ui/app/swmodul1.cxx
+++ b/sw/source/ui/app/swmodul1.cxx
@@ -84,11 +84,11 @@ static void lcl_SetUIPrefs(const SwViewOption &rPref, 
SwView* pView, ViewShell*
     // Scrollbars on / off
     if(bVScrollChanged)
     {
-        pView->ShowVScrollbar(pNewPref->IsViewVScrollBar());
+        pView->EnableVScrollbar(pNewPref->IsViewVScrollBar());
     }
     if(bHScrollChanged)
     {
-        pView->ShowHScrollbar( pNewPref->IsViewHScrollBar() || 
pNewPref->getBrowseMode() );
+        pView->EnableHScrollbar( pNewPref->IsViewHScrollBar() || 
pNewPref->getBrowseMode() );
     }
     //if only the position of the vertical ruler has been changed initiate an 
update
     if(bVAlignChanged && !bHScrollChanged && !bVScrollChanged)
@@ -163,8 +163,8 @@ void SwModule::ApplyUsrPref(const SwViewOption &rUsrPref, 
SwView* pActView,
     {
         if(!bViewOnly)
             pPref->SetUIOptions( rUsrPref );
-        pPPView->ShowVScrollbar(pPref->IsViewVScrollBar());
-        pPPView->ShowHScrollbar(pPref->IsViewHScrollBar());
+        pPPView->EnableVScrollbar(pPref->IsViewVScrollBar());
+        pPPView->EnableHScrollbar(pPref->IsViewHScrollBar());
         if(!bViewOnly)
         {
             pPref->SetPagePrevRow(rUsrPref.GetPagePrevRow());
diff --git a/sw/source/ui/inc/pview.hxx b/sw/source/ui/inc/pview.hxx
index 9cd0870..0ccf301 100644
--- a/sw/source/ui/inc/pview.hxx
+++ b/sw/source/ui/inc/pview.hxx
@@ -193,6 +193,8 @@ class SW_DLLPUBLIC SwPagePreView: public SfxViewShell
     // MDI control elements
     SwScrollbar             *pHScrollbar;
     SwScrollbar             *pVScrollbar;
+    bool                    mbHScrollbarEnabled;
+    bool                    mbVScrollbarEnabled;
     ImageButton             *pPageUpBtn,
                             *pPageDownBtn;
     // dummy window for filling the lower right edge when both scrollbars are 
active
@@ -269,8 +271,9 @@ public:
     void            ScrollViewSzChg();
     void            ScrollDocSzChg();
     void            ShowHScrollbar(sal_Bool bShow);
-
     void            ShowVScrollbar(sal_Bool bShow);
+    void            EnableHScrollbar(bool bEnable);
+    void            EnableVScrollbar(bool bEnable);
 
     sal_uInt16          GetPageCount() const        { return mnPageCount; }
     sal_uInt16      GetSelectedPage() const {return aViewWin.SelectedPage();}
diff --git a/sw/source/ui/inc/view.hxx b/sw/source/ui/inc/view.hxx
index 3494ed9..f32fcd9 100644
--- a/sw/source/ui/inc/view.hxx
+++ b/sw/source/ui/inc/view.hxx
@@ -210,6 +210,9 @@ class SW_DLLPUBLIC SwView: public SfxViewShell
     SwScrollbar         *pHScrollbar,   // MDI control elements
                         *pVScrollbar;
 
+    bool                mbHScrollbarEnabled;
+    bool                mbVScrollbarEnabled;
+
     Window              *pScrollFill;   // dummy window for filling the lower 
right edge
                                         // when both scrollbars are active
 
@@ -506,6 +509,9 @@ public:
     void            ShowVScrollbar(sal_Bool bShow);
     sal_Bool        IsVScrollbarVisible()const;
 
+    void            EnableHScrollbar(bool bEnable);
+    void            EnableVScrollbar(bool bEnable);
+
     int             CreateVLineal();
     int             KillVLineal();
     int             CreateTab();
diff --git a/sw/source/ui/uiview/pview.cxx b/sw/source/ui/uiview/pview.cxx
index f91e676..b06fc44 100644
--- a/sw/source/ui/uiview/pview.cxx
+++ b/sw/source/ui/uiview/pview.cxx
@@ -1142,6 +1142,9 @@ void SwPagePreView::Init(const SwViewOption * pPrefs)
     if( !pPrefs )
         pPrefs = SW_MOD()->GetUsrPref(sal_False);
 
+    mbHScrollbarEnabled = pPrefs->IsViewHScrollBar();
+    mbVScrollbarEnabled = pPrefs->IsViewVScrollBar();
+
     // die Felder aktualisieren
     // ACHTUNG: hochcasten auf die EditShell, um die SS zu nutzen.
     //          In den Methoden wird auf die akt. Shell abgefragt!
@@ -1661,6 +1664,9 @@ void SwPagePreView::ScrollViewSzChg()
             bShowVScrollbar = true;
         }
 
+        if (!mbVScrollbarEnabled)
+            bShowVScrollbar = false;
+
         ShowVScrollbar(bShowVScrollbar);
         pPageUpBtn->Show(bShowVScrollbar);
         pPageDownBtn->Show(bShowVScrollbar);
@@ -1689,6 +1695,9 @@ void SwPagePreView::ScrollViewSzChg()
             pHScrollbar->SetPageSize( nVisWidth / 2 );
         }
 
+        if (!mbHScrollbarEnabled)
+            bShowHScrollbar = false;
+
         ShowHScrollbar(bShowHScrollbar);
     }
     pScrollFill->Show(bShowVScrollbar && bShowHScrollbar);
@@ -1903,6 +1912,24 @@ void SwPagePreView::ShowVScrollbar(sal_Bool bShow)
     InvalidateBorder();
 }
 
+void SwPagePreView::EnableHScrollbar(bool bEnable)
+{
+    if (mbHScrollbarEnabled != bEnable)
+    {
+        mbHScrollbarEnabled = bEnable;
+        ScrollViewSzChg();
+    }
+}
+
+void SwPagePreView::EnableVScrollbar(bool bEnable)
+{
+    if (mbVScrollbarEnabled != bEnable)
+    {
+        mbVScrollbarEnabled = bEnable;
+        ScrollViewSzChg();
+    }
+}
+
 void SwPagePreView::SetZoom(SvxZoomType eType, sal_uInt16 nFactor)
 {
     ViewShell& rSh = *GetViewShell();
diff --git a/sw/source/ui/uiview/view.cxx b/sw/source/ui/uiview/view.cxx
index eae63ec..2b01ba5 100644
--- a/sw/source/ui/uiview/view.cxx
+++ b/sw/source/ui/uiview/view.cxx
@@ -956,8 +956,8 @@ SwView::SwView( SfxViewFrame *_pFrame, SfxViewShell* pOldSh 
)
     SetNewWindowAllowed(!bBrowse);
     // End of disabled multiple window
 
-    ShowVScrollbar(aUsrPref.IsViewVScrollBar());
-    ShowHScrollbar(aUsrPref.IsViewHScrollBar());
+    mbVScrollbarEnabled = aUsrPref.IsViewVScrollBar();
+    mbHScrollbarEnabled = aUsrPref.IsViewHScrollBar();
     pHScrollbar->SetAuto(bBrowse);
     if( aUsrPref.IsViewHRuler() )
         CreateTab();
diff --git a/sw/source/ui/uiview/viewmdi.cxx b/sw/source/ui/uiview/viewmdi.cxx
index 0152251..ee8c364 100644
--- a/sw/source/ui/uiview/viewmdi.cxx
+++ b/sw/source/ui/uiview/viewmdi.cxx
@@ -320,8 +320,6 @@ int SwView::_CreateScrollbar( sal_Bool bHori )
 
     (*ppScrollbar)->EnableDrag( sal_True );
 
-    (*ppScrollbar)->SetAuto( sal_True );
-
     if(GetWindow())
         InvalidateBorder();
 
@@ -670,5 +668,22 @@ sal_Bool SwView::IsVScrollbarVisible()const
     return pVScrollbar->IsVisible( sal_False );
 }
 
+void SwView::EnableHScrollbar(bool bEnable)
+{
+    if (mbHScrollbarEnabled != bEnable)
+    {
+        mbHScrollbarEnabled = bEnable;
+        InvalidateBorder();
+    }
+}
+
+void SwView::EnableVScrollbar(bool bEnable)
+{
+    if (mbVScrollbarEnabled != bEnable)
+    {
+        mbVScrollbarEnabled = bEnable;
+        InvalidateBorder();
+    }
+}
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/ui/uiview/viewport.cxx b/sw/source/ui/uiview/viewport.cxx
index e60273d..6b0b806 100644
--- a/sw/source/ui/uiview/viewport.cxx
+++ b/sw/source/ui/uiview/viewport.cxx
@@ -1076,6 +1076,15 @@ void SwView::OuterResizePixel( const Point &rOfst, const 
Size &rSize )
         bShowV = pVOpt->IsViewVScrollBar();
     }
 
+    if (!mbHScrollbarEnabled)
+    {
+        bHAuto = bShowH = false;
+    }
+    if (!mbVScrollbarEnabled)
+    {
+        bAuto = bShowV = false;
+    }
+
     SwDocShell* pDocSh = GetDocShell();
     sal_Bool bIsPreview = pDocSh->IsPreview();
     if( bIsPreview )
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to