summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-06-06 12:17:59 +0100
committerChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2018-06-19 22:38:35 +0200
commit663a073a3485943058871567d588989536e8ba4e (patch)
tree279d416f17f9aa52a87090d80464f261e6d73a6d
parentc480bac98a6e439bb8a118918ec0df9e1214158e (diff)
tdf#116552 restore copy on focus and jump focus to source
This is surely an utter abuse of focus and an a11y disaster, but it used to work this way. Change-Id: I265a2bafbc2cdd17ff4a5b7c2805def63c510d5c Reviewed-on: https://gerrit.libreoffice.org/55670 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Xisco Faulí <xiscofauli@libreoffice.org> Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
-rw-r--r--sc/source/ui/dbgui/PivotLayoutDialog.cxx2
-rw-r--r--sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx22
-rw-r--r--sc/source/ui/inc/PivotLayoutDialog.hxx2
-rw-r--r--sc/source/ui/inc/PivotLayoutTreeListBase.hxx3
4 files changed, 29 insertions, 0 deletions
diff --git a/sc/source/ui/dbgui/PivotLayoutDialog.cxx b/sc/source/ui/dbgui/PivotLayoutDialog.cxx
index 129969c926f3..70f436c0396e 100644
--- a/sc/source/ui/dbgui/PivotLayoutDialog.cxx
+++ b/sc/source/ui/dbgui/PivotLayoutDialog.cxx
@@ -71,6 +71,7 @@ ScPivotLayoutDialog::ScPivotLayoutDialog(
ScViewData* pViewData, const ScDPObject* pPivotTableObject, bool bNewPivotTable) :
ScAnyRefDlg (pSfxBindings, pChildWindow, pParent, "PivotTableLayout", "modules/scalc/ui/pivottablelayoutdialog.ui"),
maPivotTableObject (*pPivotTableObject),
+ mpPreviouslyFocusedListBox(nullptr),
mpViewData (pViewData),
mpDocument (pViewData->GetDocument()),
mbNewPivotTable (bNewPivotTable),
@@ -188,6 +189,7 @@ ScPivotLayoutDialog::~ScPivotLayoutDialog()
void ScPivotLayoutDialog::dispose()
{
+ mpPreviouslyFocusedListBox.clear();
mpListBoxField.clear();
mpListBoxPage.clear();
mpListBoxColumn.clear();
diff --git a/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx b/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx
index 236a939655ca..d6512365197b 100644
--- a/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx
+++ b/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx
@@ -117,4 +117,26 @@ void ScPivotLayoutTreeListBase::RemoveEntryForItem(const ScItemValue* pItemValue
}
}
+void ScPivotLayoutTreeListBase::GetFocus()
+{
+ SvTreeListBox::GetFocus();
+
+ if (!mpParent || !mpParent->mpPreviouslyFocusedListBox)
+ return;
+
+ if (GetGetFocusFlags() & GetFocusFlags::Mnemonic)
+ {
+ SvTreeListEntry* pEntry = mpParent->mpPreviouslyFocusedListBox->GetCurEntry();
+ if (pEntry)
+ InsertEntryForSourceTarget(pEntry, nullptr);
+ mpParent->mpPreviouslyFocusedListBox->GrabFocus();
+ }
+}
+
+void ScPivotLayoutTreeListBase::LoseFocus()
+{
+ SvTreeListBox::LoseFocus();
+ if (mpParent)
+ mpParent->mpPreviouslyFocusedListBox = this;
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/PivotLayoutDialog.hxx b/sc/source/ui/inc/PivotLayoutDialog.hxx
index 25f12db90e5d..96d6218adb3d 100644
--- a/sc/source/ui/inc/PivotLayoutDialog.hxx
+++ b/sc/source/ui/inc/PivotLayoutDialog.hxx
@@ -42,6 +42,8 @@ class ScPivotLayoutDialog : public ScAnyRefDlg
public:
ScDPObject maPivotTableObject;
+ VclPtr<ScPivotLayoutTreeListBase> mpPreviouslyFocusedListBox;
+
private:
ScViewData* mpViewData;
ScDocument* mpDocument;
diff --git a/sc/source/ui/inc/PivotLayoutTreeListBase.hxx b/sc/source/ui/inc/PivotLayoutTreeListBase.hxx
index 41ff3a344909..b651f7e132af 100644
--- a/sc/source/ui/inc/PivotLayoutTreeListBase.hxx
+++ b/sc/source/ui/inc/PivotLayoutTreeListBase.hxx
@@ -53,6 +53,9 @@ 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(const ScItemValue* pItemValue);