[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.0' - sw/sdi sw/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Sun Feb 17 10:06:50 UTC 2019
sw/sdi/_textsh.sdi | 6 +++
sw/source/uibase/shells/textsh1.cxx | 59 ++++++++++++++++++++++++++++++++++++
2 files changed, 65 insertions(+)
New commits:
commit 4a4218eeece5a7b9740f8f6660075300e2efff8d
Author: Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Sat Feb 16 20:55:37 2019 +0100
Commit: Andras Timar <andras.timar at collabora.com>
CommitDate: Sun Feb 17 11:06:28 2019 +0100
MSForms: Make Control Properties menu to work with drop-down form field
Always forward the Execute and State method to the form shell,
so if a form control is selected the Control Properites will
work correctly.
Otherwise we check whether there is any field next to the cursor.
Reviewed-on: https://gerrit.libreoffice.org/67911
Tested-by: Jenkins
Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>
(cherry picked from commit 770ef0d216a30efd756b4be26e9fc6e077748fed)
Change-Id: I25055c17d887a2f2a716d8325f46825cc408179e
Reviewed-on: https://gerrit.libreoffice.org/67926
Reviewed-by: Andras Timar <andras.timar at collabora.com>
Tested-by: Andras Timar <andras.timar at collabora.com>
diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi
index e5c260cc5f49..557c036a569d 100644
--- a/sw/sdi/_textsh.sdi
+++ b/sw/sdi/_textsh.sdi
@@ -1694,5 +1694,11 @@ interface BaseText
StateMethod = StateField ;
]
+ SID_FM_CTL_PROPERTIES
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+
} //ende interface text
diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx
index 3769fbcadb51..71c873313452 100644
--- a/sw/source/uibase/shells/textsh1.cxx
+++ b/sw/source/uibase/shells/textsh1.cxx
@@ -118,6 +118,8 @@
#include <svx/drawitem.hxx>
#include <numrule.hxx>
#include <memory>
+#include <xmloff/odffields.hxx>
+#include <swabstdlg.hxx>
using namespace ::com::sun::star;
using namespace com::sun::star::beans;
@@ -1382,6 +1384,32 @@ void SwTextShell::Execute(SfxRequest &rReq)
GetView().UpdateWordCount(this, nSlot);
}
break;
+ case SID_FM_CTL_PROPERTIES:
+ {
+ SwPosition aPos(*GetShell().GetCursor()->GetPoint());
+ sw::mark::IFieldmark* pFieldBM = GetShell().getIDocumentMarkAccess()->getFieldmarkFor(aPos);
+ if ( !pFieldBM )
+ {
+ --aPos.nContent;
+ pFieldBM = GetShell().getIDocumentMarkAccess()->getFieldmarkFor(aPos);
+ }
+
+ if ( pFieldBM && pFieldBM->GetFieldname() == ODF_FORMDROPDOWN )
+ {
+ SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
+ ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateDropDownFormFieldDialog(pFieldBM));
+ pDlg->Execute();
+ pFieldBM->Invalidate();
+ rWrtSh.InvalidateWindows( rWrtSh.GetView().GetVisArea() );
+ }
+ else
+ {
+ SfxRequest aReq( GetView().GetViewFrame(), SID_FM_CTL_PROPERTIES );
+ aReq.AppendItem( SfxBoolItem( SID_FM_CTL_PROPERTIES, true ) );
+ rWrtSh.GetView().GetFormShell()->Execute( aReq );
+ }
+ }
+ break;
default:
OSL_ENSURE(false, "wrong dispatcher");
return;
@@ -1921,6 +1949,37 @@ void SwTextShell::GetState( SfxItemSet &rSet )
rSet.DisableItem(nWhich);
}
break;
+ case SID_FM_CTL_PROPERTIES:
+ {
+ bool bDisable = false;
+
+ // First get the state from the form shell
+ SfxItemSet aSet(GetShell().GetAttrPool(), svl::Items<SID_FM_CTL_PROPERTIES, SID_FM_CTL_PROPERTIES>{});
+ aSet.Put(SfxBoolItem( SID_FM_CTL_PROPERTIES, true ));
+ GetShell().GetView().GetFormShell()->GetState( aSet );
+
+ if(SfxItemState::DISABLED == aSet.GetItemState(SID_FM_CTL_PROPERTIES))
+ {
+ bDisable = true;
+ }
+
+ // Enable it if we have a valid object other than what form shell knows
+ SwPosition aPos(*GetShell().GetCursor()->GetPoint());
+ sw::mark::IFieldmark* pFieldBM = GetShell().getIDocumentMarkAccess()->getFieldmarkFor(aPos);
+ if ( !pFieldBM )
+ {
+ --aPos.nContent;
+ pFieldBM = GetShell().getIDocumentMarkAccess()->getFieldmarkFor(aPos);
+ }
+ if ( pFieldBM && pFieldBM->GetFieldname() == ODF_FORMDROPDOWN )
+ {
+ bDisable = false;
+ }
+
+ if(bDisable)
+ rSet.DisableItem(nWhich);
+ }
+ break;
}
nWhich = aIter.NextWhich();
}
More information about the Libreoffice-commits
mailing list