tdf#117388 use native scrollbar under gtk in writer's html source view
Change-Id: I233745165140ff47d9bb462ad2248fdb8d9dd3e1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137854
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sw/source/uibase/docvw/srcedtw.cxx b/sw/source/uibase/docvw/srcedtw.cxx
index cbd0f13..71ee88e 100644
--- a/sw/source/uibase/docvw/srcedtw.cxx
+++ b/sw/source/uibase/docvw/srcedtw.cxx
@@ -33,7 +33,6 @@
#include <vcl/event.hxx>
#include <vcl/svapp.hxx>
#include <vcl/textview.hxx>
#include <vcl/scrbar.hxx>
#include <vcl/ptrstyle.hxx>
#include <sfx2/dispatch.hxx>
#include <sfx2/viewfrm.hxx>
@@ -44,6 +43,7 @@
#include <editeng/flstitem.hxx>
#include <vcl/metric.hxx>
#include <svtools/ctrltool.hxx>
#include <svtools/scrolladaptor.hxx>
#include <tools/time.hxx>
#include <swmodule.hxx>
#include <docsh.hxx>
@@ -490,15 +490,14 @@ void SwSrcEditWindow::CreateTextEngine()
m_pOutWin->Show();
// create Scrollbars
m_pHScrollbar = VclPtr<ScrollBar>::Create(this, WB_3DLOOK |WB_HSCROLL|WB_DRAG);
m_pHScrollbar = VclPtr<ScrollAdaptor>::Create(this, true);
m_pHScrollbar->EnableRTL( false );
m_pHScrollbar->SetScrollHdl(LINK(this, SwSrcEditWindow, ScrollHdl));
m_pHScrollbar->SetScrollHdl(LINK(this, SwSrcEditWindow, HorzScrollHdl));
m_pHScrollbar->Show();
m_pVScrollbar = VclPtr<ScrollBar>::Create(this, WB_3DLOOK |WB_VSCROLL|WB_DRAG);
m_pVScrollbar = VclPtr<ScrollAdaptor>::Create(this, false);
m_pVScrollbar->EnableRTL( false );
m_pVScrollbar->SetScrollHdl(LINK(this, SwSrcEditWindow, ScrollHdl));
m_pHScrollbar->EnableDrag();
m_pVScrollbar->SetScrollHdl(LINK(this, SwSrcEditWindow, VertScrollHdl));
m_pVScrollbar->Show();
m_pTextEngine.reset(new ExtTextEngine);
@@ -555,22 +554,21 @@ void SwSrcEditWindow::InitScrollBars()
}
IMPL_LINK(SwSrcEditWindow, ScrollHdl, ScrollBar*, pScroll, void)
IMPL_LINK_NOARG(SwSrcEditWindow, HorzScrollHdl, weld::Scrollbar&, void)
{
if(pScroll == m_pVScrollbar)
{
tools::Long nDiff = m_pTextView->GetStartDocPos().Y() - pScroll->GetThumbPos();
GetTextView()->Scroll( 0, nDiff );
m_pTextView->ShowCursor( false );
pScroll->SetThumbPos( m_pTextView->GetStartDocPos().Y() );
}
else
{
tools::Long nDiff = m_pTextView->GetStartDocPos().X() - pScroll->GetThumbPos();
GetTextView()->Scroll( nDiff, 0 );
m_pTextView->ShowCursor( false );
pScroll->SetThumbPos( m_pTextView->GetStartDocPos().X() );
}
tools::Long nDiff = m_pTextView->GetStartDocPos().X() - m_pHScrollbar->GetThumbPos();
GetTextView()->Scroll( nDiff, 0 );
m_pTextView->ShowCursor( false );
m_pHScrollbar->SetThumbPos( m_pTextView->GetStartDocPos().X() );
GetSrcView()->GetViewFrame()->GetBindings().Invalidate( SID_TABLE_CELL );
}
IMPL_LINK_NOARG(SwSrcEditWindow, VertScrollHdl, weld::Scrollbar&, void)
{
tools::Long nDiff = m_pTextView->GetStartDocPos().Y() - m_pVScrollbar->GetThumbPos();
GetTextView()->Scroll( 0, nDiff );
m_pTextView->ShowCursor( false );
m_pVScrollbar->SetThumbPos( m_pTextView->GetStartDocPos().Y() );
GetSrcView()->GetViewFrame()->GetBindings().Invalidate( SID_TABLE_CELL );
}
diff --git a/sw/source/uibase/inc/srcedtw.hxx b/sw/source/uibase/inc/srcedtw.hxx
index 0042060..030f510 100644
--- a/sw/source/uibase/inc/srcedtw.hxx
+++ b/sw/source/uibase/inc/srcedtw.hxx
@@ -29,7 +29,8 @@
#include <set>
namespace com::sun::star::beans { class XMultiPropertySet; }
class ScrollBar;
namespace weld { class Scrollbar; }
class ScrollAdaptor;
class SwSrcView;
class SwSrcEditWindow;
class TextEngine;
@@ -65,7 +66,7 @@ private:
std::unique_ptr<ExtTextEngine> m_pTextEngine;
VclPtr<TextViewOutWin> m_pOutWin;
VclPtr<ScrollBar> m_pHScrollbar,
VclPtr<ScrollAdaptor> m_pHScrollbar,
m_pVScrollbar;
SwSrcView* m_pSrcView;
@@ -95,14 +96,14 @@ private:
virtual void Resize() override;
virtual void DataChanged( const DataChangedEvent& ) override;
virtual void GetFocus() override;
// virtual void LoseFocus();
void CreateTextEngine();
void DoSyntaxHighlight( sal_uInt16 nPara );
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
DECL_LINK(ScrollHdl, ScrollBar*, void);
DECL_LINK(HorzScrollHdl, weld::Scrollbar&, void);
DECL_LINK(VertScrollHdl, weld::Scrollbar&, void);
public:
SwSrcEditWindow( vcl::Window* pParent, SwSrcView* pParentView );