Resolves: tdf#133183 select style under mouse on right click context menu
Change-Id: I4317f6702b7a0e172d059fe83614aab94845b201
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94690
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx
index cd54f92..18be2cd 100644
--- a/sfx2/source/dialog/templdlg.cxx
+++ b/sfx2/source/dialog/templdlg.cxx
@@ -319,13 +319,38 @@ IMPL_LINK(SfxCommonTemplateDialog_Impl, PopupFlatMenuHdl, const CommandEvent&, r
if (rCEvt.GetCommand() != CommandEventId::ContextMenu)
return false;
PrepareMenu(rCEvt.GetMousePosPixel());
if (mxFmtLb->count_selected_rows() <= 0)
{
EnableEdit(false);
EnableDel(false);
}
return PopupTreeMenuHdl(rCEvt);
ShowMenu(rCEvt);
return true;
}
void SfxCommonTemplateDialog_Impl::PrepareMenu(const Point& rPos)
{
weld::TreeView* pTreeView = mxTreeBox->get_visible() ? mxTreeBox.get() : mxFmtLb.get();
std::unique_ptr<weld::TreeIter> xIter(pTreeView->make_iterator());
if (pTreeView->get_dest_row_at_pos(rPos, xIter.get()) && !pTreeView->is_selected(*xIter))
{
pTreeView->unselect_all();
pTreeView->select(*xIter);
FmtSelectHdl(*pTreeView);
}
}
void SfxCommonTemplateDialog_Impl::ShowMenu(const CommandEvent& rCEvt)
{
CreateContextMenu();
weld::TreeView* pTreeView = mxTreeBox->get_visible() ? mxTreeBox.get() : mxFmtLb.get();
OString sCommand(mxMenu->popup_at_rect(pTreeView, tools::Rectangle(rCEvt.GetMousePosPixel(), Size(1,1))));
MenuSelect(sCommand);
}
IMPL_LINK(SfxCommonTemplateDialog_Impl, PopupTreeMenuHdl, const CommandEvent&, rCEvt, bool)
@@ -333,11 +358,9 @@ IMPL_LINK(SfxCommonTemplateDialog_Impl, PopupTreeMenuHdl, const CommandEvent&, r
if (rCEvt.GetCommand() != CommandEventId::ContextMenu)
return false;
CreateContextMenu();
PrepareMenu(rCEvt.GetMousePosPixel());
weld::TreeView* pTreeView = mxTreeBox->get_visible() ? mxTreeBox.get() : mxFmtLb.get();
OString sCommand(mxMenu->popup_at_rect(pTreeView, tools::Rectangle(rCEvt.GetMousePosPixel(), Size(1,1))));
MenuSelect(sCommand);
ShowMenu(rCEvt);
return true;
}
diff --git a/sfx2/source/inc/templdgi.hxx b/sfx2/source/inc/templdgi.hxx
index 05746df..57b95ed 100644
--- a/sfx2/source/inc/templdgi.hxx
+++ b/sfx2/source/inc/templdgi.hxx
@@ -207,6 +207,9 @@ protected:
void SaveFactoryStyleFilter( SfxObjectShell const * i_pObjSh, sal_Int32 i_nFilter );
SfxObjectShell* SaveSelection();
void PrepareMenu(const Point& rPos);
void ShowMenu(const CommandEvent& rCEvt);
public:
SfxCommonTemplateDialog_Impl(SfxBindings* pB, vcl::Window*, weld::Builder* pBuilder);