summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-01-26 09:12:24 +0000
committerAndras Timar <andras.timar@collabora.com>2017-02-08 11:56:05 +0100
commiteb77405bb081fb2c48a444e118c6b9dc9f81185a (patch)
treed6464638875682cced0454be2df584295d6384b8 /sc
parent65fbeda7e78f8c0ccb832cc2307c8b23fcd60fa0 (diff)
Resolves: tdf#104153 crash on drag and drop pivot table field
This is a combination of 2 commits. Resolves: tdf#104153 crash on drag and drop pivot table field now though sometimes it doesn't get removed at all, so a band aid for the moment (cherry picked from commit 068edb65b1dce375223d8642a01b07db3948ac03) Resolves: tdf#104153 lookup what listbox an entry is dragged from so we can find where its been dragged from in order to remove it from that source, rather than relying that it comes from the previously focused listbox Reviewed-on: https://gerrit.libreoffice.org/33575 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com> (cherry picked from commit 011bae55cdd24a1d3e42f0aa2fcfd98d3ddc9b14) e6aa1a311b46e5e9ee96cab05e0705b794b5eb0b Change-Id: I6ccbbe51fe9250af0f85c30a9d253269a18df457 Reviewed-on: https://gerrit.libreoffice.org/33633 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins <ci@libreoffice.org> (cherry picked from commit a9b7c569652ba27ecda572a0cc8ad7a12143e903)
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/dbgui/PivotLayoutDialog.cxx17
-rw-r--r--sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx23
-rw-r--r--sc/source/ui/dbgui/PivotLayoutTreeListLabel.cxx7
-rw-r--r--sc/source/ui/inc/PivotLayoutDialog.hxx5
-rw-r--r--sc/source/ui/inc/PivotLayoutTreeListBase.hxx3
5 files changed, 19 insertions, 36 deletions
diff --git a/sc/source/ui/dbgui/PivotLayoutDialog.cxx b/sc/source/ui/dbgui/PivotLayoutDialog.cxx
index c40faaeb867f..91fdc4205022 100644
--- a/sc/source/ui/dbgui/PivotLayoutDialog.cxx
+++ b/sc/source/ui/dbgui/PivotLayoutDialog.cxx
@@ -69,8 +69,6 @@ ScPivotLayoutDialog::ScPivotLayoutDialog(
ScViewData* pViewData, const ScDPObject* pPivotTableObject, bool bNewPivotTable) :
ScAnyRefDlg (pSfxBindings, pChildWindow, pParent, "PivotTableLayout", "modules/scalc/ui/pivottablelayoutdialog.ui"),
maPivotTableObject (*pPivotTableObject),
- mpPreviouslyFocusedListBox(nullptr),
- mpCurrentlyFocusedListBox(nullptr),
mpViewData (pViewData),
mpDocument (pViewData->GetDocument()),
mbNewPivotTable (bNewPivotTable),
@@ -188,8 +186,6 @@ ScPivotLayoutDialog::~ScPivotLayoutDialog()
void ScPivotLayoutDialog::dispose()
{
- mpPreviouslyFocusedListBox.clear();
- mpCurrentlyFocusedListBox.clear();
mpListBoxField.clear();
mpListBoxPage.clear();
mpListBoxColumn.clear();
@@ -717,4 +713,17 @@ void ScPivotLayoutDialog::ToggleDestination()
mpDestinationEdit->Enable(bSelection);
}
+ScPivotLayoutTreeListBase* ScPivotLayoutDialog::FindListBoxFor(SvTreeListEntry *pEntry)
+{
+ if (mpListBoxPage->HasEntry(pEntry))
+ return mpListBoxPage.get();
+ if (mpListBoxColumn->HasEntry(pEntry))
+ return mpListBoxColumn.get();
+ if (mpListBoxRow->HasEntry(pEntry))
+ return mpListBoxRow.get();
+ if (mpListBoxData->HasEntry(pEntry))
+ return mpListBoxData.get();
+ return nullptr;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx b/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx
index 407a3b4a8557..0061305a93f5 100644
--- a/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx
+++ b/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx
@@ -124,27 +124,4 @@ void ScPivotLayoutTreeListBase::RemoveEntryForItem(ScItemValue* pItemValue)
}
}
-void ScPivotLayoutTreeListBase::GetFocus()
-{
- SvTreeListBox::GetFocus();
-
- if( GetGetFocusFlags() & GetFocusFlags::Mnemonic )
- {
- SvTreeListEntry* pEntry = mpParent->mpPreviouslyFocusedListBox->GetCurEntry();
- if (pEntry)
- InsertEntryForSourceTarget(pEntry, nullptr);
-
- if (mpParent->mpPreviouslyFocusedListBox != nullptr)
- mpParent->mpPreviouslyFocusedListBox->GrabFocus();
- }
-
- mpParent->mpCurrentlyFocusedListBox = this;
-}
-
-void ScPivotLayoutTreeListBase::LoseFocus()
-{
- SvTreeListBox::LoseFocus();
- if (mpParent)
- mpParent->mpPreviouslyFocusedListBox = this;
-}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/dbgui/PivotLayoutTreeListLabel.cxx b/sc/source/ui/dbgui/PivotLayoutTreeListLabel.cxx
index 3795601cde5a..9073faa7f57c 100644
--- a/sc/source/ui/dbgui/PivotLayoutTreeListLabel.cxx
+++ b/sc/source/ui/dbgui/PivotLayoutTreeListLabel.cxx
@@ -57,10 +57,11 @@ void ScPivotLayoutTreeListLabel::FillLabelFields(ScDPLabelDataVector& rLabelVect
}
}
-void ScPivotLayoutTreeListLabel::InsertEntryForSourceTarget(SvTreeListEntry* /*pSource*/, SvTreeListEntry* /*pTarget*/)
+void ScPivotLayoutTreeListLabel::InsertEntryForSourceTarget(SvTreeListEntry* pSource, SvTreeListEntry* /*pTarget*/)
{
- if(mpParent->mpPreviouslyFocusedListBox.get() != this)
- mpParent->mpPreviouslyFocusedListBox->RemoveSelection();
+ ScPivotLayoutTreeListBase *pSourceTree = mpParent->FindListBoxFor(pSource);
+ if (pSourceTree)
+ pSourceTree->RemoveSelection();
}
bool ScPivotLayoutTreeListLabel::IsDataElement(SCCOL nColumn)
diff --git a/sc/source/ui/inc/PivotLayoutDialog.hxx b/sc/source/ui/inc/PivotLayoutDialog.hxx
index df4e901afee6..1cb116250046 100644
--- a/sc/source/ui/inc/PivotLayoutDialog.hxx
+++ b/sc/source/ui/inc/PivotLayoutDialog.hxx
@@ -42,9 +42,6 @@ class ScPivotLayoutDialog : public ScAnyRefDlg
public:
ScDPObject maPivotTableObject;
- VclPtr<ScPivotLayoutTreeListBase> mpPreviouslyFocusedListBox;
- VclPtr<ScPivotLayoutTreeListBase> mpCurrentlyFocusedListBox;
-
private:
ScViewData* mpViewData;
ScDocument* mpDocument;
@@ -132,6 +129,8 @@ public:
ScDPLabelData& GetLabelData(SCCOL nColumn);
ScDPLabelDataVector& GetLabelDataVector() { return maPivotParameters.maLabelArray;}
void PushDataFieldNames(std::vector<ScDPName>& rDataFieldNames);
+
+ ScPivotLayoutTreeListBase* FindListBoxFor(SvTreeListEntry *pEntry);
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/PivotLayoutTreeListBase.hxx b/sc/source/ui/inc/PivotLayoutTreeListBase.hxx
index 7505a4a06272..81521f8852d5 100644
--- a/sc/source/ui/inc/PivotLayoutTreeListBase.hxx
+++ b/sc/source/ui/inc/PivotLayoutTreeListBase.hxx
@@ -54,9 +54,6 @@ public:
SvTreeListEntry* pEntry) override;
virtual void DragFinished(sal_Int8 nDropAction) override;
- virtual void GetFocus() override;
- virtual void LoseFocus() override;
-
void PushEntriesToPivotFieldVector(ScPivotFieldVector& rVector);
void RemoveEntryForItem(ScItemValue* pItemValue);