Resolves: tdf#122695 Content Type selector tooltip missing
Change-Id: I0ffe6448d865f569fb59d9facbb1582d2152a9ba
Reviewed-on: https://gerrit.libreoffice.org/66291
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 423d70f7e45749fad680b3dfe0ccdaed1c1afb19)
Reviewed-on: https://gerrit.libreoffice.org/66384
Tested-by: Xisco Faulí <xiscofauli@libreoffice.org>
diff --git a/include/svx/svdhdl.hxx b/include/svx/svdhdl.hxx
index 5760d64..fa7ce34 100644
--- a/include/svx/svdhdl.hxx
+++ b/include/svx/svdhdl.hxx
@@ -226,6 +226,9 @@ public:
visualisation during mouse over it must override this method and call Touch(). */
virtual void onMouseEnter(const MouseEvent& rMEvt);
/** is called when help is requested for the area of this handle */
virtual void onHelpRequest(const HelpEvent& rHEvt);
/** is called when the mouse leaves the area of this handle. If the handle changes his
visualisation during mouse over it must override this method and call Touch(). */
virtual void onMouseLeave();
diff --git a/include/svx/svdmrkv.hxx b/include/svx/svdmrkv.hxx
index abffdba..9460862 100644
--- a/include/svx/svdmrkv.hxx
+++ b/include/svx/svdmrkv.hxx
@@ -143,6 +143,7 @@ protected:
void CheckMarked(); // Scan MarkList after Del and Lock Layer ...
void AddDragModeHdl(SdrDragMode eMode);
virtual bool MouseMove(const MouseEvent& rMEvt, vcl::Window* pWin) override;
virtual bool RequestHelp(const HelpEvent& rHEvt) override;
// add custom handles (used by other apps, e.g. AnchorPos)
virtual void AddCustomHdl();
diff --git a/include/svx/svdpntv.hxx b/include/svx/svdpntv.hxx
index 8af3d77..f288248 100644
--- a/include/svx/svdpntv.hxx
+++ b/include/svx/svdpntv.hxx
@@ -466,6 +466,7 @@ public:
virtual bool MouseButtonDown(const MouseEvent& /*rMEvt*/, vcl::Window* /*pWin*/) { return false; }
virtual bool MouseButtonUp(const MouseEvent& /*rMEvt*/, vcl::Window* /*pWin*/) { return false; }
virtual bool MouseMove(const MouseEvent& /*rMEvt*/, vcl::Window* /*pWin*/) { return false; }
virtual bool RequestHelp(const HelpEvent& /*rHEvt*/) { return false; }
virtual bool Command(const CommandEvent& /*rCEvt*/, vcl::Window* /*pWin*/) { return false; }
void GetAttributes(SfxItemSet& rTargetSet, bool bOnlyHardAttr) const;
diff --git a/include/svx/svdview.hxx b/include/svx/svdview.hxx
index a470891..da58f13 100644
--- a/include/svx/svdview.hxx
+++ b/include/svx/svdview.hxx
@@ -185,6 +185,7 @@ public:
virtual bool MouseButtonDown(const MouseEvent& rMEvt, vcl::Window* pWin) override;
virtual bool MouseButtonUp(const MouseEvent& rMEvt, vcl::Window* pWin) override;
virtual bool MouseMove(const MouseEvent& rMEvt, vcl::Window* pWin) override;
using SdrCreateView::RequestHelp;
virtual bool Command(const CommandEvent& rCEvt, vcl::Window* pWin) override;
virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, ConfigurationHints ) override;
diff --git a/sd/source/ui/func/fudraw.cxx b/sd/source/ui/func/fudraw.cxx
index 6b3872f..2ecc44f 100644
--- a/sd/source/ui/func/fudraw.cxx
+++ b/sd/source/ui/func/fudraw.cxx
@@ -765,6 +765,9 @@ bool FuDraw::RequestHelp(const HelpEvent& rHEvt)
bReturn = FuPoor::RequestHelp(rHEvt);
}
if (!bReturn)
bReturn = mpView->RequestHelp(rHEvt);
return bReturn;
}
diff --git a/sd/source/ui/view/viewoverlaymanager.cxx b/sd/source/ui/view/viewoverlaymanager.cxx
index 0174c2b..4ce2424 100644
--- a/sd/source/ui/view/viewoverlaymanager.cxx
+++ b/sd/source/ui/view/viewoverlaymanager.cxx
@@ -145,10 +145,12 @@ public:
virtual bool isMarkable() const override;
virtual void onMouseEnter(const MouseEvent& rMEvt) override;
virtual void onHelpRequest(const HelpEvent& rHEvt) override;
virtual void onMouseLeave() override;
int getHighlightId() const { return mnHighlightId; }
void ShowTip();
static void HideTip();
private:
@@ -176,6 +178,35 @@ void ImageButtonHdl::HideTip()
Help::HideBalloonAndQuickHelp();
}
void ImageButtonHdl::ShowTip()
{
if (!pHdlList || !pHdlList->GetView() || mnHighlightId == -1)
return;
OutputDevice* pDev = pHdlList->GetView()->GetFirstOutputDevice();
if( pDev == nullptr )
pDev = Application::GetDefaultDevice();
OUString aHelpText(SdResId(gButtonToolTips[mnHighlightId]));
Point aHelpPos(pDev->LogicToPixel(GetPos()));
if (mnHighlightId == 1)
aHelpPos.Move(maImageSize.Width(), 0);
else if (mnHighlightId == 2)
aHelpPos.Move(0, maImageSize.Height());
else if (mnHighlightId == 3)
aHelpPos.Move(maImageSize.Width(), maImageSize.Height());
::tools::Rectangle aLogicPix(aHelpPos, maImageSize);
vcl::Window* pWindow = static_cast<vcl::Window*>(pHdlList->GetView()->GetFirstOutputDevice());
::tools::Rectangle aScreenRect(pWindow->OutputToScreenPixel(aLogicPix.TopLeft()),
pWindow->OutputToScreenPixel(aLogicPix.BottomRight()));
Help::ShowQuickHelp(pWindow, aScreenRect, aHelpText);
}
void ImageButtonHdl::onHelpRequest(const HelpEvent& /*rHEvt*/)
{
ShowTip();
}
void ImageButtonHdl::onMouseEnter(const MouseEvent& rMEvt)
{
if( pHdlList && pHdlList->GetView())
@@ -197,12 +228,8 @@ void ImageButtonHdl::onMouseEnter(const MouseEvent& rMEvt)
mnHighlightId = nHighlightId;
if( pHdlList )
{
OUString aHelpText(SdResId(gButtonToolTips[mnHighlightId]));
::tools::Rectangle aScreenRect( pDev->LogicToPixel( GetPos() ), maImageSize );
Help::ShowQuickHelp(static_cast< vcl::Window* >( pHdlList->GetView()->GetFirstOutputDevice() ), aScreenRect, aHelpText);
}
ShowTip();
Touch();
}
}
diff --git a/svx/source/svdraw/svdhdl.cxx b/svx/source/svdraw/svdhdl.cxx
index a53725c..a15808a 100644
--- a/svx/source/svdraw/svdhdl.cxx
+++ b/svx/source/svdraw/svdhdl.cxx
@@ -1061,6 +1061,10 @@ void SdrHdl::onMouseEnter(const MouseEvent& /*rMEvt*/)
{
}
void SdrHdl::onHelpRequest(const HelpEvent& /*rHEvt*/)
{
}
void SdrHdl::onMouseLeave()
{
}
diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx
index 6123ce0..4126d96 100644
--- a/svx/source/svdraw/svdmrkv.cxx
+++ b/svx/source/svdraw/svdmrkv.cxx
@@ -1197,6 +1197,25 @@ bool SdrMarkView::MouseMove(const MouseEvent& rMEvt, vcl::Window* pWin)
return SdrSnapView::MouseMove(rMEvt, pWin);
}
bool SdrMarkView::RequestHelp(const HelpEvent& rHEvt)
{
if (maHdlList.GetHdlCount())
{
const size_t nHdlCount = maHdlList.GetHdlCount();
for (size_t nHdl = 0; nHdl < nHdlCount; ++nHdl)
{
SdrHdl* pCurrentHdl = GetHdl(nHdl);
if (pCurrentHdl->mbMouseOver)
{
pCurrentHdl->onHelpRequest(rHEvt);
return true;
}
}
}
return SdrSnapView::RequestHelp(rHEvt);
}
void SdrMarkView::ForceRefToMarked()
{
switch(meDragMode)