summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-01-26 09:40:07 +0000
committerEike Rathke <erack@redhat.com>2017-01-27 15:32:42 +0000
commit011bae55cdd24a1d3e42f0aa2fcfd98d3ddc9b14 (patch)
treed4590c36d3d389eaa0282c69476391859c4676a5
parent53eb2fae381f4ed9d73bcc6d8e76a6f09777ba60 (diff)
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 Change-Id: Ie6aa1a311b46e5e9ee96cab05e0705b794b5eb0b 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>
-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 312fdd33dee7..5503c5e1d52d 100644
--- a/sc/source/ui/dbgui/PivotLayoutDialog.cxx
+++ b/sc/source/ui/dbgui/PivotLayoutDialog.cxx
@@ -70,8 +70,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),
@@ -189,8 +187,6 @@ ScPivotLayoutDialog::~ScPivotLayoutDialog()
void ScPivotLayoutDialog::dispose()
{
- mpPreviouslyFocusedListBox.clear();
- mpCurrentlyFocusedListBox.clear();
mpListBoxField.clear();
mpListBoxPage.clear();
mpListBoxColumn.clear();
@@ -736,4 +732,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 7b72f7be72f8..1fd79e954574 100644
--- a/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx
+++ b/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx
@@ -119,27 +119,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 6f2425c926dd..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 && 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 870cc8b04b58..0c0267c05bf0 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 e5d9da1ca64a..43c8cecc2d72 100644
--- a/sc/source/ui/inc/PivotLayoutTreeListBase.hxx
+++ b/sc/source/ui/inc/PivotLayoutTreeListBase.hxx
@@ -53,9 +53,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);