summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-06-25 15:21:40 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-06-25 21:10:12 +0200
commit2cebba0e4042ca2cab37cf38874c2576c2ac6a6f (patch)
tree6d48a4057e4e6ff8f349ddba11e5d0d3122324f2 /sc/source
parent2ec032e01f03ae22ead30be77b8e89b861504128 (diff)
use common WeldEditView
Change-Id: I873cb64a167027030c9eeef61344e6f6f885a924 Reviewed-on: https://gerrit.libreoffice.org/74705 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/ui/inc/tphfedit.hxx39
-rw-r--r--sc/source/ui/pagedlg/tphfedit.cxx153
2 files changed, 39 insertions, 153 deletions
diff --git a/sc/source/ui/inc/tphfedit.hxx b/sc/source/ui/inc/tphfedit.hxx
index 87deb5f7a94b..ce47f287a6c4 100644
--- a/sc/source/ui/inc/tphfedit.hxx
+++ b/sc/source/ui/inc/tphfedit.hxx
@@ -23,7 +23,7 @@
#include <scdllapi.h>
#include <cppuhelper/weakref.hxx>
#include <tools/wintypes.hxx>
-#include <editeng/editview.hxx>
+#include <editeng/weldeditview.hxx>
#include <editeng/svxenum.hxx>
#include <vcl/customweld.hxx>
@@ -46,8 +46,7 @@ enum ScEditWindowLocation
Right
};
-class SC_DLLPUBLIC ScEditWindow : public weld::CustomWidgetController
- , public EditViewCallbacks
+class SC_DLLPUBLIC ScEditWindow : public WeldEditView
{
public:
ScEditWindow(ScEditWindowLocation eLoc, weld::Window* pParent);
@@ -65,40 +64,17 @@ public:
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessible() override;
- ScHeaderEditEngine* GetEditEngine() const { return pEdEngine.get(); }
+ ScHeaderEditEngine* GetEditEngine() const;
void SetObjectSelectHdl( const Link<ScEditWindow&,void>& aLink) { aObjectSelectLink = aLink; }
void SetGetFocusHdl(const std::function<void (ScEditWindow&)>& rLink) { m_GetFocusLink = rLink; }
protected:
- virtual void Paint( vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect ) override;
- virtual bool MouseMove( const MouseEvent& rMEvt ) override;
- virtual bool MouseButtonDown( const MouseEvent& rMEvt ) override;
- virtual bool MouseButtonUp( const MouseEvent& rMEvt ) override;
- virtual bool KeyInput( const KeyEvent& rKEvt ) override;
- virtual void GetFocus() override;
- virtual void LoseFocus() override;
- virtual void Resize() override;
-
- virtual void EditViewInvalidate(const tools::Rectangle& rRect) const override
- {
- weld::DrawingArea* pDrawingArea = GetDrawingArea();
- pDrawingArea->queue_draw_area(rRect.Left(), rRect.Top(), rRect.GetWidth(), rRect.GetHeight());
- }
-
- virtual void EditViewSelectionChange() const override
- {
- weld::DrawingArea* pDrawingArea = GetDrawingArea();
- pDrawingArea->queue_draw();
- }
-
- virtual OutputDevice& EditViewOutputDevice() const override
- {
- return GetDrawingArea()->get_ref_device();
- }
+ virtual void makeEditEngine() override;
+ virtual bool KeyInput( const KeyEvent& rKEvt ) override;
+ virtual void GetFocus() override;
+ virtual void LoseFocus() override;
private:
- std::unique_ptr<ScHeaderEditEngine> pEdEngine;
- std::unique_ptr<EditView> pEdView;
ScEditWindowLocation eLocation;
bool mbRTL;
weld::Window* mpDialog;
@@ -108,6 +84,7 @@ private:
Link<ScEditWindow&,void> aObjectSelectLink;
std::function<void (ScEditWindow&)> m_GetFocusLink;
+
};
#endif // INCLUDED_SC_SOURCE_UI_INC_TPHFEDIT_HXX
diff --git a/sc/source/ui/pagedlg/tphfedit.cxx b/sc/source/ui/pagedlg/tphfedit.cxx
index b515ab70d415..1dd7c64e2bc9 100644
--- a/sc/source/ui/pagedlg/tphfedit.cxx
+++ b/sc/source/ui/pagedlg/tphfedit.cxx
@@ -68,49 +68,30 @@ ScEditWindow::ScEditWindow(ScEditWindowLocation eLoc, weld::Window* pDialog)
{
}
+void ScEditWindow::makeEditEngine()
+{
+ m_xEditEngine.reset(new ScHeaderEditEngine(EditEngine::CreatePool()));
+}
+
+ScHeaderEditEngine* ScEditWindow::GetEditEngine() const
+{
+ return static_cast<ScHeaderEditEngine*>(m_xEditEngine.get());
+}
+
void ScEditWindow::SetDrawingArea(weld::DrawingArea* pDrawingArea)
{
OutputDevice& rDevice = pDrawingArea->get_ref_device();
-
Size aSize = rDevice.LogicToPixel(Size(80, 120), MapMode(MapUnit::MapAppFont));
pDrawingArea->set_size_request(aSize.Width(), aSize.Height());
- SetOutputSizePixel(aSize);
-
- weld::CustomWidgetController::SetDrawingArea(pDrawingArea);
-
- EnableRTL(false);
-
- const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
- Color aBgColor = rStyleSettings.GetWindowColor();
-
- rDevice.SetMapMode(MapMode(MapUnit::MapTwip));
- rDevice.SetBackground(aBgColor);
-
- Size aOutputSize(rDevice.PixelToLogic(aSize));
- aSize = aOutputSize;
- aSize.setHeight( aSize.Height() * 4 );
- pEdEngine.reset( new ScHeaderEditEngine( EditEngine::CreatePool() ) );
- pEdEngine->SetPaperSize( aSize );
- pEdEngine->SetRefDevice( &rDevice );
+ WeldEditView::SetDrawingArea(pDrawingArea);
ScHeaderFieldData aData;
- lcl_GetFieldData( aData );
-
+ lcl_GetFieldData(aData);
// fields
- pEdEngine->SetData( aData );
- pEdEngine->SetControlWord( pEdEngine->GetControlWord() | EEControlBits::MARKFIELDS );
+ GetEditEngine()->SetData(aData);
if (mbRTL)
- pEdEngine->SetDefaultHorizontalTextDirection(EEHorizontalTextDirection::R2L);
-
- pEdView.reset(new EditView(pEdEngine.get(), nullptr));
- pEdView->setEditViewCallbacks(this);
- pEdView->SetOutputArea(tools::Rectangle(Point(0,0), aOutputSize));
-
- pEdView->SetBackgroundColor( aBgColor );
- pEdEngine->InsertView( pEdView.get() );
-
- pDrawingArea->set_cursor(PointerStyle::Text);
+ m_xEditEngine->SetDefaultHorizontalTextDirection(EEHorizontalTextDirection::R2L);
if (pAcc)
{
@@ -128,22 +109,11 @@ void ScEditWindow::SetDrawingArea(weld::DrawingArea* pDrawingArea)
break;
}
- pAcc->InitAcc(nullptr, pEdView.get(), nullptr,
+ pAcc->InitAcc(nullptr, m_xEditView.get(), nullptr,
sName, pDrawingArea->get_tooltip_text());
}
}
-void ScEditWindow::Resize()
-{
- OutputDevice& rDevice = GetDrawingArea()->get_ref_device();
- Size aOutputSize(rDevice.PixelToLogic(GetOutputSizePixel()));
- Size aSize(aOutputSize);
- aSize.setHeight( aSize.Height() * 4 );
- pEdEngine->SetPaperSize(aSize);
- pEdView->SetOutputArea(tools::Rectangle(Point(0,0), aOutputSize));
- weld::CustomWidgetController::Resize();
-}
-
ScEditWindow::~ScEditWindow()
{
// delete Accessible object before deleting EditEngine and EditView
@@ -153,14 +123,13 @@ ScEditWindow::~ScEditWindow()
if (xTemp.is())
pAcc->dispose();
}
- pEdEngine.reset();
- pEdView.reset();
}
void ScEditWindow::SetNumType(SvxNumType eNumType)
{
- pEdEngine->SetNumType(eNumType);
- pEdEngine->UpdateFields();
+ ScHeaderEditEngine* pEditEngine = GetEditEngine();
+ pEditEngine->SetNumType(eNumType);
+ pEditEngine->UpdateFields();
}
std::unique_ptr<EditTextObject> ScEditWindow::CreateTextObject()
@@ -168,17 +137,17 @@ std::unique_ptr<EditTextObject> ScEditWindow::CreateTextObject()
// reset paragraph attributes
// (GetAttribs at creation of format dialog always returns the set items)
- const SfxItemSet& rEmpty = pEdEngine->GetEmptyItemSet();
- sal_Int32 nParCnt = pEdEngine->GetParagraphCount();
+ const SfxItemSet& rEmpty = m_xEditEngine->GetEmptyItemSet();
+ sal_Int32 nParCnt = m_xEditEngine->GetParagraphCount();
for (sal_Int32 i=0; i<nParCnt; i++)
- pEdEngine->SetParaAttribs( i, rEmpty );
+ m_xEditEngine->SetParaAttribs( i, rEmpty );
- return pEdEngine->CreateTextObject();
+ return m_xEditEngine->CreateTextObject();
}
void ScEditWindow::SetFont( const ScPatternAttr& rPattern )
{
- auto pSet = std::make_unique<SfxItemSet>( pEdEngine->GetEmptyItemSet() );
+ auto pSet = std::make_unique<SfxItemSet>( m_xEditEngine->GetEmptyItemSet() );
rPattern.FillEditItemSet( pSet.get() );
// FillEditItemSet adjusts font height to 1/100th mm,
// but for header/footer twips is needed, as in the PatternAttr:
@@ -187,17 +156,17 @@ void ScEditWindow::SetFont( const ScPatternAttr& rPattern )
pSet->Put( rPattern.GetItem(ATTR_CTL_FONT_HEIGHT).CloneSetWhich(EE_CHAR_FONTHEIGHT_CTL) );
if (mbRTL)
pSet->Put( SvxAdjustItem( SvxAdjust::Right, EE_PARA_JUST ) );
- pEdEngine->SetDefaults( std::move(pSet) );
+ GetEditEngine()->SetDefaults( std::move(pSet) );
}
void ScEditWindow::SetText( const EditTextObject& rTextObject )
{
- pEdEngine->SetText( rTextObject );
+ m_xEditEngine->SetText( rTextObject );
}
void ScEditWindow::InsertField( const SvxFieldItem& rFld )
{
- pEdView->InsertField( rFld );
+ m_xEditView->InsertField( rFld );
}
void ScEditWindow::SetCharAttributes()
@@ -215,7 +184,7 @@ void ScEditWindow::SetCharAttributes()
{
if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(true);
- SfxItemSet aSet( pEdView->GetAttribs() );
+ SfxItemSet aSet( m_xEditView->GetAttribs() );
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
@@ -226,70 +195,13 @@ void ScEditWindow::SetCharAttributes()
{
aSet.ClearItem();
aSet.Put( *pDlg->GetOutputItemSet() );
- pEdView->SetAttribs( aSet );
+ m_xEditView->SetAttribs( aSet );
}
if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(false);
}
}
-void ScEditWindow::Paint( vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect )
-{
- //note: ClassificationEditView::Paint is similar
-
- rRenderContext.Push(PushFlags::ALL);
- rRenderContext.SetClipRegion();
-
- const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
- Color aBgColor = rStyleSettings.GetWindowColor();
-
- pEdView->SetBackgroundColor( aBgColor );
-
- rRenderContext.SetBackground( aBgColor );
-
- tools::Rectangle aLogicRect(rRenderContext.PixelToLogic(rRect));
- pEdView->Paint(aLogicRect, &rRenderContext);
-
- if (HasFocus())
- {
- pEdView->ShowCursor();
- vcl::Cursor* pCursor = pEdView->GetCursor();
- pCursor->DrawToDevice(rRenderContext);
- }
-
- std::vector<tools::Rectangle> aLogicRects;
-
- // get logic selection
- pEdView->GetSelectionRectangles(aLogicRects);
-
- rRenderContext.SetLineColor();
- rRenderContext.SetFillColor(COL_BLACK);
- rRenderContext.SetRasterOp(RasterOp::Invert);
-
- for (const auto &rSelectionRect : aLogicRects)
- rRenderContext.DrawRect(rSelectionRect);
-
- rRenderContext.Pop();
-}
-
-bool ScEditWindow::MouseMove( const MouseEvent& rMEvt )
-{
- return pEdView->MouseMove( rMEvt );
-}
-
-bool ScEditWindow::MouseButtonDown( const MouseEvent& rMEvt )
-{
- if ( !HasFocus() )
- GrabFocus();
-
- return pEdView->MouseButtonDown( rMEvt );
-}
-
-bool ScEditWindow::MouseButtonUp( const MouseEvent& rMEvt )
-{
- return pEdView->MouseButtonUp( rMEvt );
-}
-
bool ScEditWindow::KeyInput( const KeyEvent& rKEvt )
{
sal_uInt16 nKey = rKEvt.GetKeyCode().GetModifier()
@@ -299,7 +211,7 @@ bool ScEditWindow::KeyInput( const KeyEvent& rKEvt )
{
return false;
}
- else if ( !pEdView->PostKeyEvent( rKEvt ) )
+ else if ( !m_xEditView->PostKeyEvent( rKEvt ) )
{
return false;
}
@@ -314,8 +226,6 @@ bool ScEditWindow::KeyInput( const KeyEvent& rKEvt )
void ScEditWindow::GetFocus()
{
- pEdView->ShowCursor();
-
assert(m_GetFocusLink);
m_GetFocusLink(*this);
@@ -327,7 +237,7 @@ void ScEditWindow::GetFocus()
else
pAcc = nullptr;
- weld::CustomWidgetController::GetFocus();
+ WeldEditView::GetFocus();
}
void ScEditWindow::LoseFocus()
@@ -339,8 +249,7 @@ void ScEditWindow::LoseFocus()
}
else
pAcc = nullptr;
- weld::CustomWidgetController::LoseFocus();
- Invalidate(); // redraw without cursor
+ WeldEditView::LoseFocus();
}
css::uno::Reference< css::accessibility::XAccessible > ScEditWindow::CreateAccessible()