summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/Accessibility/AccessibleText.cxx14
-rw-r--r--sc/source/ui/app/inputwin.cxx10
-rw-r--r--sc/source/ui/inc/inputwin.hxx5
3 files changed, 22 insertions, 7 deletions
diff --git a/sc/source/ui/Accessibility/AccessibleText.cxx b/sc/source/ui/Accessibility/AccessibleText.cxx
index d8387a755ec0..63ca5b087b66 100644
--- a/sc/source/ui/Accessibility/AccessibleText.cxx
+++ b/sc/source/ui/Accessibility/AccessibleText.cxx
@@ -1040,7 +1040,7 @@ ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData()
delete mpEditEngine;
mpEditEngine = nullptr; // don't access in ScAccessibleEditObjectTextData dtor!
}
- else if (pTxtWnd && pTxtWnd->GetEditView() && pTxtWnd->GetEditView()->GetEditEngine())
+ else if (pTxtWnd && pTxtWnd->HasEditView() && pTxtWnd->GetEditView()->GetEditEngine())
{
// the NotifyHdl also has to be removed from the ScTextWnd's EditEngine
// (it's set in ScAccessibleEditLineTextData::GetTextForwarder, and mpEditEngine
@@ -1074,9 +1074,10 @@ SvxTextForwarder* ScAccessibleEditLineTextData::GetTextForwarder()
if (pTxtWnd)
{
- mpEditView = pTxtWnd->GetEditView();
- if (mpEditView)
+ if (pTxtWnd->HasEditView())
{
+ mpEditView = pTxtWnd->GetEditView();
+
if (mbEditEngineCreated && mpEditEngine)
ResetEditMode();
mbEditEngineCreated = false;
@@ -1087,6 +1088,8 @@ SvxTextForwarder* ScAccessibleEditLineTextData::GetTextForwarder()
}
else
{
+ mpEditView = nullptr;
+
if (mpEditEngine && !mbEditEngineCreated)
ResetEditMode();
if (!mpEditEngine)
@@ -1120,8 +1123,7 @@ SvxEditViewForwarder* ScAccessibleEditLineTextData::GetEditViewForwarder( bool b
if (pTxtWnd)
{
- mpEditView = pTxtWnd->GetEditView();
- if (!mpEditView && bCreate)
+ if (!pTxtWnd->HasEditView() && bCreate)
{
if ( !pTxtWnd->IsInputActive() )
{
@@ -1142,7 +1144,7 @@ void ScAccessibleEditLineTextData::ResetEditMode()
if (mbEditEngineCreated && mpEditEngine)
delete mpEditEngine;
- else if (pTxtWnd && pTxtWnd->GetEditView() && pTxtWnd->GetEditView()->GetEditEngine())
+ else if (pTxtWnd && pTxtWnd->HasEditView() && pTxtWnd->GetEditView()->GetEditEngine())
pTxtWnd->GetEditView()->GetEditEngine()->SetNotifyHdl(Link<EENotify&,void>());
mpEditEngine = nullptr;
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index 024df03a0ad2..d290deb6357c 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -878,6 +878,11 @@ EditView* ScInputBarGroup::GetEditView()
return maTextWnd->GetEditView();
}
+bool ScInputBarGroup::HasEditView() const
+{
+ return maTextWnd->HasEditView();
+}
+
bool ScInputBarGroup::IsInputActive()
{
return maTextWnd->IsInputActive();
@@ -1012,6 +1017,11 @@ EditView* ScTextWnd::GetEditView()
return mpEditView.get();
}
+bool ScTextWnd::HasEditView() const
+{
+ return mpEditView.get() != nullptr;
+}
+
long ScTextWnd::GetPixelHeightForLines(long nLines)
{
// add padding ( for the borders of the window )
diff --git a/sc/source/ui/inc/inputwin.hxx b/sc/source/ui/inc/inputwin.hxx
index ba9f0a108b86..4b7ec0c8a0c6 100644
--- a/sc/source/ui/inc/inputwin.hxx
+++ b/sc/source/ui/inc/inputwin.hxx
@@ -53,6 +53,7 @@ public:
virtual void StartEditEngine() = 0;
virtual void StopEditEngine( bool bAll ) = 0;
virtual EditView* GetEditView() = 0;
+ virtual bool HasEditView() const = 0;
virtual void MakeDialogEditView() = 0;
virtual void SetFormulaMode( bool bSet ) = 0;
virtual bool IsInputActive() = 0;
@@ -71,6 +72,7 @@ public:
bool IsInputActive() override;
virtual EditView* GetEditView() override;
+ virtual bool HasEditView() const override;
// for function autopilots
virtual void MakeDialogEditView() override;
@@ -192,7 +194,8 @@ public:
virtual void RemoveAccessibleTextData( ScAccessibleEditLineTextData& rTextData ) override;
void SetTextString( const OUString& rString ) override;
void StartEditEngine() override;
- EditView* GetEditView() override;
+ virtual EditView* GetEditView() override;
+ virtual bool HasEditView() const override;
virtual void Resize() override;
virtual const OUString& GetTextString() const override;
virtual void StopEditEngine( bool bAll ) override;